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,是主类实例,用于添加显示对象的。

  • 相关阅读:
    417 Pacific Atlantic Water Flow 太平洋大西洋水流
    416 Partition Equal Subset Sum 分割相同子集和
    415 Add Strings 字符串相加
    414 Third Maximum Number 第三大的数
    413 Arithmetic Slices 等差数列划分
    412 Fizz Buzz
    410 Split Array Largest Sum 分割数组的最大值
    409 Longest Palindrome 最长回文串
    day22 collection 模块 (顺便对比queue也学习了一下队列)
    day21 计算器作业
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1713056.html
Copyright © 2011-2022 走看看