Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   getDefinitionByName Chrome Error #1009 (http://www.flasher.ru/forum/showthread.php?t=211234)

hellpasp 16.07.2015 13:41

getDefinitionByName Chrome Error #1009
 
добрый день

хотел бы сделать прелоадер для веб App
использую IntelliJ

в additional compiler options поставил

-frame=label,MyMainClass



PreloaderClass.as (document class)
Код AS3:

 
public class PreloaderClass extends MovieClip
        {
                private var _firstEnterFrame:Boolean;
                private var _percentLoaded:TextField;
 
                public function PreloaderClass()
                {
                        addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
 
                        stop();
                }
 
                private function addedToStageHandler(e:Event):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
 
                        startPreloading();
                }
 
                public function startPreloading():void {
 
                        _firstEnterFrame = true;
 
                        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                }
 
                private function enterFrameHandler(event:Event):void {
 
                        if (whetherLoaded()) {
 
                                preloadingCompleteHandler();
                        }
                }
 
 
                private function getPercentLoaded():Number
                {
                        return root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal;
                }
 
                private function whetherLoaded():Boolean
                {
                        return getPercentLoaded() >= 1;
                }
 
                private function preloadingCompleteHandler():void
                {
                        finalize();
                        initMainClass();
                }
 
                private function finalize():void {
 
                        removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
                }
 
                private function initMainClass():void {
 
                        nextFrame();
 
                        const MAIN_CLASS:String = "MyMainClass";
 
                        var MainClass:Class = getDefinitionByName(MAIN_CLASS) as Class;
 
                        if (MainClass == null) {
 
                                throw new Error("There is no class " + MAIN_CLASS);
                        }
 
                        var main:DisplayObject = new MainClass() as DisplayObject;
 
                        if (main == null) {
 
                                throw new Error("Main class should inherit from Movie Clip or Sprite");
                        }
 
                        addChildAt(main, 0);
                }

работает отлично в Mozilla
к сожалению в Chrome происходит ошибка
TypeError: Error #1009
(в момент создания new MainClass())

почему?

alexandrratush 16.07.2015 15:40

Вы пробовали просто прописать в Main-классе [Frame(factoryClass='Прелоадер')]?
Никогда не встречал описанный вами способ.

alatar 16.07.2015 16:07

@alexandrratush Этот способ работает только в компиляторе из FlexSDK, в ASC 2.0 (AIR SDK) этот метатег не работает.

callme 16.07.2015 18:37

Скопировал ваш код, у меня в последнем хроме показывается кружок.

Код AS3:

package
{
        import flash.display.Sprite;
 
        public class MyMainClass extends Sprite
        {
                public function MyMainClass()
                {
                        super();
 
                        graphics.beginFill(0);
                        graphics.drawCircle(100, 100, 100);
                }
        }
}



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

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