Форум 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)
-   -   синтаксис слияния строк и переменных as (http://www.flasher.ru/forum/showthread.php?t=182536)

poehavshiy 26.07.2012 04:11

синтаксис слияния строк и переменных as
 
я в as новичок.
вопрос такой: как правильно складывать строки + переменные?
вот например нужно сделать
Код AS1/AS2:

 
while (i<100){
_root.mc+i.gotoAndPlay(2);
i++;
}

т.е. чтобы все клипы mc1, mc2, mc3 , mc 4 и т.д. перешли на 2 кадр.
но такой синтаксис не работает. как правильно это писать? я смотрел в примерах там в некоторых местах квадратные скобки. вместо точки. но куда тогда точки деваются?
вообщем кто может объяснить доступными словами этот момент объясните. т.к. сам я не могу понять

mooncar 26.07.2012 10:45

Код AS1/AS2:

_root["mc" + i].gotoAndPlay(2);

Точка "исчезает" там, где используется запись с применением скобок.
В скобках можно записать строковое значение.
Связано это с тем, что любой объект по сути - это ассоциативный массив собственных свойств (а также внутренних переменных, мувиков и т.д.). Грубо, но примерно так.
Поэтому можно обратиться к ним с помощью такого синтаксиса, когда нужно - то есть, например, если нужно использовать меняющуюся величину в имени содержащегося в нем объекта.

Например:
Код AS1/AS2:

this.mc1.mc2

равнозначно
Код AS1/AS2:

this["mc" + 1]["mc" + 2]

Точечного оператора между ["mc" + 1] и ["mc" + 2], как мы видим, нет.

Удобно при групповом назначении свойств, обработчиков событий и т.д:

Код AS1/AS2:

for (i = 1; i <= 50; i++)
{
  var btn:MovieClip = container_mc["btn" + i]; //в container_mc - все кнопки btn1, btn2 ...
  btn.n = i;
  btn.onRelease = btnRelease;
  btn._x = - 20;
}
 
function btnRelease()
{
  trace(this.n); //выведет номер, который в цикле был i
}



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

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