Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   name динамично созданых экземляров класса (http://www.flasher.ru/forum/showthread.php?t=140450)

gashhik 30.05.2010 00:49

name динамично созданых экземляров класса
 
В основном классе динамично в цикле создаются экземпляры других классов warrior и platform:

Код AS3:

public function the_game (level:int) {
  for (var i:uint=0; i<3; i++) {
        var warriors:warrior=new warrior;
        warriors.name="warrs_"+i;
        addChild(warriors);
 
        var platforms:platform=new platform;
        platforms.name="warrPlatforms_"+i;
        addChild(platforms);
  }
 addEventListener(Event.ENTER_FRAME,updateScene)
}
 private function updateScene(e:Event):void {
        trace(this["warrs_"+0])
// ReferenceError: Error #1069: Property warrs_0 not found on main.the_game and there is no default value.
}

как видите этим экземплярам я задал имена ["warrs_"+i] и ["warrPlatforms_"+i]. Но почему, если я тут же проверяю на наличие этих экземпляров с такими именами - флеш их не видит?
trace(this["warrs_"+0]) - ReferenceError: Error #1069: Property warrs_0 not found on main.the_game and there is no default value.

Хотя если при паблише посмотреть Debug/List Objects, то там есть:
Movie Clip: Frame=1 Target="_level0.the_game.warrs_0"

и если в самом классе warrior задать trace(this.name), то он укажет правильно имя.

Что сделать, что бы основной класс видел имена сабклассов и я смог к ним обращатся? Создавать массивы не очень удобно т.к. я планирую также обращатся к этим сабклассам по их имени и из других классов.

TanaTiX 30.05.2010 02:23

почитайте про getDefinitionByName
Но вообще рекомендую изменить подход: забыть про ас2, забыть про имена, заносить объекты в массив и оттуда их получать по индексу.

Bgg 30.05.2010 02:53

Интересно что быстрее, перебрать имена в векторе из 500 элементов или getChildByName?

etc 30.05.2010 13:31

Bgg, вам что-то мешает написать тесты?

Bgg 31.05.2010 15:42

etc, лень мешает :away:
Сегодня вечером напишу.


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

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