zoukankan      html  css  js  c++  java
  • flash中物体运动基础之一匀速运动

    此处只涉及到规则物体的运动!!

    先定义一个Ball类继承自MovieClip,用作被移动的对象。定义Ball的x,y方向的速度、加速度,初始值都为0;定义质量,初始值为3;

    public class Ball extends MovieClip
    {
      private var _power:int = 3;
    		
      private var _vx:Number = 0;
      private var _vy:Number = 0;
      private var _mass:Number = 3;
      private var _ax:Number = 0;
      private var _ay:Number = 0;
    		
      public function Ball() 
      {
    	if (stage) init();
    	else addEventListener(Event.ADDED_TO_STAGE, init);
      }
    		
      private function init(e:Event=null):void
      {
    	removeEventListener(Event.ADDED_TO_STAGE, init);
    	stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandle);
    	stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandle);
    	addEventListener(Event.ENTER_FRAME, update);
      }
    }

     为了让Ball自行处理自己的移动,需要监听KeyboardEvent和Event事件。KeyboardEvent对象的keyCode属性(uint类型)记录了每次按下键的ascii码,通过此值我们就知道按了什么键,常用的是检测按下的方向键,下面是四个方向键与其对应的ASCII:

    up    38
    down   40
    left    37
    right    39

    private function keyDownHandle(e:KeyboardEvent):void 
    		{
    			var key:uint = e.keyCode;
    			if (key == 37)//left
    			{
    				vx = -_power;
    			}
    			if (key == 39)//right
    			{
    				vx = _power;
    			}
    			if (key == 38) //up
    			{
    				vy = -_power;
    			}
    			if (key == 40) //down
    			{
    				vy = _power;
    			}
    		}

    当按下不同方向键时,分别设置不同方向上的速度,设置的速度大小相同为3,这就是Ball匀速运动了。vx,vy分别是Ball在x,y方向的速度。

    private function keyUpHandle(e:KeyboardEvent):void 
    		{
    			vx = 0;
    			vy = 0;
    		}

    keyUpHandle在按键弹起时执行,主要是恢复速度为0,即Ball将静止。但实际运动着的物体时不能立刻静止的。

    private function update(e:Event):void 
    		{
    			x += vx;
    			y += vy;
    		}

    update函数更新Ball的位置,设置Ball的x,y坐标。

    最后为了测试,还需要建立一个Fla文件,设置它的文档类为Main.as,如下:

    public class Main extends Sprite
    	{
    		private var _ball:Ball;
    		
    		public function Main() 
    		{
    			_ball = new Ball();
    			_ball.x = 100;
    			_ball.y = 100;
    			addChild(_ball);
    		}
    		
    	}

    为简单,此处初始化Ball的位置为(100,100)。

    作者:ywxgod
    E-mail:给我发邮件
    出处:http://ywxgod.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    【转载】在Linux中使用VS Code编译调试C++项目
    【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发
    【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史
    【转载】OLE DB, ADO, ODBC关系与区别
    【转载】ADO,OLEDB,ODBC,DAO的区别
    【转载】Linux系统启动流程
    91. Decode Ways
    90. Subsets II
    89. Gray Code
    88. Merge Sorted Array
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1784629.html
Copyright © 2011-2022 走看看