Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Один старт для двух баннеров (http://www.flasher.ru/forum/showthread.php?t=132351)

Pocahontas 10.11.2009 15:38

Один старт для двух баннеров
 
Люди помогите.Сделала два флэш баннера, нужно запустить на сайте их одновременно. То есть они должны одновременно стартовать, не зависимо от загрузки, быть взаимосвязаными. По кадрам все сделала как нужно, все совпадает. Но наш админ сказал,что они могут не загрузиться одновременно. И все пропадет. Я даже не знаю как называется этот код или как там его. Может кто поможет. Спасибо

mooncar 10.11.2009 15:45

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

В каждой флешке отслеживать полную загрузку всех кадров.
Как только полная загрузка произошла, нужно начинать периодически вызывать эту JS-функцию с помощью ExternalInterface (специальный класс ActionScript для общения с внешней средой ).
Воспроизведение должно быть временно приостановлено.
Стартовать можно будет при соблюдении двух условий - при условии полной загрузки себя самой и как только будет получен разрешающий параметр извне, от другой.
Тогда обе стартуют с гарантией одновременно и только тогда, когда в браузер загрузятся обе и полностью.

После старта вызов JS функции следует прекратить.

Как вариант, разрешающий параметр можно передать один раз, "дернув" JS-функцию, но отслеживать его получение периодически уже внутри каждой флешки.

Без программиста трудно будет обойтись.

Kuruki 10.11.2009 16:19

Можно еще с помощью LocalConnection
код в 1 кадре 1 флэшки
Код AS1/AS2:

stop();
 
var lc:LocalConnection = new LocalConnection();
lc.onStatus = function(e:Object)
{
    if (e.level == 'status')
        {
                play();
                onEnterFrame = null;
    }
}
onEnterFrame = function()
{
        lc.send("lc", "startPlay");
}

код в 1 кадре 2 флэшки
Код AS1/AS2:

stop();
 
var lc:LocalConnection = new LocalConnection();
lc.startPlay = function()
{
    play();
 
}
lc.connect("lc");

PS.
Цитата:

Я даже не знаю как называется этот код или как там его
))

mooncar 10.11.2009 16:24

Цитата:

Сообщение от Kuruki (Сообщение 864541)
Можно еще с помощью LocalConnection

Соединиться - да.
Но еще нужно отследить полную загрузку флешек.

Kuruki 10.11.2009 16:29

Думаю достаточно положить весь ролик в мувиклип, этот мувиклип - в первый кадр и проигрывать его (мувиклип)

mooncar 10.11.2009 19:36

Наверное, с LocalConnection будет проще.
А вот с EI, и без записи JS на странице:
http://www.us-pro.ru/mooncar/test/baner1.html
В первом кадре ролика 1:
Код AS1/AS2:

stop();
System.security.allowDomain('www.domen.ru');
import flash.external.*;
 
var otherBaner:String = 'baner2';
var allowPlay:Boolean = false ;
var nProgress:Number = setInterval(checkLoad, 10, this);
ExternalInterface.addCallback('allowThis', null, allowPlayThis);
var javaScriptFunction:String = 'function allow () {  if (navigator.appName.indexOf("Microsoft") != -1) { window["' + otherBaner + '"].allowThis();  } else { document["' + otherBaner + '"].allowThis(); }}';
 
function checkLoad (target):Void{
        var nLBytes:Number = target.getBytesLoaded();
        var nTBytes:Number = target.getBytesTotal();
        if (nLBytes >= nTBytes && nTBytes > 0) {
                ExternalInterface.call(javaScriptFunction); //после загрузки даем знать о готовности в другую флешку
                if (allowPlay) { //после получения разрешения от другой флешки стартуем эту и убираем ф-ю проверки
                        gotoAndPlay(2);
                        clearInterval(nProgress);
                }
        }
}
 
function allowPlayThis() {
        allowPlay = true ;
}

Во втором все то же самое, только
Код AS1/AS2:

var otherBaner:String = 'baner1';

И в параметрах публикации нужно id в object и name в embed прописать в двух местах, как в примере по ссылке.

rAmantiK 10.01.2010 18:36

mooncar Большое спасибо за пример,
но я еще больше залез в дебри незнания.

Мне ненужно чтоб флешки опрашивали друг друга на готовность.
мне просто нужно чтоб при наведении на кнопку1 в другой флешке вывелся текст кнопка 1. При наведении на 2-ю - текст кнопка 2.


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

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