Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как правильно обращаться к пронумерованным копиям клипа? (http://www.flasher.ru/forum/showthread.php?t=112747)

mixery 06.06.2008 18:03

Как правильно обращаться к пронумерованным копиям клипа?
 
Привет! В общем такая проблема: есть несколько клипов, которые аттачатся из библиотеки. Нужно чтобы имена шли по порядку, name0, name1, name2 и т.д. Это сделать смог:
Код:

mClip.attachMovie("MC", "name"+i, i, {_x:mClip._xmouse, _y:mClip._ymouse})
i++;

А как узнать свойства name0, name1, name2 и т.д.? Нужны координаты x&y относительно родительского клипа (клипы name+i вложенные), что-то в стиле
Код:

trace (mClip.name+i._x);
Этот код выводит undefinedundefined. Как правильно обращаться к ним??

iNils 06.06.2008 18:05

Код:

mClip["name"+i]._x

mixery 06.06.2008 18:22

Спасибо!

А почему не работает?
Код:

["name" + i].onRollOver = function(){trace ("Hellow, world!")}

Жень Шень 06.06.2008 19:43

"Аттачится" клип в mClip. Поэтому надо указывать полный путь.
Но, даже если вы "аттачите" на _root, то надо указать this или _root.
Конструкции ["name" + i].onRollOver не проходит по причине: идентификатор должен начинаться с буквы или _, а у вас с [
Скобки применяются внутри составной конструкции, причем точка ставится только после последней закрывающей скобки.
Допустимый синтаксис: mClip["menu"+i]["myclip"+i*2]._x

mixery 06.06.2008 19:57

Но тем не менее это не работает:
Код:

_root["name" + i].onRollOver = function(){
        trace("Hellow, world!");
}

Да, а как сделать чтобы вышеописанный код работал для ВСЕХ "name"+i, а не только для одного??

Ведьмак 06.06.2008 20:03

не работает потому что вы аттачите не в _root, а в mClip... Если mClip в руте, то будет работать
Код:

_root.mClip["name" + i].onRollOver = function(){
        trace("Hellow, world!");}

что значит "для ВСЕХ"? он работает для i-го клипа..

mixery 06.06.2008 20:22

Не не, извиняюсь, уже в _root аттач происходит.
Цитата:

он работает для i-го клипа.
Об этом я в курсе. Именно, нужно чтобы работало для name0, name1, name2 и т.д.

Alex_beginner 06.06.2008 20:37

В цикле надо обработчики создавать, в цикле!!!!!
Только тогда для всех клипов работать onRollOver будет.
А еще лучше, в свойcтве prototype класса MovieClip сохранить сей обработчик, тогда он будет для всех мувиклипов вызываться.

mixery 06.06.2008 21:08

Буду рад маленькому примеру по этому поводу ;) но даже если ручками вписать
Код:

_root.name0.onRollOver = function(){
        trace("Hellow, world!");}

то все равно не работает =( хотя клипы в _root присоединяются...

Alex_beginner 06.06.2008 21:14

А name0 у Вас существует на _root?! Нет!

Вы его создали на mClip (см.выше)

так делайте:
Код:

_root.mClip.name0.onRollOver = function()
{
//
}

Это будет работать в том случае если mClip создан на _root.


Часовой пояс GMT +4, время: 14:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.