PDA

Просмотр полной версии : Как узнать о отработке одного из кучи клипов?


MOHCTEP
02.07.2003, 15:08
Уважаемый Алл! Прошу помощи!!!
Ситуация такая: В пустом мувике есть клип с простой анимацией, запускаемой скриптом. Этот клип, поначалу, плодится в немерянном количестве (штук этак 10000 :) ), Затем в, определенном математикой, порядке эти мутанты воспроизводятся. Порядок их проигрывания меняется, в зависимости от параметров, переданных в функцию (интерактивно). Естественно, он будет разный и относительно непредсказуем. С этим все ОК!
Проблема в том, что после отработки ПОСЛЕДНЕГО клипа в ТЕКУЩЕМ порядке необходимы некие скриптовые телодвижения. Ну никак не получается это дело отследить! :( Помогите пожалуйста! Может какой то листенер надо схимичить?

Пушистик
02.07.2003, 18:20
необходимы некие скриптовые телодвижения.
Вас ист дас????

MOHCTEP
02.07.2003, 18:56
Вас ист дас????
1. Дас ист после отработки последнего клипа, надо обращаться ко всяким разным функциям и прочим зверюгам.
2. Я, вообще то, здесь жду советов и помощи, а приколами, думаю, можно блистать в другом месте или разделе этого форума.

Dimonius
02.07.2003, 19:51
Никто приколами не занимается, просто вопрос твой неясен.
Слепи исходник что-ли?
Если все даже и рандомно все-равно можно отследить последнего.

Baltika
02.07.2003, 20:59
2MOHCTEP

1. Заведи в руте глобальную переменную mc9999 (если известен последний возможный мутант)

2. Плоди мувики прибавляя к имени экземпляра число mc1.... mcN

3. В нужный момент времени сравнивая имя экземпляра с гл. переменной стопори размножение гадов и делай телодвижения =)

ЗЫ дельно тока если я прально понял что такое
" ..ПОСЛЕДНЕГО клипа в ТЕКУЩЕМ порядке.." %)

YuriiZelenev
03.07.2003, 06:58
Dimonius - prav. Otsledit mojno vseh i vsya... :D

Kak ya ponel - ti razmnojaesh s pomoshyu kakovo-to shetchika...

Delaesh k primeru kak skazal Baltika v punkte 2.

Pomere razmnojeniya muvikov - Delaesh proverku v shetchike...
Dostig li evo nomer - nujnovo muvika...

Esli dostig - Ubivaesh (ostanavlivaesh) funciyu razmnojeniya...
prisvaevaesh kakoinit peremennoi - put k muviku kotorii ti poymal...

Potom obrashyaeshsya k nemu ot kuda ugodno i zadaesh emu lubie telodvijeniya ;)

MOHCTEP
04.07.2003, 12:13
Сорри братья! :) Похоже, и впрямь непонятно спросил... Сейчас сделаю исходник, будет ясно, чего я добиваюсь. Оригинал то дома, да и кода там страницы на 3 будет :)

MOHCTEP
04.07.2003, 13:39
:) Готово. Внутрях расписана суть проблемы. Жду вашей помощи!

Dimonius
04.07.2003, 13:59
Хороший у тебя исходник получился
И главное - размер 125 байт.

MOHCTEP
04.07.2003, 14:35
Я извиняюсь! По непонятным причинам сглючил винрар?!
Здесь - проверенный архив!

MOHCTEP
07.07.2003, 13:57
Димонус, Пушистик... Лююди :eek: ! Ну поможите жеж! Аль вопрос ответа не имеет?? :confused:

Dimonius
07.07.2003, 14:09
Ща разберемся,... я уже онлайн

Dimonius
07.07.2003, 14:17
Ничего не понял!
А что требуется?
Каробку я запустил, правда половына шаров отъехала .
если можешь уточни, что конкретно получить надо

MOHCTEP
07.07.2003, 14:39
Тось как, "отъехала" :eek: ?
Вобщем, видел там, по кнопам, шарики шуруются, то снизу вверх, то сверху вниз... Ну и надо, когда вся толпа шариков отшевелится, запустить, что то дальше (там квадратик, например). Я сглючил на том, что в массиве настоящем этих шариков тыщщи :) и они, перед запуском расставляются по разному, (перетасовкой их ID в массиве), соответственно и порядок их запуска тож меняется. Ну и как мне, запустить ентот квадратик то? Только тогда, когда "отПЛАЙется" последний шарик...

