• 绘制刚体


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

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

  • 相关阅读:
    SqlServer Alwayson 搭建排错记录(一)
    SqlServer图形数据库初体验
    SqlServer报错:主体“dbo”不存在
    IIS重叠回收
    No module named 'revoscalepy'问题解决
    SqlServer查询文件组被占用情况
    SqlServer作业指定目标服务器
    [持续更新]UnsatisfiedLinkError常见问题及解决方案
    Android加载SO库UnsatisfiedLinkError错误的原因及解决方案
    _set_invalid_parameter_handler异常处理函数
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1713056.html
Copyright © 2020-2023  润新知