2014-10-19 38 views
0

因此,我對AS3真的很陌生,我試圖找出一個解決方案來結束我爲匹配遊戲創建的函數。當所有卡在陣列中用完時,我想讓功能結束。最簡單的方法是什麼?在AS3中結束包含數組的函數的最佳方法

private var games:Object = { 
      easy:{ 
        tiledeck:[1,1,2,2] 
        ,xOffset:450 
        ,yOffset:320  
        ,incrementX:200 
        ,incrementY:200 
        ,columns:2  
        ,rows:2   
       } 
      ,hard:{ 
        tiledeck:[1,1,2,2,3,3,4,4] 
        ,xOffset:235 
        ,yOffset:320 
        ,incrementX:200 
        ,incrementY:200 
        ,columns:4 
        ,rows:2 
       } 
    }; 

    public function KT(game:String){ 
     buttonMode = true 
     var gameConfig = games[game]; 
     var tiledeck:Array = gameConfig.tiledeck.concat(); 
     for (var x=1; x<=gameConfig.columns; x++){ 
      for (var y=1; y<=gameConfig.rows; y++){ 
       var random_card = Math.floor(Math.random() * tiledeck.length); 
       var tile:animalTile = new animalTile(); 
       tile.animal = tiledeck[random_card]; 
       tiledeck.splice(random_card,1); 
       tile.gotoAndStop(5); 
       tile.x = (x - 1) * gameConfig.incrementX + gameConfig.xOffset; 
       tile.y = (y - 1) * gameConfig.incrementY + gameConfig.yOffset; 
       tile.addEventListener(MouseEvent.CLICK,tile_clicked); 
       addChild(tile); 
      } 
     } 
    } 
+0

你是什麼意思「陣列中所有的牌都用完了」?你的意思是什麼時候發行結束了?因爲我不知道你打算做什麼樣的紙牌遊戲,所以我有點難以幫你 – axelduch 2014-10-19 14:17:08

+0

嗯,它不是已經結束了嗎?您的for循環是您函數中的最後一個語句....否則,您可以始終使用* return; *結束函數。 – Fygo 2014-10-19 23:18:12

+0

這是一個匹配的紙牌遊戲。用戶選擇兩張卡進行匹配,並且該陣列持有用於匹配的卡。我在主時間線中設置了一個後退按鈕,以便在選擇時返回到開始屏幕。我遇到的問題是,如果用戶在完成該功能之前點擊返回按鈕,瓷磚仍會保留在開始菜單的屏幕上。所以我需要殺死這個功能,只要點擊這個按鈕。 – Rezonance 2014-10-20 01:02:35

回答

1

你的問題不是你認爲的問題。

該陣列從存儲器中正確丟棄。

但是,您使用了addChild(tile)。這意味着你也必須removeChild(tile)。就個人而言,我建議您添加一張DisplayObjectContainer,您添加卡片。有點像塑料布放置卡片。然後,當用戶按下後退按鈕時,您將移除塑料薄片......並且所有卡都隨附。

雖然您尚未提供後退按鈕的代碼,但我無法幫助您集成此功能。我的建議是:讓某種遊戲對象負責清理,因此所有按鈕必須做的是game.exitGame();,然後使用任何代碼立即返回。

相關問題