Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Импорт из *.swc - не работает getDefinitionByName (http://www.flasher.ru/forum/showthread.php?t=112010)

mastaflow 15.05.2008 02:43

Импорт из *.swc - не работает getDefinitionByName
 
Столкнулся с такой проблемой.
Во Flash CS3 есть пара мувиклипов - экспортировал все это дело в swc, чтобы использовать потом во Flex Builder'e 3. Клипы создаются - все нормально, но вот есть такой случай:
Код:

package {
        import flash.display.DisplayObject;
        import flash.display.Sprite;
        import flash.utils.getDefinitionByName;
       
        public class Tmp extends Sprite {
               
                public function Tmp() {
                        //var t:MyMC = new MyMC();
                        var ClassReference:Class = getDefinitionByName("MyMC") as Class;
                        var mc:DisplayObject = new ClassReference();
                        this.addChild(mc);
                }
        }
}

При запуске выдается следующая ошибка:
Код:

ReferenceError: Error #1065: Variable MyMC is not defined.
        at global/flash.utils::getDefinitionByName()
        at Tmp()[D:\Projects\FlexProjects\Tmp\Tmp.as:10]

При этом, если убрать комментарий в коде, то ошибки не возникает.
Так же все работает, если писать название класса типа "flash.display.Sprite".
Как сделать, чтобы работал вариант, где строка закоментирована?
У меня мыслей нет, посему прошу Вашей помощи:)

DarkLight 15.05.2008 03:48

Когда мувиклип увязываем на класс, определения которого нет, флеш при компиляции его генерирует автоматически. А надо создать соответствующие классы самому(там просто написать что он наследуется от Sprite). После этого прописать их в импорте и спокойно использовать.

mastaflow 15.05.2008 17:35

Честно говоря не понял..
такой-то вариант работает
Код:

       
public function Tmp() {
        var mc:MyMC = new MyMC();
        this.addChild(mc);
}

через getDefinitionByName работает во Flash CS3, а во Флексе - нет

Можно пример класса?

mastaflow 15.05.2008 21:32

Погуглил, нашел такой вариант решения. По-моему самый простой
Код:

package {
        import flash.display.DisplayObject;
        import flash.display.Sprite;
        import flash.utils.getDefinitionByName;

        MyMC;//компилит данный класс

        public class Tmp extends Sprite {
               
                public function Tmp() {
                        var ClassReference:Class = getDefinitionByName("MyMC") as Class;
                        var mc:DisplayObject = new ClassReference();
                        this.addChild(mc);
                }
        }
}



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

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