Flex示例:实现画线
http://blog.csdn.net/hnuyangyi/article/details/5929116 <?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; import mx.controls.Alert; 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)); //添加元素到最后 ,unshift添加元素到最前 myCanvas.removeChildAt(i); } /** * 重做 * */ private function redo():void { if (arr.length <= 0) { return; } //从撤销集合取出 myCanvas.addChildAt(UIComponent(arr.pop()),i++); //arr.pop()表示删除最后一个,并返回 ,shift表示删除第一个元素,并返回 } ]]--> </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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 源码安装postgresql
- XML解析技术研究(一)
- 用ruby删除前两行文件
- 为什么std :: allocator在C 17中丢失成员类型/函数?
- oracle undo segments, do blocks
- FluorineFX初学者之最初配置 Flex4与.NET结合
- 如何使用XmlDocument在c#.net CF 3.5中添加属性到xml
- For oracle databases, if the top showing the oracle dat
- 惯用Ruby – 执行一个函数,直到它返回一个零,收集它的值到列
- ruby-on-rails – 使用rails paperclip插件将图像存储在数据