PDA

Просмотр полной версии : как обрабатывать клипы если их очень много?


1uka
05.12.2008, 10:45
новичок в flash, у меня примерно 300 клипов я их задаю циклом, и на каждый надо сделать onRollOver и тп, руками прописывать для каждого хлопотно, через цикл неполучается for(i=1;i<=300i++){this["clip"+i].onRollOver}
(толи делаю неправильно, толи так нельзя в флэше делать) - подскажите вариант решения...заранее спасибо.

Kuruki
05.12.2008, 11:01
Делаете все правильно, просто наверное в функции, "навешанной" на OnRollOver вы используете переменную i, что неправильно, ведь при вызове функции будет использоваться то значение i, которое имеется на момент вызова функции, а не на момент ее объявления. Сохраняйте значение i в какой-нибудь другой переменной, например

for(i=1;i<=300;i++){
this['clip'+i].id = i;
this['clip'+i].onRollOver = function(){
trace(this.id)
}
}
А вообще раздел выбрали неверно, в след. раз будьте внимательнее
PS: Что-то у меня [A S][/A S] глючит...

1uka
05.12.2008, 11:42
сделал так:
for(i=1;i<=300;i++){
this["clip"+i].id = i;
this["clip"+i].onRollOver = function() {
this["clip"+this.id].gotoAndPlay("over");hint.text = "over";};
};
this["clip"+this.id].gotoAndPlay("over") не срабатывает :(, что я опять не так сделал ? :umnik2:

artem_fs
05.12.2008, 11:47
this["clip"+this.id].gotoAndPlay("over")
зачем из цикла вынесли?

Kuruki
05.12.2008, 11:55
for(i=1;i<=300;i++){
this["clip"+i].onRollOver = function() {
this.gotoAndPlay("over");
hint.text = "over";
}
}
this в данном случае ссылается на объект, вызвавший функцию, а не на таймлайн, как вы подумали...

iNils
05.12.2008, 12:05
1uka, для оформления своего кода, надо использовать теги ]

U4enik
07.09.2010, 13:26
Попробовал все выше описанное, но почему-то не работает, хотя в теме не первый день.

mooncar
07.09.2010, 14:33
Попробовал все выше описанное, но почему-то не работает, хотя в теме не первый день.
Телепатов нет, показывайте код, прокомментируйте по ситуации.

U4enik
07.09.2010, 15:47
Создал 25 клипов. Всем присвоены имена от "a1" до "a25" соответственно.
В первом и единственном кадре повесил цикл:

for(i=1;i<=25;i++){

this["a1"+i].onRollOver = function() {
this._alpha = 50;}

this["a1"+i].onRollOut = function() {
this._alpha = 100;}
}

Это весь код.
Но реагируют почему-то только только 9 или 10 из 25 клипов.
Почему так?

iNils
07.09.2010, 16:24
Возможно потому, что надо писать не this["a1"+i], а this["a"+i]?

U4enik
07.09.2010, 16:48
Спасибо, помогло, но почему надо "a" а не "a1" не совсем понял. Клипы то называются a1, a2, a3 и тд. Объясните если можете.

iNils
07.09.2010, 16:53
Так у вас i из цикла дает индекс 1..25. А вы делали обращение к клипам a11..a125.

U4enik
07.09.2010, 16:59
Теперь ясно, спасибо. Очень помогли.:)