В общем схема такая: Есть главный класс
Код: Выделить всё
package { import flash.display.Sprite; import flash.events.*; public class Main extends Sprite { private var myGame:MyGame; private var myGameView:MyGameView;//===================================================================================================================== public function Main() { trace("Запущен класс Main"); newGame(); newGameView(); }//===================================================================================================================== public function newGame():void { myGame = new MyGame(); }//===================================================================================================================== public function newGameView():void { myGameView = new MyGameView(); //myGameView.addEventListener(Event.ENTER_FRAME, newGameViewCompleteListener); myGameView.addEventListener(Event.COMPLETE, newGameViewCompleteListener); }//===================================================================================================================== public function newGameViewCompleteListener (e:Event):void { addChild(myGameView); // Добавляем представление в список отображения } }//===================================================================================================================== }
Код: Выделить всё
package { import flash.events.EventDispatcher; import flash.events.IEventDispatcher; import flash.utils.*; public class MyGame { public function MyGame() { trace("Запущен класс MyGame"); } } }
Код: Выделить всё
package { import flash.display.Sprite; public class MyGameView extends Sprite { private var myWindow:MyWindow; public function MyGameView() { trace("Запущен класс MyGameView"); paintWindow(); } public function paintWindow():void { trace("Вызван метод paintWindow"); myWindow = new MyWindow(); myWindow.paint(); //this.addChild(myWindow); } } }
Код: Выделить всё
package {//===================================================================================================================== import flash.display.Sprite; import flash.display.*; import flash.events.*; import flash.net.*;//===================================================================================================================== public class MyWindow extends Sprite { private var myGraphicsContainer:Sprite; // Контейнер для изображений private var myImage:MyImage; // Изображение//===================================================================================================================== public function MyWindow(x:int = 0, y:int = 0, height:int = 1200, width:int = 700)// х,y, высота, ширина { trace("Запущен класс MyWindow"); createGraphicsContainer(); //paint(x,y,height,width); }//===================================================================================================================== // Создает контейнер, в который будут помещены изображения public function createGraphicsContainer():void { trace("Создан myGraphicsContainer"); myGraphicsContainer = new Sprite(); addChild(myGraphicsContainer); }//===================================================================================================================== public function paint(x:int = 0, y:int = 0, height:int = 1200, width:int = 700):void { trace("Рисует: х = " + x + ", y = " + y + ", height = " + height + ", width = " + width); myImage = new MyImage(); myImage.createImage(); myGraphicsContainer.addChild(myImage); }//===================================================================================================================== }//===================================================================================================================== }
Код: Выделить всё
package {//===================================================================================================================== import flash.display.Sprite; import flash.display.*; import flash.events.*; import flash.net.*;//===================================================================================================================== public class MyImage extends Sprite { private var myImage:Loader; // Изображение//===================================================================================================================== public function MyImage() { trace("Запущен класс MyImage"); }//===================================================================================================================== public function createImage(name:String = "defaultImage.jpg"):void { myImage = new Loader(); myImage.load(new URLRequest(name)); //myImage.alpha = 0.30; // Прозрачен на 1-0.N% myImage.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener); myImage.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorListener); this.addChild(myImage); trace("Image loaded"); }//===================================================================================================================== // Вызывается при завершении процесса загрузки изображений private function completeListener (e:Event):void { trace("Image loaded completeListener"); // рассылаем событие Event.COMPLETE, которое обозначает, что данный объект готов к использованию. dispatchEvent(new Event(Event.COMPLETE)); }//===================================================================================================================== // Вызывается при невозможности загрузки изображения private function ioErrorListener (e:IOErrorEvent):void { trace("Load error: " + e); }//===================================================================================================================== }//===================================================================================================================== }
Запущен класс Main
Запущен класс MyGame
Запущен класс MyGameView
Вызван метод paintWindow
Запущен класс MyWindow
Создан myGraphicsContainer
Рисует: х = 0, y = 0, height = 1200, width = 700
Запущен класс MyImage
Image loaded
Image loaded completeListener
Однако на сцене изображения defaultImage.jpg (поместил в папку с кодом) таки нет. Если напрямую в мэйне загружать и добавлять адчайлдом, то всё нормально отображается. Да и трейсы показывают, что все методы отрабатывают. Где я накосячил?))