【发布时间】:2014-04-15 23:59:22
【问题描述】:
我目前正在使用 ActionScript 3 在 Flash CS6 中制作平台游戏。我已经成功地将基本精灵设置为单个符号/对象,使用不同的帧。
每个精灵/动作本身也是一个不同的符号(例如,有 5 个左右运行到正确的帧,所以我将它们合并到一个单独的符号中。然后将该符号复制到 player 符号中(或主要符号)。
我已经设法让我的代码使用gotoAndPlay() 命令运行特定的符号/帧,但是我的问题是,即使我在循环结束时有一个stop(); 操作,它也会继续到下一帧。
在这种情况下,它继续运行“runLeft”动画的第一帧,然后恢复到正确的“runRight”动画。然而,它会在两者之间不断切换并闪烁,直到我松开按键。
假设我有两个方向的两个运行动画,都是 5 帧长(1a、2a、1b 等)。当我按右箭头键时,它将运行帧;
1a, 1b, 1c, 1d, 1e
但是,在1e,我有一个stop(); 命令,理论上认为由于案例仍然处于活动状态,它将循环回到开始。相反,它会这样做;
1a, 1b, 1c, 1d, 1e, 2a, 1a, 2a, 1a..... 以此类推,直到我释放密钥。如果我按住左箭头键,它将继续播放“动画 3”的第一帧(之后的下一个动画)。
这是我正在使用的代码,但我看不出这是 DocumentMain.as 代码的问题,但更多的是符号本身的问题?
KeyDown(pressed) 处理函数;
switch(e.keyCode)
{
case 37: //Left Arrow
_vx = -5;
_player.gotoAndPlay("runLeft");
break;
case 38: //Up Arrow
_vy = -27;
break;
case 39: //Right Arrow
_vx = 5;
_player.gotoAndPlay("runRight");
break;
default:
}
还有KeyUP处理函数;
switch(e.keyCode)
{
case 37: //Left Arrow
_vx = 0;
_player.gotoAndPlay("standLeft");
break;
case 39: //Right Arrow
_player.gotoAndPlay("standRight");
_vx = 0;
break;
default:
}
【问题讨论】:
标签: actionscript-3 flash animation symbols