PDA

Просмотр полной версии : Динамическая подгрузка emded source


AlexCooper
02.05.2013, 17:19
Здравствуйте. Хочется исключить конструкцию switch в данном коде
[Embed(source = '../../asset/bitmap/IconCheckBoxPoint.png')]
private static var _IconCheckBoxPoint:Class;

[Embed(source = '../../asset/bitmap/IconCheckBox.png')]
private static var _IconCheckBox:Class;

[Embed(source = '../../asset/bitmap/iconComplaint.png')]
private static var _iconComplaint:Class;

public function Asset() {
// constructor code
}

public static function getBitmap($name:String):Bitmap {

switch ($name) {
case "iconCheckBoxPoint": return Bitmap(new _IconCheckBoxPoint());
case "iconCheckBox": return Bitmap(new _IconCheckBox());
case "iconComplaint": return Bitmap(new _iconComplaint());
}
return Bitmap(null);
}
Подкорректируйте пожалуйста. В результате хочу получить динамического определения класса по его текстовому представлению. (Тоесть getBitmap($name = 'имя класса' ))

silin
02.05.2013, 19:02
private static var map:Object = {
iconCheckBoxPoint: _IconCheckBoxPoint,
iconCheckBox: _IconCheckBox,
iconComplaint: _iconComplaint
}

public static function getBitmap($name:String):Bitmap
{
var cl:Class = map[$name] as Class;
return cl ? new cl() as Bitmap : null;
}

или же, если придерживаться какой-то конвенции именования, то можно и к полям класса также обратится
public static function getBitmap($name:String):Bitmap
{
var cl:Class = Asset["_"+$name] as Class;
return cl ? new cl() as Bitmap : null;
}

AlexCooper
02.05.2013, 20:02
private static var map:Object = {
iconCheckBoxPoint: _IconCheckBoxPoint,
iconCheckBox: _IconCheckBox,
iconComplaint: _iconComplaint
}

public static function getBitmap($name:String):Bitmap
{
var cl:Class = map[$name] as Class;
return cl ? new cl() as Bitmap : null;
}

или же, если придерживаться какой-то конвенции именования, то можно и к полям класса также обратится
public static function getBitmap($name:String):Bitmap
{
var cl:Class = Asset["_"+$name] as Class;
return cl ? new cl() as Bitmap : null;
}

Спасибо, просто идеально!)

Babylon
02.05.2013, 21:56
Можно ещё попробовать фабричный подход.