绘制刚体

这个例子是展示在运行时绘制刚体,请点击鼠标并拖动绘制一个矩形,释放鼠标时将会产生一个刚体。思路如下:

这里有基本的鼠标点击利用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,是主类实例,用于添加显示对象的。

posted @ 2010-04-15 22:44  ywxgod  阅读(424)  评论(0编辑  收藏  举报