Форум 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 файлов одновременно! (http://www.flasher.ru/forum/showthread.php?t=94980)

Izoniz 25.04.2007 02:50

Запуск двух .swf файлов одновременно!
 
Нужно что б на сайте два мувика начинали играть одновременно.
Но есть одна проблемка один мувик несколько килобайт, а второй больше 300. Получаеться, что маленький загрузиться и начнет проигрывание. Выходит надо что б он стоял на стопе и узнавал когда загрузиться другой мувик, и как только другой начнет свой первый кадр, то он начнет и свое проигрывание. Вроде все просто, но как это написать в AS не знаю. Help...

Kikasso 25.04.2007 03:05

намек: LocalConnection

Izoniz 25.04.2007 03:36

ок, как законектить один с другим понял. сенкс. тепер как сделать чтоб он начал играть когда тот загрузиться?

~~~ 25.04.2007 09:15

Я бы реализовал с помощью external interface.
Один загружается -> через js постоянно узнаёт загрузился ли второй -> как только загрузился стартует и через js говорит второму "GO!".
И все дела... :) Линк ниже \|/
FLASHIMP - Смотри здесь:)

Izoniz 25.04.2007 21:18

я конечно с ява дружу но как из "определения позиции мыши на странице джава скриптом и возврата во флэш." сделать - "Один загружается -> через js постоянно узнаёт загрузился ли второй -> как только загрузился стартует и через js говорит второму "GO!"" даже не представляю...

Kikasso 25.04.2007 21:57

Цитата:

Сообщение от Izoniz
ок, как законектить один с другим понял. сенкс. тепер как сделать чтоб он начал играть когда тот загрузиться?

А вы грузите через MovieClipLoader. Вставляйте маленькие флешки, которые грузят в себя большие.

Или: флешка, загрузившись, подает сигнал: "готово" и ждет ответа на другой волне. Если ответа нет, ждет дальше. Если в ответ "поехали", то поехали.

etc 25.04.2007 22:02

Что мешает проверять onStatus у LocalConnection?

Izoniz 26.04.2007 04:21

а с кого мне устанавливать конект? например с того который первый загрузиться. тогда он делает конект и проверяет загрузилься полностью или нет. и потом начнет проигрываться. я только не пойму, что написать в тот файл который будет грузиться и который мы будем проверять...

вот все что нашел.
для проверки статуса:
Код:

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/arch...hp?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");
};

не пашет. пробовал еще кое что, все не пашет. что не так?

iNils 26.04.2007 05:29

Izoniz, достаточно нажать кнопку http://www.flasher.ru/forum/images/r...ttons/edit.gif в последнем сообщении и отредактировать его, а не создавать новые.

etc 26.04.2007 13:18

Простыню кода не читал, но проверка очень простая — если error, шлем запрос ещё раз, скажем, через 100 мс. Как только error исчезнет — можно играть. Естесственно в ролике, который опрашиваем, должен быть коннект.

Kikasso 26.04.2007 14:10

По-моему, оба ролика должны подавать сигналы друг другу. Не факт, что тот, который меньше весит, столько и будет весить после переделки, и не факт, что он первым загрузится. По мне каждый ролик по готовности подает сигнал на волне соседа. Если ответа не слышит, error, ждет команды от того. Два LocalConnection.

etc 26.04.2007 14:12

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

Izoniz 26.04.2007 21:45

я спрашивал что не так делаю...а тут ответы хм...((

я ж там нашел пример точно такого действия как мне надо. только там пашет а у меня нифига... вот я и спрашиваю что не так? можент я мувику не тому присваиваю нейм или ваще не в тот .свф ставлю код?

Kikasso 26.04.2007 22:52

Цитата:

Сообщение от __etc
Одного достаточно. Один из роликов ждет получения команды, а второй проверяет статус. При успешном статусе и получении команды оба начинают играть. И неважно, какой из двух первым загрузился.

Один проверяет, если нет, то ждет и проверяет, потом ждет и проверяет и т.д, скажем 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 отличия))

etc 27.04.2007 01:25

Бессмысленно определять, кто первый. Зачем?

Kikasso 27.04.2007 03:54

Цитата:

Сообщение от __etc
Бессмысленно определять, кто первый. Зачем?

Чтобы эфир не засорять. И интервалы не сажать. Только два сигнала.
И код отличается только двумя параметрами - идентификаторами LC.
Можно эти параметры передавать через FlashVars. Проще.
Если мувиков 3 и больше тут - можно и подумать. Хотя можно по кругу сигнал передавать..

etc 27.04.2007 13:20

Гм, не понимаю. Один LC стучится до другого, пока не достучится. Как достучался, и первый и второй пускают воспроизведение. Лично я бы сделал именно так. Достаточно односторонней связи.

