2014-10-19 3 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

+0

Ну, разве это не конец? Ваш цикл for - это последнее утверждение в вашей функции ... В противном случае вы всегда можете закончить функцию с помощью * return; *. – Fygo

+0

Это подходящая карточная игра. Пользователь выбирает две карты для соответствия, и массив держит карты для сопоставления. У меня есть кнопка возврата, установленная на основной временной шкале, чтобы вернуться к начальному экрану при выборе. Проблема, с которой я столкнулась, заключается в том, что если пользователь нажимает кнопку «Назад» до того, как функция будет выполнена, плитки все еще остаются на экране в меню «Пуск». Поэтому мне нужно убить функцию всякий раз, когда нажимается эта кнопка. – Rezonance

ответ

1

Ваша проблема не в том, что вы думаете.

Массив должным образом отбрасывается из памяти.

Однако, вы использовали addChild(tile). Это означает, что вам также понадобится removeChild(tile). Лично я рекомендую добавить DisplayObjectContainer, к которому вы добавляете карты. Как будто пластиковый лист положить карты. Затем, когда пользователь нажимает кнопку «Назад», вы удаляете пластиковый лист ... и все карты поставляются вместе с ним.

Вы еще не указали код для кнопки «Назад», поэтому я не могу помочь вам интегрировать эту функциональность. Мой совет: сделайте какой-то игровой объект, ответственный за очистку, поэтому все, что нужно сделать, это game.exitGame();, а затем любой код, который вы используете, чтобы вернуться прямо сейчас.

Смежные вопросы