![]() |
Как через цикл задать группе клипов каждому свою функцию
Такая вот проблема, может кому не сложно... ;)
Как через цикл задать группе клипов каждому свою функцию (запускающуюся по mouseDown), пробую так: Код:
function SongsButtons(songs_scr:Array, max_songs:Number):Void { Обычно все тупики стараюсь сам решать, но здесь че-то реально затупил, так, что если кто сталкивался с такой проблемой, буду признателен за помошь! |
Ну и синтаксис... eval, this, set, да ещё и определение типов по AS 2.0 ...
|
походу в AS через цикл нельзя управлять обработкой событий,у меня такая же проблема и пришлось на каждый мувиклип отдельный onRollOver вешать.Мож кто по умнее найдётся и подскажет
|
не совсем понял что не получается, но я делаю вот так:
Код:
function SongsButtons(songs_scr:Array, max_songs:Number):Void { |
хотя по понятным причинам в этом коде только суть, пути к переменным итд нужно прописывать правильно самому!
|
массив не нужно передавать в функцию, т.к. потом функция обработчика события его просто напросто не найдет.
|
Если я правильно понимаю, то onMousDown это глобальное событие класса Mouse, на которое подписаны по умолчанию все клипы. В данном случае мы получаем срабатывание всех созданных обработчиков одновременно при клике где угодно. Если нужна для каждого свой обработчик используй onPress или onRelease.
Сейчас у тебя загружаться будет всегда "curent_song"+max_songs. Можно сделать так: Код:
this["song_title_mc"+i].i = i; |
да кстати...про это тоже .onPress
|
Код будет работать не верно, из-за этого участка в коде
Цитата:
Цитата:
При событии мыши метод будет уже виден не внутри цикла "for (i=0; i<max_songs; i++) { ", а из области видимости мувиклипа на котором произошло событие, где переменной i либо не существует, либо есть ее тезка, с неизвесно каким значением. Выход создавать в каждом клипе свойство ID или что-то в этом духе которое и использывать для загрузки мувика. function SongsButtons(songs_scr:Array, max_songs:Number):Void { for (i=0; i<max_songs; i++) { set("curent_song"+i, songs_scr[i]); this["song_title_mc"+i].ID_num = i; this["song_title_mc"+i].onMouseDown = function(){ media_holder.unloadMovie(); media_holder.loadMovie(eval("curent_song"+ID_num)); }; } } |
Всем, кто откликнулся - Оогромное спасибо!
При создании переменной songs_scr убрал var (Она у меня в другой функции создавалась) В результате заработал следующий код: Код:
function SongsButtons(max_songs:Number):Void { |
| Часовой пояс GMT +4, время: 01:18. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.