Aziz Zaynutdinoff 27.04.2007 15:02

А если так:
по умолчанию оба мувика на стопе. Создаём слушатель-каунтер, который проверяет равно ли кол-во загруженных клипов общему числу загружаемых. Грузим их через MovieClipLoader и на метода onLoadInit() передаём на слушателя я загрузился «я загрузился – увеличивай число загруженных». Как только число загруженных == числу загружаемых, пробегаемся по всем мувикам перебором и стартуем их.

В этом случае можно запускать не два, а более.

Molecula 27.04.2007 15:26

Лучше одностороння.
Если мува три и больше - лучше что бы маленький стучался к большим, пока не откроют. Когда команда в сборе (т.е. переменная = количеству мувов) то все едут играть в футбол.

Или попробуйте на примере с пивом.
Нужно что бы 11 человек собрались и выпили пиво.
Один начинает и собирает всех.

etc 27.04.2007 15:37

Задачи о множественной загрузке роликов не стояло.

Kikasso 27.04.2007 16:34

Цитата:

Сообщение от __etc
Гм, не понимаю. Один LC стучится до другого, пока не достучится. Как достучался, и первый и второй пускают воспроизведение. Лично я бы сделал именно так. Достаточно односторонней связи.

Да вот именно, мне его просто жалко, что он бедный стучится - стучится, а ему никто не отвечает. Так стукнул раза, никто не отозвался - ну, ждем сигнала с другой стороны. Даешь равноправие мувиков! :mad:
Цитата:

Сообщение от Aziz Zaynutdinoff
загрузился «я загрузился – увеличивай число загруженных». Как только число загруженных == числу загружаемых, пробегаемся по всем мувикам перебором и стартуем их.

«я загрузился – увеличивай число загруженных и я жду ответа на такой-то волне»

Izoniz 28.04.2007 14:17

Цитата:

Сообщение от Kikasso
Один проверяет, если нет, то ждет и проверяет, потом ждет и проверяет и т.д, скажем 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 отличия))

не пашет

или может я че ни так делаю...раскажите подробнее

Kikasso 28.04.2007 16:54

Вложений: 1
Ну еще stop() добавить стоит, а так только что проверил - у меня пашет.

Вот смотри. Открываешь один мувик, он стоит. Открываешь другой - оба поехали. Закрываешь любой - второй доиграет до 1 кадра и застрянет, пока первый снова не откроешь.

Мувики постепенно "разбегаются", ну так немного покумекать.. gotoAndPlay вместо play поставить например.. Если это вообще нужно.

Izoniz 28.04.2007 17:30

ну стоп я добавлял. а открывание у меня на страничке происходить. снчала 1 грузиться и по идее должен ждать второй но почему-то не ждет. счас твой исходник поковыряю...

Kikasso 28.04.2007 17:40

Поставь все это после загрузки. Видимо, флешка еще не загрузилась целиком, а коннект уже установлен.

Izoniz 28.04.2007 17:53

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

такой вопрос - lc_1 и lc_2 это названия файлов. оно по названию файлов берет или еще где-то прописано - lc_1 и lc_2?

iNils 28.04.2007 17:55

По скольку Izoniz проигнорировал мое замечание, то получает плюс.

Izoniz 28.04.2007 18:27

Цитата:

Сообщение от iNils
По скольку Izoniz проигнорировал мое замечание, то получает плюс.

я не проигнорировал. я просто из-за глюка конекта запостил два месседжа и решил один подредактировать так как удалить его нельзя.

а профтыкал...можно удалять. сорри

Kikasso 28.04.2007 19:38

Цитата:

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

такой вопрос - lc_1 и lc_2 это названия файлов. оно по названию файлов берет или еще где-то прописано - lc_1 и lc_2?

Внутри прописано.
Закройте все swf. Слушает волну только тот, кто первый подключился.

Izoniz 28.04.2007 20:58

Цитата:

Сообщение от Kikasso
Внутри прописано.
Закройте все swf. Слушает волну только тот, кто первый подключился.

да я понял что в нутри прописано. вот и спрашиваю в коде написано - lc_1 значит скрипт ищет lc_1, но где? в имени мувика?

закрыл все перезапустил комп врубаю 1 потом второй и ничего. стоят...

Kikasso 28.04.2007 21:03

Цитата:

Сообщение от Izoniz
да я понял что в нутри прописано. вот и спрашиваю в коде написано - lc_1 значит скрипт ищет lc_1, но где? в имени мувика?

Да нет, в эфире.. Один мувик слушает волну, на которой второй передает. И наоборот.
У меня все работает. Пример работает. Копайте.

Izoniz 07.05.2007 02:05

все ок. спасибо!


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

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