Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Flex: остановить проигрывание SWF (http://www.flasher.ru/forum/showthread.php?t=136358)

patap 15.02.2010 16:09

Flex: остановить проигрывание SWF
 
Есть такой код
Код AS3:

[Embed(source="../image/floor.swf")]
private var prisonFloor:Class;
 
// тут запускаем swf
var floorClip:MovieClip = MovieClip(new prisonFloor());
gateFloor.source = floorClip;
floorClip.play();

как остановить проигрывание swf. Нужно именно программно остановить, что-то типа: если дошли до последнего кадра - остановить.

wvxvw 15.02.2010 16:34

Подписаться на enterFrame, посчитать кадры и остановить.

patap 15.02.2010 16:53

wvxvw, думаю я правильно понял. Вот я добавил, но работать не хочет. В чем ошибка?
Код AS3:

floorClip.addEventListener(Event.ENTER_FRAME, checkFrm);
 
public function checkFrm(event:Event):void {
  if (event.target.currentFrame == event.target.totalFrames) {
    event.target.stop();
  }
}


wvxvw 15.02.2010 17:25

Ну, может проигрывается не основная шкала клипа, а какой-то из вложеных... это уже у дизайнера надо спрашивать :)

patap 15.02.2010 17:26

также я думаю у меня не происходит реакции на addEventListener

если в checkFrm добавить только строку event.target.stop(); , то swf все равно не останавливается

Добавлено через 1 минуту
wvxvw, так дело в том, что я все сам делаю (честно говоря не очень в этом соображаю, у меня профиль PHP)

Слой у меня во Flash одни. К примеру если запустить Flash и просто наделать фреймов и сохранить - вот в принципе моя анимация и есть, ни каких там вложенностей или чего-то хитрого нет

Добавлено через 52 минуты
еще одно, если сделать алерт

Код AS3:

Alert.show(floorClip.totalFrames.toString());

выводит почему-то ноль...

Добавлено через 1 час 48 минут
быть может я неправильно сделал SWF?

Файл делал во Flash 5. Насоздавал фреймов, потом сделал Export Movie и получил SWF.

wvxvw 16.02.2010 04:08

Ого... пятый флеш... а где вы его взяли? :) или в смысле CS5 - хотя тоже, это ж еще закрытая бета, у меня его еще нет... :) Я думаю, что флексовый компилятор не проверяли на совместимость с такими старыми версиями... это ж было на заре человечества, году так в 2000... а может и раньше :)
В смысле, текущая версия флеша - 10, на подходе - 11.

patap 16.02.2010 11:13

именно Flash 5 :) другого под рукой не было. Т.е вполне возможно, что проблема именно в нем? ладно для начала найдем по-новее

Добавлено через 7 часов 12 минут
установил Flash CS3. в нем экспортировал swf. проблема таже.

В одном месте подсказали: AVM - разные.
Толком не могу понять что это значит, и как состыковать это

Добавлено через 8 часов 39 минут
вернее будет: посоветуйте на какие моменты обращать внимание, чтобы избежать таких вот нестыковок

wvxvw 19.02.2010 15:42

AVM - ActionScript Virtual Machine, их есть две AVM1 и AVM2. AVM1 - это ActionScript 1 - 2, AVM2 - ActionScript 3. Если вы загружаете флешку скомпилированую для AVM1 в AVM2, то она там видится как AVM1Movie (который не является наследником MovieClip), и у него нет свойств типа currentFrame или методов nextFrame() / gotoAndPlay() и т.п.
Если в AVM1Movie нету никаких скриптов, его проще переделать в AVM2 - нужно будет распарсить его и заменить версию. Если в нем есть скрипты, тогда вам прийдется делать обертку на AS2 и из этой обертки общаться через LocalConnection с загруженым клипом. Второй вариант я когда-то делал:
http://code.google.com/p/e4xu/source...#svn/trunk/as2
+
http://code.google.com/p/e4xu/source...vxvws/lcbridge
или
http://e4xu.googlecode.com/files/avm1bridge.zip

Первый вариант:
http://code.google.com/p/as3-classes...cibleLoader.as

Но проще всего - не работать со старыми SWF :)

patap 19.02.2010 18:00

wvxvw, спасибо за ответ. Просветился немного
но по чему так все сложно... ))
ну суть я вроде уловил. Получается, что у меня SWF поддерживает AVM1, и при подгрузке данного файла во Flex - теряются все его свойства. Следовательно нужно скомпилировать Swf под AVM2, тогда и отпадет потребность в переконвертировании AVM1 в AVM2, парсинг и т.д.

Я так полагаю что у Flash CS4 должна быть такая возможность - компилить SWF под AVM2. Если да, то как?

wvxvw 19.02.2010 19:40

>> Я так полагаю что у Flash CS4 должна быть такая возможность - компилить SWF под AVM2. Если да, то как?
Ctrl + Shift + F12 > Flash > ActionScript Version > выбрать Action Script 3.


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

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