Создание динамического класса для растрового изображения, содержащего bitmapData из SWC - PullRequest
0 голосов
/ 01 июня 2011

У меня есть следующий код

///Get BitmapData from library in SWC
var ClassReference:Class = getDefinitionByName(products[i].producticon+"Data") as Class;
// Create new BitmapData Instance From it
var bitMapS:BitmapData = new ClassReference();
// Create new Class that contains Bitmap Data
var IconBitmap:Class =  new AndroidAsset(bitMapS) as Class;
// Get String name from Class
var s:String = getQualifiedClassName(IconBitmap);
trace(s);

Я получаю ноль в след. Как создать динамический класс, на который я могу ссылаться для этого растрового изображения, аналогично тому, как вы ссылаетесь на класс из встроенных носителей?

1 Ответ

0 голосов
/ 02 июня 2011

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

//grab the name of the asset as a string
var bitmapDataAssetName:String = products[i].producticon+"Data";
//get the asset definition from the SWC
var CustomBitmapDataClass:Class = getDefinitionByName(bitmapDataAssetName) as Class;

//store it in an associative array or dictionary for use later
var myBitmaps:Array = [];
myBitmaps[bitmapDataAssetName] = CustomBitmapDataClass;

//then instantiate new bitmaps from the class definition that's stored in your array
var testBitmapData:BitmapData = new (myBitmaps[bitmapDataAssetName] as Class)() as BitmapData;

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

var localBitmapData:BitmapData = new (BitmapManager.instance.definitions[theNameOfTheBitmapIWant] as Class)() as BitmapData;

Или лучший способ сделать это - добавить метод в BitmapManager, такой как

public function getBitmapAsset(assetName:String):BitmapData {
    var symbolDefinition:Class = myBitmaps[bitmapDataAssetName] as Class;
    return new symbolDefinition() as BitmapData;
}

, чтобы вы могли просто вызвать его так:

var localBitmapData:BitmapData = BitmapManager.instance.getBitmapAsset("theNameOfTheBitmapIWant");

Надеюсь, чтопомогает (если это был даже ваш вопрос для начала): P

...