FLEX画线+预览+撤销重做

代码:
<?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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值