Обозначение объекта AS3 для переменной - PullRequest
2 голосов
/ 03 декабря 2011

У меня есть некоторые переменные в формате:

var like6Y:Number = 50;

Позже я динамически устанавливаю некоторые:

num=6;

Затем я пытаюсь использовать это число для получения переменной вроде 6Y:

 like+6+Y

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

["like"+num+"Y"] 

Или что-то в этом роде.Но я не могу вспомнить, как это сделать.Спасибо

Ответы [ 3 ]

6 голосов
/ 03 декабря 2011

Это можно сделать - просто доступ this["like"+num+"Y"].Предполагая, что like6num является свойством текущего объекта, в противном случае просто измените this на имя объекта.

2 голосов
/ 04 декабря 2011

Даже если что-то вроде this["like" + num + "Y"] будет работать для глобальных переменных, типы данных Array и Vector (используйте Vector, если вы знаете, что все значения будут одного типа и что каждый индекс его длины будет присваивается значение) являются встроенными для задачи доступа к значению по целочисленной ссылке. Они также обеспечивают дополнительное преимущество, предоставляя вам больший контроль над областью, в которой находятся переменные.

Например:

var likeY:Array = [-10, 0, 10, 20, 30, 40, 50];
var num:int = 6;
trace(likeY[num]); //prints 50
1 голос
/ 03 декабря 2011

в Javascript вы можете использовать window["like"+num+"Y"] или eval("like"+num+"Y") ... но в AS3 нет альтернативы.

Также this["like"+num+"Y"] работает, если вы пытаетесь получить доступ к общедоступному * свойству текущего класса.

Но есть некоторые сторонние библиотеки, которые используют метод eval в AS3. Я никогда не использовал это, но вы можете попробовать, [Eval в AS3: Советы по выполнению динамического ActionScript] [1] http://danielmclaren.com/node/113

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...