У меня есть класс Inhabitant
со свойством skin
типа DisplayObject
.
В Inhabitant
мне нужно получить доступ к свойствам кожи x
и y
, используя этот метод:
this["someProperty"];
Вместо:
this.someProperty;
Это нормально для свойств, определенных в Inhabitant
, но я не уверен, как я мог бы сделать это для свойства skin
. Это, очевидно, не работает, но может дать вам представление о том, что я пытаюсь сделать:
this["skin.x"];
Причина, по которой требуется это обозначение, заключается в том, что у меня есть функция, с помощью которой я могу анализировать строку, хотя она будет представлять свойство:
public function addTokenable(property:String):void
{
if(!isTokenable(property))
_tokenables[property] = true;
}
А затем связанный метод получения, который вернет представление этого экземпляра Inhabitant
в виде строки:
public function get token():String
{
_token = "class:" + getQualifiedClassName(this).split("::").join(".");
for(var i:String in _tokenables)
_token += "#" + i + ":" + this[i];
return _token;
}
Это приведет к чему-то вроде:
class:terra.environment.Inhabitant#someProperty:someValue#etc:etc
Цель состоит в том, чтобы иметь возможность ссылаться на свойства скина в методе addTokenable()
, чтобы у меня было что-то вроде:
var person:Inhabitant = new Inhabitant();
person.skin = new PersonSkin();
person.skin.x = 100;
person.skin.y = 150;
person.addTokenable("skin.x");
person.addTokenable("skin.y");
trace(person.token); // class:terra.environment.Inhabitant#skin.x:100#skin.y:150