zoukankan      html  css  js  c++  java
  • 绘制刚体

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

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

  • 相关阅读:
    [Linux]调整swap
    [Linux]mysql错误总结-ERROR 1067 (42000): Invalid default value for TIMESTAMP
    Canvas动画:地球绕着太阳转
    50个好用的前端框架,建议收藏!
    flex布局属性说明
    纯CSS绘制的图形一览
    深入理解CSS盒模型(转)
    JS的防抖与节流学习笔记
    应用八:Vue之在nginx下的部署实践
    css元素居中的几种方式
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1713056.html
Copyright © 2011-2022 走看看