代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="drawInit()" layout="vertical">
<mx:Style>
Application {
fontSize: 12pt;
}
</mx:Style>
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
private var shape : String;
private var flag : Boolean;
private var sx : Number;
private var sy : Number;
private var ex : Number;
private var ey : Number;
private var sprite : Sprite;
private var uic : UIComponent;
private var i : int;
private var arr : Array = new Array();
private function drawInit() : void {
myCanvas.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
myCanvas.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
myCanvas.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
private function onMouseDown(e : MouseEvent) : void {
flag = true;
sx = myCanvas.mouseX;
sy = myCanvas.mouseY;
sprite = new Sprite();
uic = new UIComponent();
myCanvas.addChildAt(uic, i++);
uic.addChild(sprite);
}
private function onMouseMove(e : MouseEvent) : void {
if (flag) {
draw(shape);
}
}
private function onMouseUp(e : MouseEvent) : void {
flag = false;
}
private function setShape(str : String) : void {
shape = str;
}
private function draw(s : String) : void {
ex = myCanvas.mouseX;
ey = myCanvas.mouseY;
if (s == "line") {
sprite.graphics.clear();
sprite.graphics.lineStyle(hs.value, cp.selectedColor);
sprite.graphics.moveTo(sx, sy);
sprite.graphics.lineTo(ex, ey);
}
}
private function undo() : void {
if (i <= 0) {
return;
}
arr.push(myCanvas.getChildAt(--i));
myCanvas.removeChildAt(i);
}
private function redo() : void {
if (arr.length <= 0) {
return;
}
myCanvas.addChildAt(UIComponent(arr.pop()), i++);
}
]]>
</mx:Script>
<mx:TabNavigator width="768" height="401">
<mx:VBox label="FLEX画图" width="100%" height="100%">
<mx:Canvas width="100%" height="315" id="myCanvas" backgroundColor="#006699">
</mx:Canvas>
<mx:HBox width="100%" height="44" verticalAlign="middle">
<mx:Button label="画直线" click="setShape('line')"/>
<mx:Button label="撤销" click="undo()"/>
<mx:Button label="重做" click="redo()"/>
<mx:HSlider id="hs" value="3"/>
<mx:ColorPicker id="cp" selectedColor="red"/>
<mx:Button label="清屏" click="myCanvas.removeAllChildren();i=0"/>
</mx:HBox>
</mx:VBox>
</mx:TabNavigator>
</mx:Application>
FLEX画线+预览+撤销重做
最新推荐文章于 2022-11-21 13:56:14 发布