前不久想要利用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>