2015-02-21 3 views
0

Я генерирую массив текстового поля и массив случайных целых чисел. Каждое текстовое поле содержит одно из случайных чисел из массива. Затем у меня есть кнопка для запуска функции для поиска определенного пользователем числа в массиве. Эта функция вызывает экземпляр Timer для замедления процесса поиска. Когда я нажимаю кнопку, функция - это поиск и остановка поиска только один раз. Когда я снова нажмите кнопку поиска, вспышка дает мне эту ошибку:функция вызова из другой функции actioncript

TypeError: Error #1010: A term is undefined and has no properties. 
at bakalarka_fla::MainTimeline/timerListener() 
at flash.utils::Timer/_timerDispatch() 
at flash.utils::Timer/tick() 

это код

input_hladaj.restrict ="0-9" 
 
btn_hladaj.addEventListener(MouseEvent.CLICK, hladaj_fn); 
 

 
var cislohladaj:int = new int; 
 
var myTimer:Timer = new Timer(1000,10); 
 
myTimer.addEventListener(TimerEvent.TIMER, timerListener); 
 
var t:int= 0; 
 

 
function timerListener (e:TimerEvent):void 
 
{ 
 
\t trace("Times Fired: " + e.currentTarget.currentCount); 
 
\t \t if(numberArray[t]==cislohladaj) 
 
\t \t { 
 
\t \t \t trace(t); 
 
\t \t \t TextFields[t].backgroundColor = 0x3AEE20; 
 
\t \t \t txt_vysledok.text = "Najdene na pozícii číslo " +t.toString(); 
 
\t \t \t t=sizeOfArray; 
 
\t \t \t myTimer.stop(); 
 
\t \t \t myTimer.reset(); 
 
\t \t \t 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t txt_vysledok.text = "Nenajdene" 
 
\t \t \t TextFields[t].backgroundColor = 0xFF0000; //nenajde 
 
\t \t } 
 
\t t++; 
 
} 
 

 

 

 
function hladaj_fn(ev:Event):void 
 
{ 
 
\t \t for (var g:int =0; g<sizeOfArray; g++) 
 
\t \t { 
 
\t \t \t TextFields[g].backgroundColor = 0xFFFFFF; 
 
\t \t } 
 
\t \t txt_vysledok.text = ""; 
 
\t \t cislohladaj = parseInt(input_hladaj.text); 
 
\t \t myTimer.reset(); 
 
\t \t myTimer.start(); 
 
\t \t 
 
}

+0

Попробуйте проверить ваш 'numberArray [T]' не равно нулю, потому что вы забыли проверить ', если (т akmozo

ответ

0

Таймер тикает 10 раз. Длина массива может быть меньше 10. Когда t больше, чем длина массива, numberArray[t] возвращает значение null и появляется ошибка. Вы должны добавить условие после t++;:

if (t >= sizeOfArray) 
{ 
    myTimer.stop(); 
} 
Смежные вопросы