利用Bitmap让TextField对象旋转,利用Sprite容器让Bitmap对象可以被鼠标拖拽
2010-03-28 12:48
357 查看
由于不能直接通过改变TextField对像的rotation属性来让其旋转(貌似没有这个属性),可以使用BitmapData和Bitmap类来做到。
看一下Bitmap所继承的类就可以知道其不是继承自InteractiveObject,所以不支持使用鼠标和键盘与之交互,可以利用最轻量级的Sprite容器做到
代码里有个单独的sprite对象circle进行比较。
看一下Bitmap所继承的类就可以知道其不是继承自InteractiveObject,所以不支持使用鼠标和键盘与之交互,可以利用最轻量级的Sprite容器做到
代码里有个单独的sprite对象circle进行比较。
package { import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFormatAlign; import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.MovieClip; import flash.display.Graphics; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Point; public class test extends Sprite { public var singleWordText:TextField; private var bitmap:BitmapData; private var map:Bitmap; private var circle:Sprite; private var container:Sprite; private var clickOffset:Point=null; private var clickOffsetcircle:Point=null; public function test() { container=new Sprite(); addChild(container); var format:TextFormat=new TextFormat(); format.font="Verdana"; format.color=0xFFFFFF; format.size=20; format.align=TextFormatAlign.LEFT; //TextField要先申明样式后再输入字符 singleWordText=new TextField; singleWordText.defaultTextFormat=format; singleWordText.text="A"; bitmap=new BitmapData(20,25,true,0xcccccccc); bitmap.draw(singleWordText,null,null,null,null,true); map=new Bitmap(bitmap,"auto",true); map.rotation=30; //container.rotation=30; container.addChild(map); container.x=200; container.y=200; container.addEventListener(MouseEvent.MOUSE_DOWN, startTextDrag); stage.addEventListener(MouseEvent.MOUSE_UP, stopTextDrag); container.addEventListener(Event.ENTER_FRAME, dragText); circle=new Sprite(); circle.graphics.beginFill(0xFF0000); circle.graphics.lineStyle(2, 0xFF0000); circle.graphics.drawCircle(400,200,30); circle.graphics.endFill(); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, startcircleDrag); stage.addEventListener(MouseEvent.MOUSE_UP, stopcircleDrag); circle.addEventListener(Event.ENTER_FRAME, dragcircle); } //------------------\text drag/-------------------------------- //drag map------------- private function startTextDrag(event:MouseEvent) { clickOffset = new Point(event.localX, event.localY); } // user released private function stopTextDrag(event:MouseEvent) { clickOffset = null; } // run every frame private function dragText(event:Event) { if (clickOffset != null) {// must be dragging container.x = mouseX - clickOffset.x; container.y = mouseY - clickOffset.y; } } //drag circle----------------- private function startcircleDrag(event:MouseEvent) { clickOffsetcircle = new Point(event.localX, event.localY); } // user released private function stopcircleDrag(event:MouseEvent) { clickOffsetcircle = null; } // run every frame private function dragcircle(event:Event) { if (clickOffsetcircle != null) {// must be dragging circle.x = mouseX - clickOffsetcircle.x; circle.y = mouseY - clickOffsetcircle.y; } } } }
相关文章推荐
- 【计算机图形】制作能够利用鼠标拖拽实现360度旋转的3D人体模型flash文件
- 如何利用c++编写不能被继承、但可以在类外定义对象的类
- 一个java3d程序,作为熟悉3d技术的基础(可以使用鼠标对场景内的3d对象进行操作)
- 利用KVC机制,为textField设置字体属性
- 利用这个几何绘图软件可以制作旋转的五角星
- sprite是可以在在上级容器之间中移动--来自make thing move 一书
- android 利用canvas 获取裁切或者合并后的bitmap对象
- ExtJS -- QuickTip TextField鼠标移过提示内容
- json的作用:按规定格式保存js语言中的一组数据并转换为字符串(json是种特殊的容器,一般保存对象和数组数据(可以嵌套),并把它们装换为字符串在网络中传输?))
- 在Sprite 基础之上创建一个既可以控制移动,也可以动画的对象定义。
- textField可以添加点击事件监听器
- 设定schedule 每隔1秒向鼠标拖拽的当前位置发射一个Sprite
- Unity鼠标拖拽旋转拉远拉近场景
- 缩放系列(三):一个可以手势缩放、拖拽、旋转的layout
- C++制作一个泛型容器(可以盛放各种类型的对象)
- 完成 Ext 树拖拽节点到 Textfield 控件中
- TextField的对象,属性,事件
- sprite是可以在在上级容器之间中移动--来自make thing move 一书
- 类里边的构造函数可以被private修饰,在类的内部创建对象。利用这种特性创建单类模式
- 重写ext的TextField控件,增加鼠标悬浮提示和控件后加说明文字