Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы при инициализации классов во Flash CS5 (http://www.flasher.ru/forum/showthread.php?t=153472)

Parez 03.04.2011 15:53

Проблемы при инициализации классов во Flash CS5
 
Недавно перешёл на Flash CS5 и у меня появились проблемы. В конструкторе класса не желают видиться объекты на сцене. Например, у меня на сцене есть 2 объекта RadioButton. В конструкторе основного класса мне нужно добавить эти две RadioButton в объект RadioButtonGroup. Я добавляю... Потом, позднее мне надо обратиться к одной из RadioButton, входящих в группу (например через bGroup.selection). И вдруг оказывается, что я пытаюсь обратиться к объекту null. Насколько я помню, в CS4 таких проблем не возникало. Получается, теперь в инициализации класса нельзя обращаться к объектам на сцене?

dodoaav 03.04.2011 16:31

Проверь стоит ли галочка в Publish Settings -> AS3 -> Automaticly declare stage instances

Parez 03.04.2011 16:35

Стоит.

Если я обращаюсь к ним после инициализации, то всё работает нормально. Похоже проблема в другом, т.к., если я просто трасирую объект RadioButton на сцене, то он выводит [object RadioButton], как и должен. Может я что-то не так делаю?
Код AS1/AS2:

private var protectGroup:RadioButtonGroup = new RadioButtonGroup("protectGroup");
private var multiGroup:RadioButtonGroup = new RadioButtonGroup("multiGroup");
public function Editor()
{
        protectGroup.addRadioButton(protectYes_mc);
        protectGroup.addRadioButton(protectNo_mc);
        multiGroup.addRadioButton(multiYes_mc);
        multiGroup.addRadioButton(multiNo_mc);
        trace(protectGroup.selection);//null, хотя в инспекторе компонентов поставил одну кнопку выбранной
}

Похоже всё те значения, которые я выставляю в ComponentInspector в коде не учитываются. Или во всяком случае подгружаются только после инициализации. И это очень раздражает...

p.s.
Попробуйте, у кого CS5 стоит проделать эти действия. Я просто реально не могу понять в чём может быть проблема...

Всё получилось. Оказывается Flash сначала инициализирует код, а потом уже сцену.
Исправил, добавив событие Event.ADDED_TO_STAGE.

kseniya 03.04.2011 20:31

Добавляйте в группу после события ADDED
Код AS3:

                private var protectGroup:RadioButtonGroup = new RadioButtonGroup("protectGroup");
                private var multiGroup:RadioButtonGroup = new RadioButtonGroup("multiGroup");
                public function Editor() {
                        protectNo_mc.addEventListener(Event.ADDED, addRadio);
                        protectYes_mc.addEventListener(Event.ADDED, addRadio);
                }
                private function addRadio(e:Event):void{
                        protectNo_mc.removeEventListener(Event.ADDED, addRadio);
                        protectGroup.addRadioButton(e.currentTarget as RadioButton);
                        trace(protectGroup.selection);
                }



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

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