首先,我知道,我仍在使用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")
}
}
如何使其正常工作?
答案 0 :(得分:0)
如果我理解正确,你需要在每次按下'A'键时显示一个新的攻击片段(1/3)...如果这是你的情况,请看这个工作示例(它是CS5 .fla文件,抱歉,由于我只安装了最新版本,因此我无法以较旧的格式保存它:
您的代码的固定版本应如下所示:
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',在之前的代码中更改它以满足你的需求。
希望能帮助你一点。