Форум 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=63593)

Powerhead13 10.10.2004 16:41

Обращение к свойствам объектов
 
Подскажите, как обратиться к объекту, если его имя окончательно не ясно. К примеру, у меня есть три текстовых поля: textField1 textField2 textField3 и мне нужно обработать их в цикле, к примеру, задать всем свойство text

Два способа я нашёл, но оба мне не нравятся

for (i=1; i<=3; i++)
{
//Первый способ
_root.путь['textField'+i].text = 'TEXT';

//Второй способ
pointer = 'Textfield' + i + '.text';
set(pointer, 'TEXT');

}


Первый способ неудобен тем, что я должен знать путь к объекту. Второй - слишком громоздкий. Нет ли способа по-проще? В php и perl эта операция делается очень просто.

FreeLander 10.10.2004 17:39

Re: Обращение к свойствам объектов
 
Цитата:

Оригинал написал(а) Powerhead13
//Первый способ
_root.путь['textField'+i].text = 'TEXT';
это и есть наилучший способ, можно ещё eval() использовать, но он хуже (если интересно чем именно хуже, то читай здесь )


Цитата:

Оригинал написал(а) Powerhead13
... способ неудобен тем, что я должен знать путь к объекту....
не очень понял... по идее путь нужно знать всегда.
как ты обратишься к объекту, если не знаешь где он?

Powerhead13 10.10.2004 17:50

Ну смотри, во втором способе я обращаюсь к объекту, не прописывая пути от корня.

Вот обращение к объекту без полного пути: box._x = 26;
В этом случае я оперирую с объектом не зная, на какой глубине он находится от корня.. А если я напишу _root.window.box._x = 26; то если я захочу в будущем поместить этот символ в другой, мне придётся менять путь..

В общем, вопрос в следующем, как обратиться к переменной, имя которой составлено из значений других переменных?

К примеру, нужно изменить переменную abc3 тогда как переменная i = 3.

В php это делается так:

если $i = 3;
${'abc'.$i} = 28;

Эта операция аналогична $abc = 28;

Есть ли что-то подобное в actionscript?

dekud 10.10.2004 18:11

а прос такое слова как this не ужели не слышал:)?
i =5;
this["box"+i]._x = 10;

аналог
box5._x = 10;

а если вдруг box5 у тебя находится в мувике boxGroup
то
мона:
i = 5;
boxGroup["box"+i]._x = 10;

а если у тебя вдруг несколько boxGroup1 ... n

то обратится можно так:
j = 2;
i = 5;
this["boxGroup"+j]["box"+i]._x = 10;


----------

А путь тебе знать надо всегда, правда пути разные бывают
бывают прмые:
_root.mc1.mc2.mc3;
а бывают относительные
и если мы находимся в mc2 то к mc3 мы можем обратится
mc3._x = 5;
или
this.mc3._x = 5
аналог при прямом пути:
_root.mc1.mc2.mc3._x = 5;

а к mc1 мы можем обратится как
_prent._y = 10;
или прямо
_root.mc1._y = 10

FreeLander 10.10.2004 18:11

ты можешь не прописывать путь к объекту, если твой скрипт лежит в том же муве, что и объект.
Во всех остальных случаях прописываешь путь, в котором можешь использовать помимо названия объектов ещё и _parent или _root.

то же самое когда работаешь внутри функции, но ей можно ещё передавать ссылку на объект.

php я не знаю(, потому не очень понял смысл примера.
возможно если ты опишешь конкретную ситуацию, то я смогу тебе подсказать подробнее.

PS предидущий пост не заметил - создались синхронно)

Nox Noctis 11.10.2004 10:58

сейчас я кому-то ухо отгрызу.

http://www.flasher.ru/forum/showthre...threadid=63104

вопрос #3

FreeLander 11.10.2004 11:02

Цитата:

Оригинал написал(а) Nox Noctis
сейчас я кому-то ухо отгрызу.
только не мне, ладно)? лысая голова без ушей совсем не смотрится)))

Powerhead13 11.10.2004 13:00

Вери биг сенкс, this спас отца русской демократии.
Но, если кто знает, хотелось бы всё-таки узнать, как обратиться к переменной, имя которой содержится в другой переменной. Короче говоря, есть ли способ, сделать проще вот эту операцию, одним выражением:

a = 'myVar';
set(a, 'Value');

// Теперь myVar = 'Value'

Кстати, в моём посте про php ошибка, правильно
Цитата:

Эта операция аналогична $abc3 = 28;
Отредактировать свой пост после 10 минут, по каким-то соображениям, простым смертным низя =))

Nox Noctis 11.10.2004 13:08

общий вид:

this[любое_выражение_которое_даёт_в_результате_строку]

т.е. внутри скобочек никто не мешает поставить переменную, содержащую строку

Powerhead13 11.10.2004 13:40

Спасиб.


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

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