PDA

Просмотр полной версии : ссылки на клипы загнать в массив


mastergrom
26.06.2008, 03:04
Такая ситуация:

есть мувики: window1, window2, window3

и код:

var windows:Array= new Array('window1','window2','window3');

function show_window(win:MovieClip) {
if (win._visible==false) {win._visible=true;}
else if (win._visible==true) {win._visible=false;}
}

myInterval=setInterval(show_window,5000, windows[0]);
но почему-то задумка не работает, хотя если написать:
myInterval=setInterval(show_window,5000, window1)
то все работает нормально..

Просто мне необходимо загнать в массив ссылки на 50 мувиков и через интервал применять к ним функцию show_window в которую передавать рендомный индекс масива windows.

Не подскажите как загнать в массив ссылки на мувики ?

Alex_beginner
26.06.2008, 11:41
mastergrom!

Потому что....
Давайте разберемся. Вы передаете в функциию show_window строковое значение "window1" (например). Потом, пытаетесь получить доступ к мувам window1 по строковым значениям используя оператор доступа ".". Это не корректно. Доступ к мувам по строковым именам может быть осуществлен через оператор доступа - [], т.е.:
var windows:Array= new Array('window1','window2','window3');

function show_window(win:String) {
if (this[win]._visible==false) {this[win]._visible=true;}
else if (this[win]._visible==true) {this[win]._visible=false;}
}

myInterval=setInterval(show_window,5000, windows[0]);

И еще маленький совет - запись вида if (this[win]._visible==false) избыточна. Рекомендую использовать запись вида:

if (!this[win]._visible)

mastergrom
26.06.2008, 13:59
Та я пробовал указывать имя клипа с помощью оператора - "[]", но в таком случае внутри функции:
trace(this[win]) // undefined

Alex_beginner
26.06.2008, 14:27
А Вы где клипы window1, ...создавали на текущей временной шкале или может быть нет?
Я, кстати, сигнатуру функции поменял

function show_window(win:String) {

Обратите на это внимание - это важно.

mastergrom
26.06.2008, 14:30
Все, спасибо, разобрался ... Дело в том что сам AS с мувиками у меня находился не на основном таймлайне... Нужно было указать абсолютную адресацию к мувикам начиная от _root