PDA

Просмотр полной версии : NaN ошибка


0x45455844
30.06.2006, 15:18
Flash 8, AS2
класс, слинкованый с символом типа MovieClip из библиотеки
почему при нажатии выдает cIndex = NaN?
помогите..


class CViewMENU extends MovieClip{

var cIndex:Number;
var keyList:Object = null;
//-------------------
function CViewMENU(){
trace("CViewMENU constructor");
setActive();
}
//-------------------
function setActive(){
trace("CViewMENU.setActive");
this.cIndex = 0;
keyList = new Object();
keyList.onKeyDown = fOnKeyDown;
Key.addListener(keyList);
}
//-------------------
function setInactive(){
trace("CViewMENU.setInactive");
Key.removeListener(keyList);
}
//-------------------
function fOnKeyDown(){
trace("CViewMENU.onKeyDown");
switch(Key.getCode()) {
case Key.UP :
trace("onKeyDown UP");
this.cIndex--;
break;

case Key.DOWN :
trace("onKeyDown DOWN");
this.cIndex++;
break;
}
trace("cIndex "+ this.cIndex);
}

//-----------------------
}

olegn
30.06.2006, 15:42
Мое предположение следующее:
Потому что у тебя this.cIndex там, где ты его инкрементируешь и декрементируешь, воспринимается не в контексте свойства класса, а в контексте объекта KeyListener.
То есть интересущего тебя свойства просто не видно из слушателя
Проблема решается с помощью класса mx.utils.Delegate

Nirth
30.06.2006, 15:46
я сегодня ленивый, проверять влом, если то что сказал olegn не поможет, то просто перед и после изменения cIndex протрейсь его.

0x45455844
30.06.2006, 15:53
трейсил... он прав,
а с Delegate заработало, спасибо!
не думал что всё так извращено =)

etc
30.06.2006, 20:13
Это не извращение, это ООП

Nirth
30.06.2006, 20:15
На самом деле Delegate Это антипаттерн=) так что всеже извращение=)

Homo Sapiens
02.07.2006, 03:58
2 __etc - это очень отстойное извращение, такое же как и в JS.
Adobe - ну почему ты не сделаешь события a la .net???

Homo Sapiens
02.07.2006, 04:00
Кстати, для js такой геммор решается включением библиотеки prototype
Читаем подробности здесь (http://kropp.spb.ru/docs/prototype/)

Nirth
02.07.2006, 04:56
Не боись, AS\Flash будет неуклонно идти в сторону C#\NET =)
вконце концов конкуренты=)

PS ну или загнется=)

Homo Sapiens
02.07.2006, 13:48
Ммм, что-то мне подсказывает, что загнётся, тем более что идёт WPF...