根據鼠標移動畫線無法畫出(學習筆記)

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

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