actionscript 2.0组合攻击具有相同的密钥

时间:2013-10-18 20:00:57

标签: flash actionscript-2

首先,我知道,我仍在使用AS 2,我应该与时俱进,但现在我正在使用AS2。我有一个不同的游戏编程,但由于某种原因,我不能复制结果,我不小心删除了另一个游戏。我的问题是我试图让玩家做3种不同的攻击,每次你点击“A”键一次,但它所做的只是第一次攻击。

这是我的设置。

我有一个包含4个关键帧的影片剪辑,一个关键帧有一个标记为“空闲”的空闲播放器影片剪辑,一个带有标记为“行走”的步行影片剪辑,一个带有标记为“跳跃”的跳跃播放器影片剪辑最后,一个用于攻击的,你猜对了,它被标记为“攻击”。在我的攻击影片剪辑中,我有3个攻击的动画,每个攻击的最后一帧都有一个停止命令,然后检查是否有关键按下“A”,如果按下,则再次播放。每次攻击都会重复此操作。

在我的主播放器影片剪辑(包含所有其他影片剪辑)中,我编写了以下代码。

 onClipEvent(enterFrame){
 var walkspd = 5;
 var sprintspd = 2;
 var gravity = 5;   
 var decel = .1;

//步行

if (Key.isDown(Key.RIGHT)){
    this.gotoAndStop("walk");
    this._xscale = 100
    this._x += walkspd;
}
if (Key.isDown(Key.LEFT)){
    this.gotoAndStop("walk");
    _xscale = -100;
    _x -= walkspd;
}
else {
    if(Key.isDown(Key.RIGHT) == false && Key.isDown(Key.LEFT) == false && Key.isDown(65) == false){
        this.gotoAndStop("idle");
    }
}

//攻击

if (Key.isDown(65)){
    gotoAndStop("attack")
}

}

如何使其正常工作?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你需要在每次按下'A'键时显示一个新的攻击片段(1/3)...如果这是你的情况,请看这个工作示例(它是CS5 .fla文件,抱歉,由于我只安装了最新版本,因此我无法以较旧的格式保存它:

  

http://www.4shared.com/zip/Z-Adpv_x/KeyMoveExample.html

您的代码的固定版本应如下所示:

onClipEvent (load) {
    // Constants :
    var walkspd:Number = 5;
    var sprintspd:Number = 2;
    var gravity:Number = 5;
    var decel:Number = .1;
    // Move Keys :
    var IsLeftKeydown:Boolean = false;
    var IsRightKeydown:Boolean = false;
    var IsAKeydown:Boolean = false;
    // Attack movie :
    var totalAttacks:Number = 3;
    var currentAttack:Number = 1;
    // create the keyListener Object : 
    var keyListener:Object = new Object();
    keyListener.onKeyUp = function()
    {
        //trace("UP -> Code: " + Key.getCode() + "\tASCII: " + Key.getAscii() + "\tKey: " + chr(Key.getAscii()));

        // detect when the 'A' key is released to increase current action :
        if (Key.getCode() == 65)
        {
            currentAttack++;
            if (currentAttack > totalAttacks)
            {
                currentAttack = 1;
            }
        }
    };
    Key.addListener(keyListener);
}
// --------------
onClipEvent (enterFrame) {

    IsLeftKeydown = Key.isDown(Key.LEFT);
    IsRightKeydown = Key.isDown(Key.RIGHT);
    IsAKeydown = Key.isDown(65);

    //attacking
    if (IsAKeydown)
    {
        gotoAndStop("attack");
        attack_mc.gotoAndStop(currentAttack);
    }
    else
    {
        //walking
        if (IsRightKeydown)
        {
            gotoAndStop("walk");
            _xscale = 100;
            _x += walkspd;
        }
        else if (IsLeftKeydown)
        {
            gotoAndStop("walk");
            _xscale = -100;
            _x -= walkspd;
        }
        //idle
        else
        {
            gotoAndStop("idle");
        }
    }
}

注意:我假设你的攻击影片的名称是'attack_mc',在之前的代码中更改它以满足你的需求。

希望能帮助你一点。