LoaderInfo.width! = Stage.width в flex 3.5 - PullRequest
       24

LoaderInfo.width! = Stage.width в flex 3.5

0 голосов
/ 21 ноября 2011

Неверное поведение с flex 3.5. Вот минимальный код: build.xml target:

<target name="player">
        <mxmlc
            file="${APP_ROOT}/player.mxml"
            output="${APP_ROOT}/player_old.swf"
            keep-generated-actionscript="false"
            static-link-runtime-shared-libraries="true"
            debug="false">
            <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
            <source-path path-element="${FLEX_HOME}/frameworks"/>
            <compiler.library-path dir="${APP_ROOT}" append="true">
                <include name="lib"/>
            </compiler.library-path>
        </mxmlc>
</target>

player.mxml:

<?xml version="1.0"?>
<PlayerApp
xmlns="*"
xmlns:fx="http://www.adobe.com/2006/mxml">
</PlayerApp>

PlayerApp.as:

package {
import flash.display.Sprite;
import flash.media.Video;
import flash.events.*;

    public class PlayerApp extends Sprite {
        public function PlayerApp() {
            this.loaderInfo.addEventListener(flash.events.Event.INIT, init);
        }

        private function init(e:Event):void {
            this.addChild(new Video());
            trace("loaderInfo: "+root.loaderInfo.width+"x"+root.loaderInfo.height+"\n");
            trace("root stage: "+root.stage.width+"x"+root.stage.height+"\n");
        }
    }
}

объект:

<object width="320" height="240" id="_261178285" name="_261178285" data="player_old.swf" type="application/x-shockwave-flash">
<param name="allowfullscreen" value="true">
<param name="allowscriptaccess" value="always">
<param name="quality" value="high">
<param name="cachebusting" value="true">
<param name="wmode" value="opaque">
<param name="flashvars" value="config={irrelevant}">
</object>

Запуск всего этого с отладчиком приводит к следующей трассировке:

loaderInfo: 500x375

root stage: 320x240

Это приводит к ситуации, когда добавляемое в приложение Видео (содержащееся в Sprite) отображается только размером 250x154 или около того, так как 500x375 помещается в элемент 320x240, в котором он содержится на странице.

Вперед к вопросу: можно ли каким-либо образом избежать этой ошибки, чтобы swf продолжал работать с flash-версией 9.0.115. Я также не стал бы жестко кодировать размер файла build.xml, так как размер проигрывателя может измениться в ближайшем будущем.

Отказ от ответственности: я использую flex 3.5, так как flash player 9.0.115 должен поддерживаться И flash 9.0.115 должен поддерживаться из-за корпоративных клиентов (Даже 9.0.115 кажется слишком запрошенным некоторые.) Я также заметил, что могу скомпилировать .as без .mxml, но я оставил его здесь как есть.

1 Ответ

1 голос
/ 21 ноября 2011

Посмотрите на Stage.scaleMode соотв.свойство scale тегов object / embed .

...