打印

[AS3] 请问 AS3的代码是否有系统优先判定的?感觉是恒定的方法大于属性

为什么我代码player的X 位移已经在gotoAndStop 之前了 但是系统还是先读取gotoAndStop  运行一遍动画
              private function gamePlayerKeyboardStartDragHandler(event:KeyboardEvent):void
              {
                     var pressedKeyCode:Number = event.keyCode;
                     switch (pressedKeyCode)
                     {
                            //向右走路
                            case 68 :
                            case 39 :
                                   KeyArray[2] = 1;
                                   player.scaleX = 1;
                                   player.x += 3;
                                   player.gotoAndStop("走路");
                                   iskeydown=1;
                                   playAction();
                                   break;
                     }
              }

[ 本帖最后由 football01 于 2008-5-13 11:33 编辑 ]

TOP

你是說先開始運動。然后看到位移?

TOP

AS3中 系统内核是否存在优先判定原则?
我写的代码控制影片剪辑 系统在生成时 总是优先执行gotoAndStop 这个方法 而对我的位移属性则晚一步执行

TOP

引用:
原帖由 enc0717 于 2008-5-13 11:28 发表
你是說先開始運動。然后看到位移?
恩是的 就是这样
我觉得 AS3 的系统内核 判定的时候 方法大于属性 而且是恒定原则 方法总是大于属性

GOTOANDSTOP 属于方法 而.X 属于属性 从判定阶层上 好像要慢一层

TOP

還是發個文件上來看看吧。

我覺得沒有這個原則,其實x也是一種叫做setter的方法。

public function set x ( value:Number ):void {}
形式
推測和異步機制有關系。

TOP

我级别太低 不能发附件啊 郁闷

TOP

package
{
       import flash.display.Sprite;
       import flash.events.*;
       import flash.display.MovieClip;
       import flash.text.TextField;
       import flash.net.URLLoader;
       import flash.net.URLLoaderDataFormat;
       import flash.net.URLRequest;
       import flash.display.Loader;
       import flash.utils.*;

       public class warfare extends Sprite
       {
              public var player:MovieClip;
              public function warfare()
              {
                     player = new initHero();
                     player.x = 100;
                     player.y = 250;
                     player.gotoAndStop("站着");
                     addChild(player);
                     stage.addEventListener(KeyboardEvent.KEY_DOWN,gamePlayerKeyboardStartDragHandler);
                     stage.addEventListener(KeyboardEvent.KEY_UP,gamePlayerKeyboardOverDragHandler);
              }
              private function gamePlayerKeyboardStartDragHandler(event:KeyboardEvent):void
              {
                     var pressedKeyCode:Number = event.keyCode;
                     switch (pressedKeyCode)
                     {
                            //向右走路
                            case 68 :
                            case 39 :
                                   player.scaleX = 1;
                                   player.x += 3;
                                   player.gotoAndStop("走路");
                                   break;
                     }
              }
              private function gamePlayerKeyboardOverDragHandler(event:KeyboardEvent):void
              {
                     var pressedKeyCode:Number = event.keyCode;
                     switch (pressedKeyCode)
                     {
                            //向右走路
                            case 68 :
                            case 39 :
                                   player.gotoAndStop("站着");
                                   break;
                     }

              }
       }
}

TOP

發這里吧409023050@qq.com

TOP

已经发送 过去了 请看一下 谢谢

TOP

复制内容到剪贴板
代码:
package
{
    import flash.display.Sprite;
    import flash.events.*;
    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequest;
    import flash.display.Loader;
    import flash.utils.*;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    
    public class warfare extends Sprite
    {
        public var player:MovieClip;
        private var iskeydown:int=0;
        public function warfare()
        {
            player = new initHero();
            player.x = 100;
            player.y = 250;
            player.gotoAndStop("站着");
            addChild(player);
            stage.addEventListener(KeyboardEvent.KEY_DOWN,gamePlayerKeyboardStartDragHandler);
            stage.addEventListener(KeyboardEvent.KEY_UP,gamePlayerKeyboardOverDragHandler);
        }
        private function gamePlayerKeyboardStartDragHandler(event:KeyboardEvent):void
        {
            var pressedKeyCode:Number = event.keyCode;
            switch (pressedKeyCode)
            {
                //向右走路
                case 68 :
                case 39 :
                    iskeydown=1;
                    handleStatu ();
                    break;
            }
        }
        private function gamePlayerKeyboardOverDragHandler(event:KeyboardEvent):void
        {
            var pressedKeyCode:Number = event.keyCode;
            switch (pressedKeyCode)
            {
                //向右走路
                case 68 :
                case 39 :
                    iskeydown=0;
                    handleStatu ();
                    break;
            }
        }
        
        
        private function handleStatu ():void {
            if ( iskeydown == 1 ) {
                trace(1);
                player.gotoAndStop("走路");
                timer.addEventListener ( TimerEvent.TIMER , motionHandler );
                timer.start ();
            } else {
                player.gotoAndStop("站着");
                timer.removeEventListener ( TimerEvent.TIMER , motionHandler );
                timer.reset ();
            }
        }
        
        var timer:Timer = new Timer ( 10 );
        private function motionHandler ( event:Event ):void {
            playAction ();
        }
            
        private function playAction():void
        {
          
            //player.scaleX = 1;
            player.x += 3;
            
        }
    }
}

TOP