4 让战机动起来(一)

有两种形式让战机动起来,时间轴和代码。我主要讲解通过代码让战机移动。

 

通过代码让战机移动又有两种方式:1)在文档类中让战机移动;2)让战机自己移动。

 

在这一节中我们通过在文档类中添加代码让战机移动。修改文档类StartPlane(文档类代码参考《在界面上显示战机》)

 

package

{

       importflash.display.MovieClip;

       import flash.events.Event;

      

       /**

        * ...

        * @author yl

        */

       publicclass StartPlane extends MovieClip 

       {

              var fighter:Fighter;

             

              publicfunction StartPlane():void {

                     fighter= new Fighter();

                     fighter.x= 100;

                     fighter.y= 100;

                     addChild(fighter);

                     //添加事件监听器,Event.ENTER_FRAME表示刷屏方法

                     //每刷一次屏就调用一次onEnterFrame方法

                     addEventListener(Event.ENTER_FRAME,onEnterFrame);

              }

             

              function onEnterFrame(event:Event):void {

                     //改变战机的位置

                     fighter.x -= 1;

              }

             

       }

      

}

 

在上面的代码中,我们首先将定义fighter变量的语句从构造方法中提取出来,然后放到方法外面。这样我们就可以再刷屏方法onEnterFrame中调用。

 

varfighter:Fighter;

在构造方法中添加时间监听器前要导入Event类:

importflash.events.Event;

 

然后在构造方法中输入:

addEventListener(Event.ENTER_FRAME,onEnterFrame);

 

addEventListener为AS3内置方法,它表示在当前类(即StartPlane文档类)中增加时间监听器。

然后跟着第一个参数Event.ENTER_FRAME ,他表示刷屏方法。那么一秒钟刷多少次屏幕呢?查看场景中设置的帧频率,如下图。

 

可以看到,帧频是12,也就是说一秒钟将会刷12次屏幕。只要我们将战机的坐标在每次刷屏的时候进行小小的改变,就能实现动画效果。那么坐标的改变在哪里编写呢?

 

addEventListener第二个参数onEnterFrame 为刷屏方法,每次刷屏的时候这个方法会被调用。因此,我们可以在这个方法中实现动画效果。

 

在类中编写onEnterFrame刷屏方法:

functiononEnterFrame(event:Event):void {

       //改变战机的位置

       fighter.x -= 1;

}

 

在这里onEnterFrame方法有一个参数,它主要存储发生事件时的信息(如谁触发了这个事件,事件的类型等等)。

 

在方法体中,就是我们战机移动的代码。表示每一帧移动1个像素。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值