Для этого ответа я собираюсь предположить, что вы всегда будете хотеть иметь одно и то же изображение дважды, а не два разных.Проблема в том, что ваш класс BG полностью выполняет загрузку и присоединение.Мой предпочтительный подход состоит в том, чтобы загрузить один раз, а затем создать для экземпляров загруженного содержимого.
//first lets create a single loader
var bgLoader:Loader = new Loader();
bgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
//and load the content
var urlVar:URLRequest = new URLRequest("somewherelink.jpg");
bgLoader.load(urlVar);
//notice that we don't add the loader to the stage
function completeHandler(evt:Event):void
{
//remove the loader listener for memory conservation purposes
evt.target.removeEventListener(Event.COMPLETE,completeHandler);
//reference the content
var content:DisplayObject = evt.target.content;
//so now create a bitmapData object
var bmd:BitmapData = new BitmapData(content.width,content.height,false); // use (content.width,content.height,true,0) if loading image with transparancy
//and draw the loaded image into to bitmap data
bmd.draw(content);
//now you can create as many Bitmap objects from this data as you like
var bg1:Bitmap = new Bitmap(bmd);
var bg2:Bitmap = new Bitmap(bmd);
//offset bg2 so both are visible
bg2.x = 100;
addChild(bg1);
addChild(bg2);
}
Для вашего второго вопроса ... getDefinitionByName
возвращает вам объект, который представляет именованный класс, а непример этого.Таким образом, в вашем примере он получает определение для класса «bluebox», который находится в корне исходного кода приложения (а не в папке).
Когда у вас есть этот объект класса, вы можете создавать его экземпляры с ключевым словом new
.Насколько мне известно, большим недостатком этого является то, что вы не импортируете класс, следовательно, в вашем примере obj
приведен как мувиклип.Это делает функции редакторов кода, такие как завершение кода и подсвечивание ошибок, некорректно работающими, потому что свойства и методы bluebox не предоставляются.
Обычно я использую это только для создания объектов, чьи классы будут определены в другом месте.Например, в файле XML, который загружается во время выполнения.