就是用描绘闭行图,定义里面的事件的方法。可以通过把坐标绘出的方法找到其特征。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.binding.utils.BindingUtils;
import mx.managers.CursorManager;
private var mX:Number;
private var mY:Number;
private var IsDown:Boolean=false;
[Bindable] public var _lineSize:int=3;
[Bindable] public var _lineColor:uint=0xff0000;
private function init():void{
myPanel.addEventListener(MouseEvent.MOUSE_DOWN,downHandler);
myPanel.addEventListener(MouseEvent.MOUSE_MOVE,moveHandler);
myPanel.addEventListener(MouseEvent.MOUSE_UP,upHandler);
BindingUtils.bindProperty(this,"_lineSize",hs,"value");
BindingUtils.bindProperty(this,"_lineColor",cp,"selectedColor");
redraw();
}
private function downHandler(e:MouseEvent):void{
IsDown=true;
mX=myPanel.mouseX;
mY=myPanel.mouseY;
}
private function upHandler(e:MouseEvent):void{
IsDown=false;
}
private function moveHandler(e:MouseEvent):void{
if(IsDown){
var x:Number = myPanel.mouseX;
var y:Number = myPanel.mouseY;
myPanel.graphics.lineStyle(_lineSize,_lineColor,1);
myPanel.graphics.moveTo(mX,mY);
myPanel.graphics.lineTo(x,y);
mX=x;
mY=y;
}
}
var str:String = "85,11,133,11,134,42,114,42,100,47,96,45,91,48,83,40,76,40,75,29,70,23,71,18,82,20,87,18" ;
public function redraw():void
{
myPanel.graphics.clear();
var arr:Array = str.split(",");
myPanel.graphics.moveTo(arr[0],arr[1]);
for(var i=0;i<arr.length;i++)
{
myPanel.graphics.lineStyle(_lineSize,_lineColor,1);
myPanel.graphics.lineTo(Number(arr[i]),Number(arr[i+1]));
myPanel.graphics.moveTo(Number(arr[i]),Number(arr[i+1]));
i++;
}
myPanel.graphics.lineTo(arr[0],arr[1]);
}
]]>
</mx:Script>
<mx:Panel width="100%" height="100%">
<mx:Canvas id="myPanel" x="113.5" y="83" width="100%" height="90%" buttonMode="true" borderStyle="outset">
</mx:Canvas>
<mx:Button label="重绘" click="redraw();"/>
<mx:HSlider id="hs" value="{_lineSize}"/>
<mx:ColorPicker id="cp" selectedColor="{_lineColor}"/>
</mx:Panel>
</mx:Application>