Можно ли приостановить воспроизведение SWF-файла в Adobe Flex?Как? - PullRequest
3 голосов
/ 09 июня 2010

Я просто хочу знать, можно ли приостановить воспроизведение SWF-файла в Adobe Flex?У меня есть загрузчик SWF, и он воспроизводит мой SWF-файл, однако он не имеет никакой возможности (или встроенной функции), которая приостанавливает файл.

Может кто-нибудь помочь мне с этим, пожалуйста?Я буду признателен за некоторый код для начала.:) Заранее спасибо.

1 Ответ

1 голос
/ 09 июня 2010

Вы можете использовать stop();

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

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            private function playHandler():void {

                var file_mc:MovieClip = fileswf.content as MovieClip;
                file_mc.play();

            }

            private function pauseHandler():void {

                var file_mc:MovieClip = fileswf.content as MovieClip;
                file_mc.stop();
            }

            private function pauseat(frame:Number):void {

                var file_mc:MovieClip = fileswf.content as MovieClip;
                file_mc.gotoAndStop(frame);
            }

        ]]>
    </fx:Script>


    <mx:SWFLoader x="0" y="0" source="abc.swf" id="fileswf"/>
    <s:Button x="0" y="200" label="Play" id="playbtn" click="playHandler()"/>
    <s:Button x="100" y="200" label="Pause" id="pausebtn" click="pauseHandler()"/>
    <s:Button x="100" y="250" label="Pause at A" id="pauseAbtn" click="pauseat(1)"/>
    <s:Button x="200" y="250" label="Pause at B" id="pauseBbtn" click="pauseat(2)"/>
    <s:Button x="300" y="250" label="Pause at C" id="pauseCbtn" click="pauseat(3)"/>
    <s:Button x="400" y="250" label="Pause at D" id="pauseDbtn" click="pauseat(4)"/>
    <s:Button x="500" y="250" label="Pause at E" id="pauseEbtn" click="pauseat(5)"/>

</s:Application>

Для полноты я поместил в метод для @Embed (невозможно получить оригинальный SWF напрямую через SWFLoader [время выполнения или время компиляции], но вы можете загрузить байты из класса)

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               minWidth="955" minHeight="600" addedToStage="init()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[

            [Embed(source="abc.swf", mimeType="application/octet-stream") ]
            public var abc_cls:Class;

            public var ldr:Loader = new Loader();

            private var file_mc:MovieClip;

            protected function init():void
            {
                ldr.loadBytes( new abc_cls() as ByteArray );
                ldr.contentLoaderInfo.addEventListener(Event.INIT, onSwfLoaded);
                swfcontainer.addChild(ldr);  
            }

            private function onSwfLoaded(e:Event):void {
                file_mc = ldr.content as MovieClip;
            }

            private function playHandler():void {

                file_mc.play();

            }

            private function pauseHandler():void {

                file_mc.stop();
            }

            private function pauseat(frame:Number):void {


                file_mc.gotoAndStop(frame);
            }       

        ]]>
    </fx:Script>


    <mx:Image id="swfcontainer" />
    <s:Button x="0" y="200" label="Play" id="playbtn" click="playHandler()"/>
    <s:Button x="100" y="200" label="Pause" id="pausebtn" click="pauseHandler()"/>
    <s:Button x="100" y="250" label="Pause at A" id="pauseAbtn" click="pauseat(1)"/>
    <s:Button x="200" y="250" label="Pause at B" id="pauseBbtn" click="pauseat(2)"/>
    <s:Button x="300" y="250" label="Pause at C" id="pauseCbtn" click="pauseat(3)"/>
    <s:Button x="400" y="250" label="Pause at D" id="pauseDbtn" click="pauseat(4)"/>
    <s:Button x="500" y="250" label="Pause at E" id="pauseEbtn" click="pauseat(5)"/>

</s:Application>

Теперь я уверен, что это был код, из-за которого проблема извинялась. Так что если вам нужен ваш SWF как часть вашего файла ниже, то хитрость.

Последний способ получить активы в гибком рабочем пространстве - это использовать метод активов SWC .

Удачи! : D

...