Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   NaN ошибка (http://www.flasher.ru/forum/showthread.php?t=81955)

0x45455844 30.06.2006 15:18

NaN ошибка
 
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
Читаем подробности здесь

Nirth 02.07.2006 04:56

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

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

Homo Sapiens 02.07.2006 13:48

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


Часовой пояс GMT +4, время: 14:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.