Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Перемотка подгруженного swf, в котором всего 1 кадр (http://www.flasher.ru/forum/showthread.php?t=114663)

Artur Sh 05.08.2008 17:40

Перемотка подгруженного swf, в котором всего 1 кадр
 
Добрый день.
Проблема такая: есть внешний swf в виде картинок, меняющихся под голос диктора. Но в этом ролике всего 1 кадр и картинки меняются программно (с помощью setInterval).
Подгружаю внешний ролик в основную флэшку с помощью loadMovie. Хочу организовать управление (плэй, пауза, перемотка). Но для него даже stop() не работает.
Можно ли что-то придумать? Или его никак не остановишь / не перемотаешь?

hobbit1 05.08.2008 17:57

Можно, но только для этого функция setInterval должна находиться в основном файле, я бы порекомендовал, вообще написать это в одном файле, и права управления выше и мобильность выше....

qazwsx 05.08.2008 18:07

Что значит писать в 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 ролика, но обломался.

Учитывая приведенный мною код, есть какие-нибудь советы, как лучше поступить?

qazwsx 05.08.2008 18:53

CTRL+A, Delete, #import brain; Действительно я бы все переписал на твоем месте. Стоит получше продумать архитектуру... Но конкретных советов сейчас давать небуду).

Artur Sh 05.08.2008 19:04

Набросай хотя бы в общих словах, как бы поступил в такой ситуации сам, пожалуйста.


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

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