Невозможно замаскировать Stage3D SWF в загрузчике

Работая в FlashBuilder, я создаю мобильное приложение AS3, которое использует Loader для отображения локального SWF-файла. Он маскирует загрузчик, поэтому показывает только окно 640x480. Это работало нормально, используя старый SWF-файл (игра Flixel, не Stage3D).

Затем я попытался сделать это с помощью SWF-файла с поддержкой Stage3D. Это не удалось запустить, потому что приложение не было настроено для работы в "прямом" режиме рендеринга (до этого момента оно находилось в автоматическом режиме). Это позволило приложению работать, но SWF-файл теперь игнорирует маску загрузчика и отображается на всей стадии.

Разве невозможно замаскировать SWF-файлы Stage3D при такой загрузке? Загрузка выглядит так:

        public function FlixelTest()
    {
        super();

        stage.align = StageAlign.TOP_LEFT;
        stage.scaleMode = StageScaleMode.NO_SCALE;
        Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

        myLoader.x = (stage.fullScreenWidth-640)/2;
        myLoader.y = (stage.fullScreenHeight-480)/2;

        var url:URLRequest = new URLRequest("stage3dswf.swf"); // in this case both SWFs are in the same folder
        myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadProdComplete);
        myLoader.load(url);    // load the SWF file

        addChild(myLoader);
    }

    private function loadProdComplete(e:Event):void{
        var gameMask : Shape = new Shape;
        gameMask.graphics.beginFill(0xffcc00);
        gameMask.graphics.drawRect(myLoader.x,myLoader.y,640,480);  
        gameMask.graphics.endFill();
        myLoader.content.mask = gameMask;
    }           

1 ответ

Решение

Как вы можете прочитать в документации Adobe по Stage3D, специальные слои Stage3D расположены "позади" обычной сцены, используемой для 2D-контента.

Поскольку любая маска, применяемая на 2D-этапе, существует в другом списке отображения, невозможно использовать 2D-маски для содержимого Stage3D. Если это вообще возможно, единственный способ получить аналогичные результаты - это использовать 3D-слои и альфа-маски в контексте Stage3D.

Другие вопросы по тегам