Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   getDefinitionByName не находит класс (http://www.flasher.ru/forum/showthread.php?t=166200)

Dron1564 31.08.2011 12:41

getDefinitionByName не находит класс
 
Здравствуйте ещё раз ))

Плз.. ответьте кто-нить, почему такая конструкция работает..
Код AS3:

 
trace( getQualifiedClassName(Level1) ); // "Levels::Level1"
trace( getDefinitionByName( getQualifiedClassName(Level1) ) ); //"[class Level1]"

а вот такая не работает...

Код AS3:

 
trace( getDefinitionByName( "Levels::Level1" ) ); // Ошибка

Error #1065: Переменная Level1 не определена.
at global/flash.utils::getDefinitionByName()

Нужно именно из строки переводить в класс, ибо количество уровней довольно большое....

bav 31.08.2011 12:51

Возможно следует указывать имя класса без указания пространства имен?
Код AS3:

trace( getDefinitionByName( "Level1" ) );


Dron1564 31.08.2011 12:53

Пробовал.. ;(

КорДум 31.08.2011 12:57

Класс не вкомпиливается. Где-то напишите просто
Код AS3:

Levels.Level1

Может это пакет? Тогда не ::, а точка.

Dron1564 31.08.2011 13:00

Хмм.. сейчас протрейсил...

Дело в том, что эти классы наследуются от другого "LevelBase" в этом же пакете(Levels ) ...
И он нормально трейсится, без ошибок..

Код AS3:

trace( getDefinitionByName( "Levels::LevelBase" ) ); // [class LevelBase]

Код AS3:

package Levels {
public class Level1 extends LevelBase{
...
    public function Level1(){
        ...
    }
...
}

P.s. точку тоже пробовал.. и "/", и ":"

fljot 31.08.2011 13:30

Level1 не вкомпилен во флешку. Чтобы он был определён (вкомпилирован) либо упомяните его где-то (как сказал кордум — так проще), либо читайте про аргументы компилятора.

Dron1564 31.08.2011 13:46

Т.е. перечислять все классы так или иначе придётся.... ладно.. всем спасибо...
Сделаю вот так:
Код AS3:

    private function getLvlClass( lvl:String ):Class{
        switch( lvl ){
            case "1": return Level1;
            case "2": return Level2;
            ...
        }
        return null;
    }


2Sun 31.08.2011 15:55

Можно просто одной переменной присвоить их все циклом и в конце ее занулить. Этого будет достаточно

КорДум 31.08.2011 16:29

2Sun, чего?

in4core 31.08.2011 16:32

Цитата:

2Sun, чего?
Код AS3:

var class:*;
for(var i:int = 0 ; i < 100; i++) class = new Class(Level+'i')

чей то типа того он хотел сказать. тока не помню как там прально писать


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

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