PDA

Просмотр полной версии : События


undeddy
30.04.2007, 12:52
Еесть несколько мувиклипов. Каждому из них присвоены 3 события (набор событий одинаков для кадого клипа). Ввиду отсутсвия даже средних знаний по флешу я делаю так: клип.событие = function(){}, отдельно для каждого клипа по три события. Получается громоздко (9 обработчиков). Как это можно сделать более компактно?

etc
30.04.2007, 13:05
releaseHandler = function() {
trace(this);
}
mc1.onRelease = releaseHandler;
mc2.onRelease = releaseHandler;
mc2.onRelease = releaseHandler;

Или в цикле.

Molecula
30.04.2007, 14:51
Я думаю можно и так:


mc1.onRelease = mc2.onRelease = mc2.onRelease = releaseHandler;

undeddy
30.04.2007, 15:54
Пробую через циклы. К примеру, вот:

for (j=1; j<4; j++) {

eval('mc'+j).onRollOver = function() { //////тратата/////// }

}


Грамотен ли код?

etc
30.04.2007, 15:58
for (var i = 0;i<4;i++) {
var mc = this['mc'+i];
mc.onRelease = function() {

}
mc.onRollOver = function() {

}

}
delete mc;

undeddy
30.04.2007, 16:45
for (var i = 0;i<4;i++) {
var mc = this['mc'+i];
mc.onRelease = function() {
trace(i) }
mc.onRollOver = function() {

}

}
delete mc;
Почему-то трассируется '4'. Почему же не трассируется последовательно '0, 1, 2, 3' ?

etc
30.04.2007, 16:48
По-моему логично, разве нет? Цикл закончился, переменная приняла значение 4, его мы и трейсим.

undeddy
30.04.2007, 17:04
Дак цикл ведь повторяется 3 раза. почему трассируется только один раз? И ведь мы поставили условие i<4. Разве эта переменная может принять значение 4?

etc
30.04.2007, 17:06
Цикл выполняется, пока переменная не примет значение 4. Она его приняла. Если бы не приняла, цикл был бы вечный.
Трейс будет при нажатии на клип мышкой.

undeddy
30.04.2007, 17:23
Окей. Но у меня в свзяи с этим возникает еще одна проблема:
for (var i = 0;i<4;i++) {
var mc = this['mc'+i];
mc.onRelease = function() {
some_function(i)
}
mc.onRollOver = function() {

}

}
delete mc;

При нажатии на мувиклип mc вызывается функция с параметром, равным i. Так для mc1 он должен быть 1, mc2 - 2 и т.д. Но выходит так, что параметр принимает сразу конечное значение i=4. А необходимо, чтобы для каждого мувика он был свой.

etc
30.04.2007, 17:44
Нужно сохранить это значение.

for (var i = 0;i<4;i++) {
var mc = this['mc'+i];
mc.i = i;
mc.onRelease = function() {
someFunction(this.i);
}
mc.onRollOver = function() {

}

}
delete mc;

undeddy
30.04.2007, 19:56
Благодарю за помощь.

Ariel
30.04.2007, 20:42
Прошу прощения, а глушить mc зачем? Она ж и так локальная!!

etc
30.04.2007, 20:47
Если этот код написать в функции, то да, локальная. А так — неизвестно, где код будет написан. Я ещё забыл delete i; дописать.