在一键按下播放完整的Mc

时间:2016-05-04 20:15:32

标签: actionscript-3 flash

首先,很遗憾地问这个愚蠢的问题(我是AS3的新人)。我在这个问题上浪费了超过2周的时间,现在我将它发布在这里。

我正在用键盘让英雄移动。我有三个动画。

  1. 待机模式
  2. 走在前面
  3. 走在后面
  4. 到目前为止它运作良好,但是我在跳跃玩家时面临的问题是必须按住键才能跳跃。我不希望玩家需要按住键才能进行跳跃。 所以我想用一键按下播放完整的MovieClip,说实话,我不知道我必须使用哪种功能或如何操作。

    Here is the file,这是我的代码

    import flash.display.Stage;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    import flash.display.MovieClip;
    import flash.events.Event;
    
    kim.gotoAndStop("kim Stand");
    
    var grav:int = 0;
    var floor = 450;
    var dPressed:Boolean = false;
    var aPressed:Boolean = false;
    var jumping:Boolean = false;
    
    stage.addEventListener(KeyboardEvent.KEY_DOWN , keyDownHandaler);
    stage.addEventListener(KeyboardEvent.KEY_UP , KeyUpHandaler);
    stage.addEventListener(Event.ENTER_FRAME , gameLoop);
    
    function keyDownHandaler(Devent:KeyboardEvent):void
    {
        if (Devent.keyCode == Keyboard.D)
            {
                dPressed = true;
            }
        else if (Devent.keyCode == Keyboard.A)
            {
                aPressed = true;
            }
        else if (Devent.keyCode == Keyboard.W && !jumping)
            {
                jumping = true;
            }
    }
    
    function KeyUpHandaler (Uevent:KeyboardEvent):void 
    {
        if (Uevent.keyCode == Keyboard.D)
            {
                dPressed = false;
                kim.gotoAndStop("kim Stand");
            }
        else if(Uevent.keyCode == Keyboard.A)
        {
                aPressed = false;
                kim.gotoAndStop("kim Stand");
        }
    
        else if(Uevent.keyCode == Keyboard.W)
        {
                jumping = false;
                kim.gotoAndStop("kim Stand");
        }
    
    
    }
    
    function gameLoop(Levent:Event):void
    {
        if (dPressed)
            {
                kim.x += 5;
    
                kim.gotoAndStop("kim Move Right");
            }
        else if(aPressed)
            {
                kim.x -= 5;
                kim.gotoAndStop("kim Move Left");
            }
    
        else if(jumping)
            {
                kim.gotoAndStop("kim Jump");
                kim.y -= 10;
    
            }
    
        gravity();
    
    }
    
    function gravity ():void
        {
            kim.y += grav;
            if (kim.y+kim.height/2 <floor){
                grav++;
            }
    
            else {
                grav = 0;
                kim.y = floor - kim.height/2 ;
    
                }
    
        }
    

1 个答案:

答案 0 :(得分:1)

您可能想尝试基于状态的逻辑。键盘事件设置它,更新角色的操作在function doRender(color) { var transY = ((100 - color.RND.hsv.v) / 100 * (hsv_barHeight)) - cursorRadius; hsv_barcursor.style.transform = 'translateY(' + transY + 'px)'; } 中单独处理。这个谜题的最后一部分是当你认识到你已落地时更新你的状态(不是通过键盘交互发生的事情,而是来自你的引力功能)。

gameLoop()