Dimonius
07.07.2003, 16:27
Я бы так решил, например.
Ставим код на шарик:

onClipEvent (enterFrame){
if (this._name == "b35"){
_root.box.play();

}
}

MOHCTEP
07.07.2003, 16:41
if (this._name == "b35")
Это хорошо, когда этот мувик будет последним :)
Ну, а как быть в случае с реверсом массива? Ведь там последним станет уже "b0". Проверь... А у меня в проекте, массив тасуется еще похлеще, чем в примере...
И СПАСИБО огромное тебе за участие :D :D :D

egievs
08.07.2003, 14:21
А не проще маскиой все это сделать а потом в последенем кадре прописать твой квадратик???

MOHCTEP
08.07.2003, 15:42
Не проще. Проблему см. выше...

derhab
08.07.2003, 16:01
Посмотри, у меня была подобная задача, надо было отследить последний упавший клип из массива...каждый раз неизвестно какой будет последним...решается просто.

MOHCTEP
08.07.2003, 16:32
:) Большущее спасибо тебе за помощь - иду смотреть...

Iv
08.07.2003, 23:48
не проще ли сделать вещатель класса и повесить все мувики на него слушателями?
вот пример вещателя класса:

// CONSTRUCTOR
MyClass = function () {
this.constructor.addListener(this);
};
// SET PARENT CLASS
tmp = MyClass.prototype=new MovieClip();
// REGISTER MOVIECLIPS
Object.registerClass("my_mc", MyClass);
// BROADCASTER INITIALIZE
ASBroadcaster.initialize(MyClass);
MyClass.message = function() {
this.broadcastMessage.apply(this, arguments);
};
// SET CLASS FUNCTIONS
tmp.onSetProperty = function() {
var i, obj = arguments[0];
for (i in obj) {this[i] = obj[i];}
this._y = random(300);
};
tmp.count = function() { this.constructor.counter++;};
tmp.getNumberOfBrothers = function() {
this.constructor.counter = 0;
this.constructor.message("count");
return this.constructor.counter;
};
// TEST
_root.attachMovie("my_mc", "my1_mc", 1);
_root.attachMovie("my_mc", "my2_mc", 2);
_root.attachMovie("my_mc", "my3_mc", 3);
_root.attachMovie("my_mc", "my4_mc", 4);
MyClass.message("onSetProperty", {_alpha:50, _x:300});
// trace
trace(_root.my1_mc.getNumberOfBrothers());
trace(MyClass._listeners.length);
_root.my4_mc.removeMovieClip();
trace(MyClass._listeners.length);
trace(_root.my1_mc.getNumberOfBrothers());



т.е. ты можешь вызывать любое событие в классе из любого мувика класса обрашаясь к вещателютак:
this.constructor.message("count");
- вызываем функцию count во всех мувиках класса
или так:
this.constructor.message("onSetProperty", {_alpha:50, _xscale:80});
- с передачей аргументов.

MOHCTEP
09.07.2003, 12:49
*BitSky*
Это похоже на то, что мне нужно!
Только вот не пойму, как мне поставить слухача именно на нужный мувик (последний в массиве).
BitSky - может перелопатишь код в исходнике, применительно к твоему варианту??? :) Спасибо!

Iv
09.07.2003, 14:32
- если ты подержишь мою лопату %)

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

Проблема в том, что после отработки ПОСЛЕДНЕГО клипа в ТЕКУЩЕМ порядке необходимы некие скриптовые телодвижения
ты можешь в функции класса создать переменную,
когда каждый ролик отыграет, свое он говорит:

var num = this.constructor.last_num++
if (num==this.constructor.count){
trace(this+ " is end")
}

примерно так

MOHCTEP
09.07.2003, 16:17
BitSky :) Оки! Вроде начал врубаться, не силен я покеда в ООП... классы там и тд. Спасибоньки! Буду пробовать твой код!

Iv
09.07.2003, 16:23
а я думал, что тв МОНСТЕР :D

Iv
09.07.2003, 16:23
а я думал, что ты МОНСТЕР :D