PDA

Просмотр полной версии : OnRelease к дублированным клипам


kv71
05.12.2011, 13:53
Добрый день, не могу допереть как сделать.

Есть код, который дублирует клипы

for (i=1;i<24;i++){
duplicateMovieClip(b_copy, "b_"+i, x);
temp_mc = this["b_"+i];
}

Нужно нацепить для каждого мувика событие OnRelease. Как это сделать?
Да, сделать нужно в этом же цикле ))

alex_195
05.12.2011, 14:24
for (i=1;i<24;i++){
duplicateMovieClip(b_copy, "b_"+i, x);
temp_mc = this["b_"+i];
temp_mc.onRelease = function() {
this.(действие, которое ты хочешь поцепить дублю при onRelease);
}
}

iNils
05.12.2011, 15:11
Лучше и правильнее писать так:
for (i = 1; i < 24; i++) {
var copy = b_copy.duplicateMovieClip (b_copy, "b_" + i, x);
copy.onRelease = release;
}
function release () {
//действие, которое ты хочешь поцепить дублю при onRelease;
}

kv71
05.12.2011, 20:29
Да вроде бы должно так работать. Моя задача по нажатию поменять цвет у определенного объекта на цвет из массива.

for (i=1;i<24;i++){
duplicateMovieClip(b_copy, "b_"+i, x);
temp_mc = this["b_"+i];

myColor = new Color ("b_" + i+".color_block");
myColor.setRGB(colorArray[i]);

temp_mc.onRelease = function() {
t_color = new Color ("floor_color");
t_color.setRGB(colorArray[i]);
}

}

Отдача есть. Но по нажатию на любой из клипов присваивается самый последний цвет, то есть colorArray[23]
А мне надо чтобы по нажатии на
b_1 присваивался colorArray[1] ,
по нажатии на b_2 присваивался colorArray[2] и тд...

iNils
05.12.2011, 20:43
kv71, существую правила оформления кода и одно из них гласит, что нужно использовать табуляцию для кода внутри {}. А у вас сейчас каша, весь код на одном уровне вложенности.
Что касается последнего цвета, то проблема в том, что код внутри onRelease сработает когда то там, когда значение счетчика i будет иметь значение полученное в конце цикла. Поэтому вам нужно создать переменную в каждом клипе и хранить там значение i которое было при создании мувиклипа.

kv71
05.12.2011, 22:09
Да, простите за кашу. Из меня плохой программист. Я с этим и не спорю особо.
Но переменная в каждом клипе - это круто. Особенно если элементов более 200.

alex_195
06.12.2011, 02:43
for (i=1; i<24; i++) {
duplicateMovieClip(b_copy, "b_"+i, x);
temp_mc = this["b_"+i];
temp_mc.n = i;
myColor = new Color("b_"+i+".color_block");
myColor.setRGB(colorArray[i]);
temp_mc.onRelease = function() {
t_color = new Color("floor_color");
t_color.setRGB(colorArray[this.n]);
};
}
Возможно так. Не проверял.

iNils
06.12.2011, 12:12
Но переменная в каждом клипе - это круто. Особенно если элементов более 200.Что у вас в каждом клипе новая функция, вас почему-то не смущает, хотя я показал вариант, когда функция будет одна, а вот переменная смущает.