打印

[AS3] 书上的例子,调试出错了?

请大家帮忙看看拿错了
谢谢!!!

package
{
       import flash.display.Sprite;
       import flash.events.Event;
       import flash.events.KeyboardEvent;
       import flash.ui.Keyboard;
       import flash.display.StageAlign;
       import flash.display.StageScaleMode;
       
       public class ShipSim2 extends Sprite
       {
              private var ship:Ship;
              private var vr:Number = 0;
              private var thrust:Number = 0;
              private var vx:Number = 0;
              private var vy:Number = 0;
              
              public function ShipSim2()
              {
                     init();
              }
              
              private function init():void
              {
                     stage.scaleMode = StageScaleMode.NO_SCALE;
                     stage.align=StageAlign.TOP_LEFT;
                     ship = new Ship();
                     addChild(ship);
                     ship.x = stage.stageWidth / 2;
                     ship.y = stage.stageHeight / 2;
                     addEventListener(Event.ENTER_FRAME, onEnterFrame);
                     stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
                     stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
              }
              
              private function onKeyDown(event:KeyboardEvent):void
              {
                     switch(event.keyCode)
                     {
                            case Keyboard.LEFT :
                            vr = -5;
                            break;
                            
                            case Keyboard.RIGHT :
                            vr = 5;
                            break;
                            
                            case Keyboard.UP :
                            thrust = 0.2;
                            ship.draw(true);
                            break;
                            
                            default :
                            break;
                     }
              }
              
              private function onKeyUp(event:KeyboardEvent):void
              {
                     vr = 0;
                     thrust = 0;
                     ship.draw(false);
              }
              
              private function onEnterFrame(event:Event):void
              {
                     ship.rotation += vr;
                     var angle:Number = ship.rotation * Math.PI / 180;
                     var ax:Number = Math.cos(angle) * thrust;
                     var ay:Number = Math.sin(angle) * thrust;
                     vx += ax;
                     vy += ay;
                     ship.x += vx;
                     ship.y += vy;
                     var left:Number = 0;
                     var right:Number = stage.stageWidth;
                     var top:Number = 0;
                     var bottom:Number = stage.stageHeight;
                     if (ship.x - ship.width / 2 > right)
                     {
                            ship.x = left - ship.width / 2;
                     }
                     else if (ship.x + ship.width / 2 < left)
                     {
                            ship.x = right + ship.width / 2;
                     }
                     if (ship.y - ship.height / 2 > bottom)
                     {
                            ship.y = top - ship.height / 2;
                     }
                     else if (ship.y < top - ship.height / 2)
                     {
                            ship.y = bottom + ship.height / 2;
                     }
              }
       }
}

Warning: 1090: 迁移问题: 在 ActionScript 3.0 中,onKeyDown 事件处理函数不是由 Flash Player 在运行时自动触发的。必须首先使用 addEventListener ('keyDown', callback_handler) 为该事件注册此处理函数。
源:private function onKeyDown(event:KeyboardEvent):void

Warning: 1090: 迁移问题: 在 ActionScript 3.0 中,onKeyUp 事件处理函数不是由 Flash Player 在运行时自动触发的。必须首先使用 addEventListener ('keyUp', callback_handler) 为该事件注册此处理函数。
源:private function onKeyUp(event:KeyboardEvent):void
出错是因为! 你写的代码是 as2 和 as3 杂交的!

你还是看看AS3的事件机制吧!
可这是书上的 例子啊
实在不会改
大哥指点一下吧
可这是书上的 例子啊
实在不会改
大哥指点一下吧

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
既然是Warning就别管他喽
裸奔也是一种美

TOP

可是调试出来没有现象啊

TOP

Ship类是个什么东西?
船?
裸奔也是一种美

TOP

呵呵 看错了!

是 warning 你不用理会代码正确的,  

因为 onKeyUp onKeyDown 是as2里面的语言保留字符 说以会出现提醒

如果不想出现提醒,你就把这两个函数的名字改一下

或者  把发布--》设置--》as3设置--》警告模式  取消选择!

TOP

另外定义的一个类

TOP

谢谢
太感谢你们了
5555555555
但既然代码是对的
为什么调试没有现象呢?
大哥们再指点一下吧!

TOP

不要用使用像onEnterFrame这样和as2回调函数,可以改为其它的函数比如:handleEnterFrame,楼主是学的是陈汝义翻译的《Flash ActionScript 3.0动画教程》吧,不错的一本书。
战胜自我!!

TOP

onKeyDown和onkeyUp改其他名字 就没警告了
xhtml/css/Ajax/AS/php/mysql你才是程序员,你家全是程序员 -__-

TOP