2012-10-07 41 views
1

我已經創建了一個欄,它在框架1上已滿,然後在框架100上爲空,並且已將它製作爲補間形狀。我想創建一個代碼,當我按下某個按鈕時,它將耗盡酒吧,因此只要按住某個按鈕,框架就從1變爲1,直到達到100。幀數等於數字 - 健康欄

我在想辦法做到這一點,但似乎不可能。

var maxHP:int = 100; 
var currentHP:int = maxHP; 
var percentHP:Number = currentHP/maxHP; 

我想percentHP var等於酒吧,所以它達到50,它會達到50幀,等等。

這是正確的方式去做這個?

謝謝。


下面是我在下面試圖解決的代碼中使用的變量。另外,我創建的遊戲有多個角色,所以我指的是在幾個動畫片段內。

基本上,當人物雙跳時,它會飛起來,酒吧消耗殆盡。一旦酒吧消耗到0(或百分比HP爲0),那麼它應該結束飛行。之後,我想讓酒吧加班加點100加元。

var percentHP = Number(Bar.CBar.CMana_bar.currentFrame)/Number(100); 
var gravityConstant:Number = 1; 
var doubleJumpReady:Boolean = false; 
var flyingJump:Boolean = false; 
var upReleasedInAir:Boolean = false; 

function loop(e:Event):void{ 
    //Flying 
      if(upReleasedInAir == true){ // if the player releases the up arrow key 
       upReleasedInAir = false; // set the variable to true 
      } 
      if(doubleJumpReady == false){ 
       doubleJumpReady = true; 
      } 
     } else { //if we are not touching the floor 

      ySpeed += gravityConstant; //accelerate downwards 

      //Flying 
      if(upPressed == false && upReleasedInAir == false){ 
       upReleasedInAir = true; 
       //trace("upReleasedInAir"); 
      } 
      if(doubleJumpReady && upReleasedInAir){ 
       if(upPressed){ //and if the up arrow is pressed 
        flyingJump = true; 
        //trace("doubleJump!"); 
        doubleJumpReady = false; 
        ySpeed = jumpConstant + 8; //set the y speed to the jump constant 
        gravityConstant = 0; 
        Bar.CBar.CMana_bar.play(); 
        //trace(percentMP); 
       } 
       } 
       if(Bar.CBar.CMana_bar.currentFrame == 100 && percentHP == 0){ 
      gravityConstant = 1; 
      Bar.CBar.CMana_bar.stop(); 
      flyingJump = false; 
      doubleJumpReady = false; 
     } 

回答

0

你應該做的是附加MOUSE_DOWN和MOUSE_UP事件的按鈕。在您的欄的第1幀中輸入stop();,然後使用MOUSE_DOWN和MOUSE_UP在您的欄中播放或停止動畫。一些沿線:

button.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
button.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 
function mouseDownHandler(e:Event):void{ 
bar.play(); 
} 
function mouseUpHandler(e:Event):void{ 
bar.stop(); 
percentHP = Number(bar.currentFrame)/Number(100); //If you still need to know the percent 
} 
+0

感謝您的答案。我是否應該更改percentHP var使其等於bar.currentFrame?我認爲我現在面臨的問題是百分比HP等於兩個不同的東西。你所擁有的代碼對我來說非常有意義。 – Bindlestick

+0

@Bindlestick當然,爲什麼不呢? –

+0

每當我嘗試讓var等於currentFrame時,我會得到可怕的錯誤1009。 – Bindlestick

0

如果你問如何通過其數量達到一幀,使用MovieClip.gotoAndStop方法:

loaderBar.gotoAndStop(percentHP);