2012-06-08 3 views
0

У меня есть функция в моем классе, которая возвращает массив. Дело в том, что при использовании я получаю ошибку переполнения стека. Важными функциями являются:Переполнение стека во Flash

ScrollList/returnArmy

public function returnArmy (army:int):Array 
    { 
     var returnVar:Array; 

     if(army == 0) returnVar = army1_; 
     else if(army == 1) returnVar = army2_; 
     else if(army == 2) returnVar = army3_; 
     else if(army == 3) returnVar = army4_; 
     else if(army == 4) returnVar = army5_; 
     else if(army == 5) returnVar = army6_; 
     else if(army == 6) returnVar = army7_; 
     else if(army == 7) returnVar = army8_; 
     else returnVar = new Array; 

     return returnVar; 
    } 

SkirmishScreen/returnArmy

public function returnArmy (army_:int):Array 
    { 
     var retArmy:Array = returnArmy(army_); 
     return retArmy; 
    } 

SkirmishScreen/returnArmy вызывается в цикле, с

screensAR_[3] = new PlayScreen(stage, screensAR_[2].returnArmy(0)); 

с army1_ в 8_ инициализируется новым массивом(). Кто-нибудь может помочь?

EDIT: Точная ошибка: Произошла Stack переполнение:

Ошибка: Error # 1023. at SkirmishScreen/returnArmy()

ответ

2

Я не знаком с ActionScript, но похоже, что функция returnArmy «SkirmishScreen» вызывает себя рекурсивно и никогда не вырывается из нее. Это общий источник исключений переполнения стека на других языках.

Это не похоже на то, что вы хотите использовать рекурсию. Я предполагаю, что вы хотите, чтобы функция returnArmy «SkirmishScreen» вызывала функцию returnArmy «ScrollList», но вместо этого «Return» вернет «SkirmishScreen». Это рекурсия.

+0

Вы правы в этом проблема. var retArmy: Array = returnArmy (армия_); не имеет условия нарушения, если функция возвращает существующий массив или новый массив, вызов метода returnArmy все еще выполняется в другое время. Это позволит быстро создать stackoverflow вызовов функций. – shaunhusain

+0

Я не считаю, что OP должен использовать для этого рекурсивный вызов функции, это может быть просто цикл. – shaunhusain

+0

SkrimishScreen/returnArmy называет себя ошибкой. – shaunhusain