绘制刚体
这个例子是展示在运行时绘制刚体,请点击鼠标并拖动绘制一个矩形,释放鼠标时将会产生一个刚体。思路如下:
这里有基本的鼠标点击利用drawingAPI绘制图形的函数,如:drawRect,beginFill等。
1.监听舞台的MouseDown事件,在鼠标点击时记录鼠标点击位置,并增加监听舞台的MouseUp,MouseMove事件。
2.在MouseMove事件处理函数中,绘制矩形,矩形位置为点击位置,大小根据释放鼠标位置而定。
3.在MouseUp事件处理函数中,取消舞台的MouseUp,MouseMove事件监听,同时记录释放鼠标时的位置。判断释放鼠标时的x,y坐标与点击出的x,y坐标,如果前者小于后者,则说明是向左移动了鼠标,此时要交换两个位置的坐标。再根据两个位置的差值,计算出矩形的宽度,高度,创建刚体并清除舞台上绘制的矩形。
下面贴是MouseUp事件处理函数的代码:
private function onUp(e:MouseEvent):void { _isDown = false; graphics.clear(); stage.removeEventListener(MouseEvent.MOUSE_UP, onUp); var finalX:int = stage.mouseX; var finalY:int = stage.mouseY; if (finalX<_initx) { var tempx:int = _initx; _initx = finalX; finalX = tempx; } if (finalY<_inity) { var tempy:int = _inity; _inity = finalY; finalY = tempy; } var width:int = Math.abs(finalX - _initx); var height:int = Math.abs(finalY - _inity); var box:Rect = new Rect(width, height, new Point(_initx+width/2, _inity+height/2), new Point(), new MyBox(), this); MovieClip(box.displayObject).gotoAndStop(1 + Math.floor(Math.random() * 5)); _actors.push(box); }
关键是在7-25行,25行是创建刚体。width,height分别为刚体的宽,高;new Point(_initx+width/2, _inity+height/2),是刚体的位置;new Point(),是刚体的初始速度;new MyBox(),是对应于刚体的一个显示对象,可以是库中一个MovieClip;this,是主类实例,用于添加显示对象的。
作者:ywxgod
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
E-mail:给我发邮件
出处:http://ywxgod.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。