Просмотр полной версии : Запуск двух .swf файлов одновременно!
Нужно что б на сайте два мувика начинали играть одновременно.
Но есть одна проблемка один мувик несколько килобайт, а второй больше 300. Получаеться, что маленький загрузиться и начнет проигрывание. Выходит надо что б он стоял на стопе и узнавал когда загрузиться другой мувик, и как только другой начнет свой первый кадр, то он начнет и свое проигрывание. Вроде все просто, но как это написать в AS не знаю. Help...
ок, как законектить один с другим понял. сенкс. тепер как сделать чтоб он начал играть когда тот загрузиться?
Я бы реализовал с помощью external interface.
Один загружается -> через js постоянно узнаёт загрузился ли второй -> как только загрузился стартует и через js говорит второму "GO!".
И все дела... :) Линк ниже \|/
FLASHIMP - Смотри здесь:) (http://flashimp.blogspot.com/2007/03/external-interface.html)
я конечно с ява дружу но как из "определения позиции мыши на странице джава скриптом и возврата во флэш." сделать - "Один загружается -> через js постоянно узнаёт загрузился ли второй -> как только загрузился стартует и через js говорит второму "GO!"" даже не представляю...
ок, как законектить один с другим понял. сенкс. тепер как сделать чтоб он начал играть когда тот загрузиться?
А вы грузите через MovieClipLoader. Вставляйте маленькие флешки, которые грузят в себя большие.
Или: флешка, загрузившись, подает сигнал: "готово" и ждет ответа на другой волне. Если ответа нет, ждет дальше. Если в ответ "поехали", то поехали.
Что мешает проверять onStatus у LocalConnection?
а с кого мне устанавливать конект? например с того который первый загрузиться. тогда он делает конект и проверяет загрузилься полностью или нет. и потом начнет проигрываться. я только не пойму, что написать в тот файл который будет грузиться и который мы будем проверять...
вот все что нашел.
для проверки статуса:
sendingLC = new LocalConnection();
sendingLC.onStatus = function(infoObject)
{
if (infoObject.level == "error")
{
trace("Connection failed.");
}
}
sendingLC.send("receivingLC", "methodName");
получатель:
var incoming_lc:LocalConnection = new LocalConnection();
incoming_lc.connect("lc_example");
incoming_lc.methodToExecute =
function(param:String):Void { sentMessage_txt.text = param; };
посылатель:
var outgoing_lc:LocalConnection = new LocalConnection();
send_btn.onRelease =
function(Void):Void { outgoing_lc.send("lc_example", "methodToExecute", userMessage_txt.text);};
как это в кучу сбить?
просто у меня и получатель и посылатель один...
походу нужно узнать началься ли 1 кадр в боьшем мувике и если да то больший мувик должен сказать меншему что б тот тоже начал первый кадр....запутано...
нашел что надо...изучаю - http://www.flashgroup.net/forum/archive/index.php?t-3178.html
чет не выходить. взял вот это
stop();
_level0.onEnterFrame = function () {
a = _level0.getBytesLoaded();
b = _level0.getBytesTotal();
if (a == b) {
delete this.onEnterFrame;
dasconnection = new LocalConnection ();
dasconnection.send("mb", "start");
_global.set_up_connections();
_root.anm_mc.gotoAndPlay(2);
}
};
_global.set_up_connections = function () {
dasconnectionA = new LocalConnection ();
dasconnectionA.gotofarm = function (param) {
_root.anm_mc.gotoAndPlay(param);
};
dasconnectionA.startover = function () {
_root.anm_mc.gotoAndPlay(2);
};
dasconnectionA.connect("mb2");
};
вставил в 1 мувик, который быстрее гурзиться. и в нем муви клип сделал инстант нейм "anm_mc"
потом этот код вставил во второй мувик, который дольше грузиться
stop();
dasconnection = new LocalConnection ();
dasconnection.start = function () {
_root.anm_mc.gotoAndPlay(2);
};
dasconnection.connect("mb");
_global.sendframe = function (parameter) {
dasconnection.send("mb2", "gotofarm", 2);
};
_global.startover = function () {
dasconnection.send("mb2", "startover");
};
не пашет. пробовал еще кое что, все не пашет. что не так?
Izoniz, достаточно нажать кнопку http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif в последнем сообщении и отредактировать его, а не создавать новые.
Простыню кода не читал, но проверка очень простая — если error, шлем запрос ещё раз, скажем, через 100 мс. Как только error исчезнет — можно играть. Естесственно в ролике, который опрашиваем, должен быть коннект.
По-моему, оба ролика должны подавать сигналы друг другу. Не факт, что тот, который меньше весит, столько и будет весить после переделки, и не факт, что он первым загрузится. По мне каждый ролик по готовности подает сигнал на волне соседа. Если ответа не слышит, error, ждет команды от того. Два LocalConnection.
Одного достаточно. Один из роликов ждет получения команды, а второй проверяет статус. При успешном статусе и получении команды оба начинают играть. И неважно, какой из двух первым загрузился.
я спрашивал что не так делаю...а тут ответы хм...((
я ж там нашел пример точно такого действия как мне надо. только там пашет а у меня нифига... вот я и спрашиваю что не так? можент я мувику не тому присваиваю нейм или ваще не в тот .свф ставлю код?
Одного достаточно. Один из роликов ждет получения команды, а второй проверяет статус. При успешном статусе и получении команды оба начинают играть. И неважно, какой из двух первым загрузился.
Один проверяет, если нет, то ждет и проверяет, потом ждет и проверяет и т.д, скажем 10 раз в сек.
Мой вариант: загрузился, подал сигнал. Если нет, значит я первый, сижу и жду. Второй загрузился, подал сигнал. Если да, поехали оба. Если нет, значит я первый - см. выше. Нет периодически вызываемой функции.
мувик1:
var incoming_lc:LocalConnection = new LocalConnection();
incoming_lc.connect("lc_1");
incoming_lc.readyAndGo = function(){ _root.play(); };
var outgoing_lc:LocalConnection = new LocalConnection();
outgoing_lc.onStatus = function(infoObject){
if (infoObject.level == "status") _root.play();
}
outgoing_lc.send("lc_2", "readyAndGo" );мувик2:
var incoming_lc:LocalConnection = new LocalConnection();
incoming_lc.connect("lc_2");
incoming_lc.readyAndGo = function(){ _root.play(); };
var outgoing_lc:LocalConnection = new LocalConnection();
outgoing_lc.onStatus = function(infoObject){
if (infoObject.level == "status") _root.play();
}
outgoing_lc.send("lc_1", "readyAndGo" );
так примерно. Писал на коленке, use at you own risk
Что называется, найдите в коде 3 отличия))
Бессмысленно определять, кто первый. Зачем?
Бессмысленно определять, кто первый. Зачем?
Чтобы эфир не засорять. И интервалы не сажать. Только два сигнала.
И код отличается только двумя параметрами - идентификаторами LC.
Можно эти параметры передавать через FlashVars. Проще.
Если мувиков 3 и больше тут - можно и подумать. Хотя можно по кругу сигнал передавать..
Гм, не понимаю. Один LC стучится до другого, пока не достучится. Как достучался, и первый и второй пускают воспроизведение. Лично я бы сделал именно так. Достаточно односторонней связи.
Aziz Zaynutdinoff
27.04.2007, 15:02
А если так:
по умолчанию оба мувика на стопе. Создаём слушатель-каунтер, который проверяет равно ли кол-во загруженных клипов общему числу загружаемых. Грузим их через MovieClipLoader и на метода onLoadInit() передаём на слушателя я загрузился «я загрузился – увеличивай число загруженных». Как только число загруженных == числу загружаемых, пробегаемся по всем мувикам перебором и стартуем их.
В этом случае можно запускать не два, а более.
Molecula
27.04.2007, 15:26
Лучше одностороння.
Если мува три и больше - лучше что бы маленький стучался к большим, пока не откроют. Когда команда в сборе (т.е. переменная = количеству мувов) то все едут играть в футбол.
Или попробуйте на примере с пивом.
Нужно что бы 11 человек собрались и выпили пиво.
Один начинает и собирает всех.
Задачи о множественной загрузке роликов не стояло.
Гм, не понимаю. Один LC стучится до другого, пока не достучится. Как достучался, и первый и второй пускают воспроизведение. Лично я бы сделал именно так. Достаточно односторонней связи.
Да вот именно, мне его просто жалко, что он бедный стучится - стучится, а ему никто не отвечает. Так стукнул раза, никто не отозвался - ну, ждем сигнала с другой стороны. Даешь равноправие мувиков! :mad:
загрузился «я загрузился – увеличивай число загруженных». Как только число загруженных == числу загружаемых, пробегаемся по всем мувикам перебором и стартуем их.
«я загрузился – увеличивай число загруженных и я жду ответа на такой-то волне»
Один проверяет, если нет, то ждет и проверяет, потом ждет и проверяет и т.д, скажем 10 раз в сек.
Мой вариант: загрузился, подал сигнал. Если нет, значит я первый, сижу и жду. Второй загрузился, подал сигнал. Если да, поехали оба. Если нет, значит я первый - см. выше. Нет периодически вызываемой функции.
мувик1:
var incoming_lc:LocalConnection = new LocalConnection();
incoming_lc.connect("lc_1");
incoming_lc.readyAndGo = function(){ _root.play(); };
var outgoing_lc:LocalConnection = new LocalConnection();
outgoing_lc.onStatus = function(infoObject){
if (infoObject.level == "status") _root.play();
}
outgoing_lc.send("lc_2", "readyAndGo" );мувик2:
var incoming_lc:LocalConnection = new LocalConnection();
incoming_lc.connect("lc_2");
incoming_lc.readyAndGo = function(){ _root.play(); };
var outgoing_lc:LocalConnection = new LocalConnection();
outgoing_lc.onStatus = function(infoObject){
if (infoObject.level == "status") _root.play();
}
outgoing_lc.send("lc_1", "readyAndGo" );
так примерно. Писал на коленке, use at you own risk
Что называется, найдите в коде 3 отличия))
не пашет
или может я че ни так делаю...раскажите подробнее
Ну еще stop() добавить стоит, а так только что проверил - у меня пашет.
Вот смотри. Открываешь один мувик, он стоит. Открываешь другой - оба поехали. Закрываешь любой - второй доиграет до 1 кадра и застрянет, пока первый снова не откроешь.
Мувики постепенно "разбегаются", ну так немного покумекать.. gotoAndPlay вместо play поставить например.. Если это вообще нужно.
ну стоп я добавлял. а открывание у меня на страничке происходить. снчала 1 грузиться и по идее должен ждать второй но почему-то не ждет. счас твой исходник поковыряю...
Поставь все это после загрузки. Видимо, флешка еще не загрузилась целиком, а коннект уже установлен.
просто мистика...сначала открыл твои свф файли все пошло. потом пробовал себе такое ничего не получилось. потом опять решил открыть твои свфки и уже они не хотят играть. откравыю одну-вторую стоят на 1 и все....
такой вопрос - lc_1 и lc_2 это названия файлов. оно по названию файлов берет или еще где-то прописано - lc_1 и lc_2?
По скольку Izoniz проигнорировал мое замечание (http://www.flasher.ru/forum/showpost.php?p=636735&postcount=9), то получает плюс.
По скольку Izoniz проигнорировал мое замечание (http://www.flasher.ru/forum/showpost.php?p=636735&postcount=9), то получает плюс.
я не проигнорировал. я просто из-за глюка конекта запостил два месседжа и решил один подредактировать так как удалить его нельзя.
а профтыкал...можно удалять. сорри
просто мистика...сначала открыл твои свф файли все пошло. потом пробовал себе такое ничего не получилось. потом опять решил открыть твои свфки и уже они не хотят играть. откравыю одну-вторую стоят на 1 и все....
такой вопрос - lc_1 и lc_2 это названия файлов. оно по названию файлов берет или еще где-то прописано - lc_1 и lc_2?
Внутри прописано.
Закройте все swf. Слушает волну только тот, кто первый подключился.
Внутри прописано.
Закройте все swf. Слушает волну только тот, кто первый подключился.
да я понял что в нутри прописано. вот и спрашиваю в коде написано - lc_1 значит скрипт ищет lc_1, но где? в имени мувика?
закрыл все перезапустил комп врубаю 1 потом второй и ничего. стоят...
да я понял что в нутри прописано. вот и спрашиваю в коде написано - lc_1 значит скрипт ищет lc_1, но где? в имени мувика?
Да нет, в эфире.. Один мувик слушает волну, на которой второй передает. И наоборот.
У меня все работает. Пример работает. Копайте.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.