Просмотр полной версии : Перемотка подгруженного swf, в котором всего 1 кадр
Artur Sh
05.08.2008, 17:40
Добрый день.
Проблема такая: есть внешний swf в виде картинок, меняющихся под голос диктора. Но в этом ролике всего 1 кадр и картинки меняются программно (с помощью setInterval).
Подгружаю внешний ролик в основную флэшку с помощью loadMovie. Хочу организовать управление (плэй, пауза, перемотка). Но для него даже stop() не работает.
Можно ли что-то придумать? Или его никак не остановишь / не перемотаешь?
Можно, но только для этого функция setInterval должна находиться в основном файле, я бы порекомендовал, вообще написать это в одном файле, и права управления выше и мобильность выше....
Что значит писать в 1ом фаиле? У него каждый ролик это по сути MovieClip с альтернативной возможностью проигрывания анимации, реализованной в виде видимо перехода от одной картинке к другой с определенным интервалом... Конечно было бы лучше сразу реализовать в каждой свфке методы типо плей, стоп и тп т.е Сделать класс разширяющий муви клип. Но если уже нет возможности менять swf ки то можно тупо удалять интервал и заниматся веселым ооп в силе AS1
Artur Sh
05.08.2008, 18:31
Исходники swf есть. Но реализовано там так, что картинки png грузятся из библиотеки в определенные моменты времени, заданные в массиве, поверх некоторого бэкграунда, который тоже меняется со временем.
function fadeIn(){
clearInterval(fadeInInterval);
if (Select._alpha<90) {
Select._alpha+=10;
fadeInInterval = setInterval(this, "fadeIn",20);
}
}
function fadeOut(){
clearInterval(fadeOutInterval);
if (Select._alpha>5) {
Select._alpha-=10;
fadeOutInterval = setInterval(this, "fadeOut",20);
}
}
function executeCallback(param:String) {
Select.attachBitmap(BitmapData.loadBitmap(param), 0);
clearInterval(intervalId);
clearInterval(fadeOutInterval);
fadeIn();
if(count < maxCount) {
count++;
dur = duration[count]-duration[count-1];
fadeOutInterval = setInterval(this, "fadeOut", dur-220);
intervalId = setInterval(this, "executeCallback", dur, pics[count]);
}
}
if(intervalId != null) {
clearInterval(intervalId);
}
intervalId = setInterval(this, "executeCallback", duration[count], pics[count]);
массив duration содержит время появления очередной картинки
массив pics - имена картинок
функция executeCallback меняет картинку и перезапускает таймер
fadeIn, fadeOut - функции плавного появления и исчезания
В общем перейти к конкретной картинке и перевести звук на определенную позицию не тривиально. Думал проще будет управлять, если грузить эту "презентацию" в виде внешнего swf ролика, но обломался.
Учитывая приведенный мною код, есть какие-нибудь советы, как лучше поступить?
CTRL+A, Delete, #import brain; Действительно я бы все переписал на твоем месте. Стоит получше продумать архитектуру... Но конкретных советов сейчас давать небуду).
Artur Sh
05.08.2008, 19:04
Набросай хотя бы в общих словах, как бы поступил в такой ситуации сам, пожалуйста.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.