2013-04-24 63 views
0

我有一個動作腳本3.重複播放功能,當滿足條件

我想提出一個問題的遊戲,遊戲的基本規則是:

  1. 對象從頂部落下
  2. 英雄(用戶)必須避開物體
  3. 如果物體撞擊地面或英雄:英雄死亡或物體再次從頂部跌落。

我正在使用添加子對象的方法,併爲秋季計時器功能。

問題是: 當物體碰到地面時,函數不會循環。它就這樣結束。所以不會再有任何墜落的物體了。

請幫幫我。謝謝:)

stage.addEventListener(Event.ENTER_FRAME, addfire1); 

function addfire1(e:Event):void 
{ 
    if (api1==false)//if object is not on the stage 
    { 
     randomx = randomRange();//generate random X 
     addChild(api); 
     api.x = randomx;//set x 
     api1 = true;//object is now on stage 
    } 
    if (api.hitTestObject(hero) || api.hitTestObject(ground)) 
    { 
     falltimer.stop(); 
     //stop timer; 
     falltimer.reset(); 
     //reset fall Count to zero ; 
     removeChild(api);//object removed 
     api1=false; 
    } 
} 

function firefall(Event:TimerEvent):void 
{ 
    if (api1) 
    { 
     api.y += 20;//set speed y 
    } 
} 
+0

何必刪除/每撒在地板上的時間增加了對象?只需將相同的對象移回頂端:'api.y = 0;' – 2013-04-24 09:35:27

+0

感謝您的幫助,它的工作:) – Briandito 2013-04-24 13:56:09

回答

2

只是分開兩種情況:英雄和地板。

if (api.hitTestObject(hero)) 
{ 
    falltimer.stop(); 
    //stop timer; 
    falltimer.reset(); 
    //reset fall Count to zero ; 
    removeChild(api);//object removed 
    api1=false; 
} 
else if (api.hitTestObject(ground)) 
{ 
    //reset object's position 
    api.y = -20; 
} 
+0

非常感謝!它的作用就像一種魅力 – Briandito 2013-04-24 13:56:51

0

假設只有一個落下的時候我不能去除異物而只是將其移動到原始y位置和新的x位置的對象。而不是有計時器,我會創建一個更新函數,每次輸入框架時都會運行。

stage.addEventListener(Event.ENTER_FRAME, update); 

private function update(e:Event):void 
{ 
    if(!api1) //if object is not on the stage (same as api1==false) 
    { 
     addfire1(); 
    } 

    if(api1) //if object if on stage (same as api1==true) 
    { 
     firefall(); 
    } 
} 

private function addfire1(e:Event):void 
{ 
    randomx = randomRange();//generate random X 
    addChild(api); 
    api.x = randomx;//set x 
    api1 = true;//object is now on stage 

    if (api.hitTestObject(hero)) 
    { 
     hitHero(); //execute what should happen to the hero when the he is hit 
     resetFire(); 
    } 
    else if(api.hitTestObject(ground)) 
    { 
     resetFire(); 
    } 
} 

private function firefall(Event:TimerEvent):void 
{ 
    api.y += 20;//set speed y 
} 

private function resetFire():void 
{ 
    api.x = randomRange(); 
    api.y = 0; 
} 

如果你這樣寫,你不必混合起來。儘量保持一切分離,一個功能做一件事。如果你正在做一個大型遊戲,試着在課堂上把所有東西都分開。

希望這能解決問題,使您更容易完成遊戲:)