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