Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обращение к объекту, объявленному в другой функции. (http://www.flasher.ru/forum/showthread.php?t=140972)

MidnightOne 11.06.2010 22:16

Обращение к объекту, объявленному в другой функции.
 
Добрый вечер.

Как можно обратиться к объекту, созданному в другой функции?

Следующий код выдаёт 2 ошибки, связанные с обращением к нему.

Код AS3:

function someFunc ():void{
 
        var MessageBox:MB_YN = new MB_YN();
        MessageBox.name = "MB";
        MessageBox.alpha = 0;
        MessageBox.x = 350;
        MessageBox.y = 270;
        MessageBox.txt.text = "Press No To completely skip this tutorial."
        stage.addChild(MessageBox);
 
        MessageBox.y_btn.addEventListener(MouseEvent.CLICK, tutMsgBoxHandler);
        MessageBox.n_btn.addEventListener(MouseEvent.CLICK, tutMsgBoxHandler);
 
        TweenLite.to(MessageBox, 0.6, {alpha:1});
}
 
function tutMsgBoxHandler (e:MouseEvent):void{
 
        stage.getChildByName("MB").y_btn.removeEventListener(MouseEvent.CLICK, tutMsgBoxHandler);
// 1119: Access of possibly undefined property y_btn through a reference with static type flash.display:DisplayObject.
 
        stage.getChildByName("MB").n_btn.removeEventListener(MouseEvent.CLICK, tutMsgBoxHandler);
// 1119: Access of possibly undefined property n_btn through a reference with static type flash.display:DisplayObject.
 
        if (e.target.name == "y_btn"){
 
                TweenLite.to(stage.getChildByName("MB"), 0.6, {autoAlpha:0});
 
                //..........
        } else {
 
                //..........
        }
}

Это не созданный мной класс, а просто объект (мувиклип) в библиотеке, с Import for AS.
Внутри мувиклипа две кнопки: y_btn , n_btn и текстовое поле - txt.

-De- 11.06.2010 23:26

Всё-таки ви тгавите и надо больше доки читать.
getChildByName возвращает что? - DisplayObject. У DisplayObject есть свойство y_btn и n_btn? Нет. Вот об этом ошибка и говорит.
Но мы считаем, что обьект, который возвращает getChildByName на самом деле MB_YN, наследник DisplayObject, в котором есть свойства y_btn и n_btn. Так что приведём то, что возвращает getChildByName к MB_YN и будет нам щасье
Код AS3:

(stage.getChildByName("MB") as MB_YN).y_btn.removeEventListener(MouseEvent.CLICK, tutMsgBoxHandler);

А вообще я не особо понимаю такое использование getChildByName. Не для того оно, по-моему. Вынес var MessageBox:MB_YN за функцию, сделал private var MessageBox:MB_YN; сделал в функции MessageBox = new MB_YN(); И в tutMsgBoxHandler тупо MessageBox.y_btn.removeEventListener(MouseEvent.CLICK, tutMsgBoxHandler);

MidnightOne 12.06.2010 01:53

Спасибо.


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

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