Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Название переменной (http://www.flasher.ru/forum/showthread.php?t=33005)

mikerz 12.06.2002 16:24

Название переменной
 
Как мне создать произвольное название переменной? к примеру как в php - ${$str}
set variable не подходит т.к. все равно я потом не смогу к ней никак обратиться :(
Помогите pls если так можно в flash`е

Egoritch 12.06.2002 18:24

s="temp"+random(20000);
variab=eval(s);
variab=10;

например так....
тогда (кажися) допустим random(20000) станет 7654, имя переменной будет записано в строковой переменной s (то есть станет temp7654) а самой переменной temp7654 присвоится значение 10.

Поправте меня если я не прав..

УильямБрэдберри 12.06.2002 21:50

че-то вы намутили :)

просто объявить переменную -
var myAnyVariableName = any_Value

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

Забудь про "eval"

составные имена
var a = "a"
var b = "b"
var c = a + b // c = "ab"

var number = 666

this["name"+number] = 100
обращаться к myAnyVariableName можно так

trace("name"+number) //name666
trace(this["name"+number]) //100
trace(this["name"+666])//100
trace(name666) // 100

DeliMIter 12.06.2002 22:05

2Мастер

Не для массива

this["0"] = something;

определяет для текущего объекта (в общем случае - клипа) переменную 0 (ноль) c некоторым значением. То же справедливо и для спецсимволов. А ты говоришь, не могут с числа начинаться... Еще как могут!!! Ну, не адресуешь их потом напрямую, но! :)))))))))

Nox Noctis 12.06.2002 23:50

2DeliMIter
...теоретическое знание, оно конечно самодостаточно, только прагма она гораздо дороже :)
ты можешь привести хоть один пример, где такие извращенные переменные могут понадобиться ? :) просто любопытно...

зы:
this[1] = "abcdef";
tst={abcdef:"!!!"};
trace(tst[this[1]]);
...о ! я знаю зачем это нужно !.. вскрывает, значит, чел ASV'шкой свфник в поисках кода... а тут ТАКОЕ... испугается ведь :)))))

Egoritch 13.06.2002 12:42

2УильямБрэдберри: с п а с и б о !

DeliMIter 13.06.2002 21:52

2Nox

Если бы я сам такое не использовал, я бы и не постил ответ. Мне данная теория пригодилась, когда понадобилось сделать список неких элементов, но не использовать при этом массив (из-за и без того сложной адресации), список формировался один раз и не менялся. Вполне красиво вышло.

Nox Noctis 13.06.2002 22:03

хм... что-то я не очень тебя понял...

то есть ты сделал список элементов с именами "0","1","2"... и т д ?

но ведь тогда совсем не обязательно делать это так... можно ведь сделать любым образом однотипно названные элементы - и получить тот же эффект...
типа: "строка0","строка1","строка2"... или ты на именах решил сэкономить ? ;)

зы:
все-таки как-то перегруженные имена напрягают :)
и к тому же кто его знает - может ведь встретиться ситауция, когда например литерал 1 будет интерпретироваться не как число, а как элемента с именем "1".... хотя это всего лишь перестраховка :)

DeliMIter 13.06.2002 23:06

Конкретнее по ситуации: игрушка Life (надеэсь, не надо пояснять эту всемирно известную задачу), у каждой клетки - 8 соседей. Адресация угребещнейшая, как я ни упрощал. Естественно, чем длиннее адресация, тем больше тормозит, да еще по два прохода за турн. И еще нужен массив на эти 8 элементов. В конечном счете я просто взял и написал
Код:

_i = 0;
for (var i = X - 1; i < X + 2; i++)
 for (var j = Y - 1; j < Y + 2; j++)
  if ((i <> X) or (j <> Y))
  this[_i++] = ...[i][j];

И ничего, заработало. И проще стало. Ведь так?


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

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