[英]Attack animation issue in as3 flash
我的問題是,當我按下空格鍵時,它會播放攻擊動畫,但是一旦釋放它,它就會停止動畫處理。 我想要在這里我可以簡單地按下並釋放按鈕,然后由它自己完成動畫。
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");
}
}
攻擊動畫未完成,因為在空格鍵keyReleased
函數attackMode
設置為false
。 不要那樣做 而是在動畫的最后一幀attackMode
false。 在嵌套在if (attackMode) {
邏輯塊內的Main類中執行此操作
if (heroMage.currentFrame == "LastFrame")
{
attackMode = false;
}
顯然,您將攻擊動畫的最后一幀命名為“ LastFrame”。
我在這里還發現了一種更優雅的方法,即使用eventDispatcher
,它無需檢查當前幀,但在影片剪輯時間軸中包含代碼(在我看來)則有點令人討厭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.