をStrugglyingあなたはすでにそこにオブジェクトを持っている、あなたはすでに行くことができるように:
_allColorCodes.black
...など
_allColorCodes
がprivate
であることを考えると、あなたはそのような本当に素晴らしい小さなゲッターを行うことができます。
public function get colorCode():Object
{
return _allColorCodes;
}
そしてちょうど持っている:
trace(colorCode.black);
trace(colorCode.yellow);
私はどうなることは、このように、ColorCodes
のようなクラスの定数に対するすべてのこのようなものを保存している、と述べているすべて:
package
{
public class ColorCodes
{
public static const BLACK:uint = 0x000000;
public static const RED:uint = 0xFF0000;
public static const BLUE:uint = 0x0000FF;
public static const GREEN:uint = 0x00FF00;
public static const WHITE:uint = 0xFFFFFF;
}
}
をそして経由してアクセス:
trace(
ColorCodes.RED
);
何かもう少し高度なプロキシとflash_proxyを使用してgetProperty()
メソッドをオーバーライドすることができます。コメントを
package
{
import flash.utils.Proxy;
import flash.utils.flash_proxy;
public class ColorLibrary
{
private var _allColorCodes:Object;
public function ColorLibrary()
{
_allColorCodes = {
'black' : '000000',
'white' : 'FFFFFF',
'yellow' : '000000'
}
}
override flash_proxy function getProperty(name:*)*
{
return _allColorCodes[name];
}
}
}
応答::これはあなたがまっすぐバットColorLibrary.colorを行くことができるでしょう意味
さて、あなたは単にでき、ここでgetDefinitionByNameを使用する必要はありませんブラケットを使用して、文字列を解析してオブジェクトの値にアクセスします。
例:
var object:Object = {
something: 2,
anotherThing: "something awesome"
};
trace(object["something"]); // same as object.something
trace(object["anotherThing"]); // same as object.anotherThing
ごexchangeColor()
機能のために、このような何かを試してみてください:
public function exchangeColor(colors:String):void
{
var colorArray:Array = colors.split(',');
for each(var i:String in colorArray)
{
trace(
_allColorCodes[i]
);
}
}
あなたの機能(exchangeColor)で何を達成したいですか? – Mattias