2017-10-09 186 views
1

自Macromedia以來,我還沒有編碼,上帝的事情已經改變。我處於一個陡峭的學習曲線,並試圖回到它。Animate CC,創建可收藏的代碼

我正在做一個小型的Flash遊戲,玩家收集炸玉米餅和分數上升。

沒有在線代碼,我發現在Animate CC上爲我賺取收藏價值的作品。我不確定這是爲什麼。腳本運行正常,調試檢測不到任何東西。但是代碼沒有做任何事情。

我已經試過這樣:

if(player.hitTestObject(taco1)) 
{ 
    if(back.contains(taco1)) 
     removeChild(taco1); 

    score += 10; 
    points.text = String(score); 
} 

這兩種犯規收集塔科,或塔科跟隨玩家(如果我把它放在主場景}

我也嘗試了。堵在我提供AS3遊戲教程的代碼實例。它在這裏可以看到,沒有改變。

if(keyCollected == false){ // if we still haven't collected the key 
if(player.hitTestObject(back.doorKey)){ // and if the player collides 
with the key 
back.doorKey.visible = false; // hide the key from view 
keyCollected = true; // set our Boolean to true 
} 
} 

沒有這仍然可以正常工作。

對不起,新的論壇,並沒有在十年編碼。但是正確方向的任何一點都會很有幫助!謝謝!

回答

1

看來你應該將hitTestObject包裝在一個函數中並在ENTER_FRAME事件或TimerEvent上運行它。 如果不存在ENTER_FRAME或計時器,您的代碼將只運行一次,因此您看不到任何效果。

從你的代碼,我可以告訴你必須將taco1對象的引用和對象屬於對象。

if(back.contains(taco1)) 
    removeChild(taco1); 

在上面的代碼中有一個問題。你應該有:

if(back.contains(taco1)) 
    back.removeChild(taco1); 

除此之外,代碼塊應該工作正常。例如使用ENTER_FRAME事件代碼將如下波紋管代碼:

this.addEventListener(Event.ENTER_FRAME, collectTaco); 

function collectTaco(evt:Event):void { 
    if(taco1 != null && player.hitTestObject(taco1)) { 
     if(back.contains(taco1)) { 
      back.removeChild(taco1); 
      taco1 = null; 
     } 
     score += 10; 
     points.text = String(score); 
    } 
} 

注意,有一種假設,即taco1對象始終堅持自己的,你想打的測試與塔科參考。這就是爲什麼我從返回取消taco1。在taco收集後,if語句將被評估爲false,因此不會嘗試再次收集它。我想你會在遊戲進行時製作更多炸玉米餅,並且您必須將新塔克醬的參考設置爲taco1

如果你在舞臺上有更多的炸玉米餅,你應該遍歷所有的炸玉米餅(或者將它們存儲在一個Vector中,或者只是通過父母的所有孩子,或者測試它們是否是塔科炸玉米餅)測試他們所有人。

+0

這似乎運行良好,但它之間交替無所作爲,或告訴我「collecttaco」不存在。它需要一個var嗎? –

+0

然後你可能只有一些框架上的代碼片段。它應該在時間軸上具有全球範圍(因爲它看起來你的遊戲是在時間軸上構建的)。你能證實嗎?如果不是,你能描述一下這個架構嗎? –