根据鼠标移动画线无法画出(学习笔记)

前不久想要利用flex画线,首先我在CreationComplete中定义了线的样式,在MouseMove中将Graphics用clear()清除,再moveto,lineto画线,却始终看不到线,找了半

天,不知道哪儿出了错。

后来发现clear()方法中对填充和线条样式都进行了重置,才明白原来是因为所画的线没有样式。

于是将线的样式定义放在了clear()方法之后,成功解决问题。虽然问题很小,但让我清楚的理解了clear()方法。


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  creationComplete="application1_creationCompleteHandler(event)"
  xmlns:s="library://ns.adobe.com/flex/spark" 
  xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
private var draw:Boolean=false;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
box.addEventListener(MouseEvent.MOUSE_MOVE,box_mouseMove);
box.addEventListener(MouseEvent.MOUSE_DOWN,mousedown);
}
private function mousedown(e:MouseEvent):void
{
draw=true;
Mouse.cursor=MouseCursor.HAND;
}
private function box_mouseMove(event:MouseEvent):void
{

//清除时样式同样会被清除
box.graphics.clear();
box.graphics.lineStyle(1, 0xff0000, 1, false, LineScaleMode.VERTICAL,
CapsStyle.NONE, JointStyle.MITER, 1);

if(draw)
{
box.graphics.moveTo(100,100);
box.graphics.lineTo(this.mouseX,this.mouseY);
}
}


]]>
</fx:Script>
<mx:Box id="box" width="100%" height="100%" />
</s:Application>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章