ここで問題になるのは、スペースバーを押すとアタックアニメーションが再生されますが、リリースするとすぐにアニメーションプロセスが停止します。私はボタンを押して放すだけで、アニメーションを完成させることができます。as3のフラッシュでのアタックアニメーションの問題
function keyPressed(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.RIGHT)
{
rDown = true;
}
if(e.keyCode == Keyboard.LEFT)
{
lDown = true;
}
if(e.keyCode == Keyboard.UP && onGround)
{
jumped = true;
}
if(e.keyCode == Keyboard.DOWN && onGround)
{
crouchMode = true;
}
if(e.keyCode == Keyboard.SPACE && onGround)
{
attackMode = true;
}
}
function keyReleased(e:KeyboardEvent):void
{
if(e.keyCode == Keyboard.RIGHT)
{
rDown = false;
}
if(e.keyCode == Keyboard.LEFT)
{
lDown = false;
}
if(e.keyCode == Keyboard.UP)
{
jumped = true;
}
if(e.keyCode == Keyboard.DOWN)
{
crouchMode = false;
}
if(e.keyCode == Keyboard.SPACE)
{
attackMode = false;
}
}
function gameLoop(e:Event):void
{
playerStart();
}
}
}
function playerStart():void
{
warMage.y += grav;//Apply gravity to player
collisionStageCheck();
if(crouchMode)
{
warMage.gotoAndStop("CrouchWarmage");
rDown = false;
lDown = false;
}
if(attackMode)
{
if(warMage.scaleX == 1)//If we face right
{
warMage.x += 5;//Lunge right
}
if(warMage.scaleX == -1)//If we face left
{
warMage.x -= 5;//Lunge left
}
warMage.gotoAndPlay("AttackWarmage");
}
if(rDown)//If we move right
{
warMage.x += 12;
warMage.gotoAndStop("RunWarmage");
warMage.scaleX = 1;
}
if(lDown)//If we move left
{
warMage.x -= 12;
warMage.gotoAndStop("RunWarmage");
warMage.scaleX = -1;
}
if(jumped)//If we jumped
{
warMage.y -= 30;
warMage.gotoAndStop("JumpWarmage");
}
if(!rDown && !lDown && !jumped && !crouchMode && !attackMode)//If we are in neither states
{
warMage.gotoAndStop("idleWarmage");
}
}
これはまさにあなたのコードがしなければならないもののようです( '(!rDown &&!lDown &&!jumped &&!crouchMode &&!attackMode)'はアニメーションをアイドルに切り替える)、解放された場合には ' 、それは助けてください。 – www0z0k
リリース時にattackModeをオンにしておくと、停止することはありません。偽であるはずの別の信号を探してみようとしています。アニメーションを制御するのと同じように、他のものを探すのはかなり難しいです。 – user199845
'AttackWarmage'の最後のフレームで' gotoAndStop( "idleWarmage")を追加しようとします。 – www0z0k