IOS не выполняет команду ActionScript stop (), поэтому анимации повторяются - могу ли я как-то их остановить? - PullRequest
0 голосов
/ 14 декабря 2011

Я делаю слайд-презентации на iPad через Flex IOS packager 4.6. Слайды - это SWF-файлы, которые должны динамически загружаться во время выполнения, потому что они меняются ежедневно. Не могу скомпилировать их.

Мои слайды отлично загружаются анимациями и отлично смотрятся - но анимации на каждом цикле слайдов. Я не могу их остановить. Когда я декомпилирую слайд SWF, я вижу там команды stop () на каждой. IOS просто дует этим stop (), хотя (ПК нет). Интересно, что swf вообще загружается на IOS. Я бы подумал, что stop () предотвратит это. Они действительно загружаются все же. IOS просто не соблюдает stop (). Анимации играют красиво. Могу ли я остановить их другим способом? Может быть, внешне из моего основного кода Flex? Есть ли способ остановить Flash-анимацию без stop ()? Может быть, построить анимацию по-другому? Другой продукт, который я видел, решил эту проблему, поэтому я знаю, что решение существует. Когда они воспроизводят анимацию на IOS, они останавливаются.

1 Ответ

0 голосов
/ 15 декабря 2011

Попробуйте сделать ссылку на MovieClip после загрузки SWF-файла, используя событие complete SWFLoader.Ваш MovieClip будет доступен с event.target.content в полном обработчике событий.Затем вы можете напрямую вызвать stop() в MovieClip и посмотреть, работает ли это.Смотрите пример ниже:

<?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:Script>
        <![CDATA[

            public var mc:MovieClip;

            protected function swfloader1_completeHandler(event:Event):void
            {
                mc = event.target.content as MovieClip;
                mc.addEventListener(Event.ENTER_FRAME,newFrame);
                mc.stop();
            }

            protected function newFrame(event:Event):void
            {
                if( mc.currentFrame == mc.totalFrames )
                {
                    mc.stop();
                    mc.removeEventListener( Event.ENTER_FRAME, newFrame );
                }
            }

            protected function button1_clickHandler(event:MouseEvent):void
            {
                            mc.gotoAndPlay(1);
            }

        ]]>
    </fx:Script>

    <s:SWFLoader source="[REFERENCE TO YOUR SWF]" complete="swfloader1_completeHandler(event)"/>
    <s:Button label="Play" click="button1_clickHandler(event)" />

</s:Application>
...