Здравствуйте!
Я новичок в программировании AS3. Возникла проблема. Скажу сразу: Да, я искал ответ на этом форуме, и да - находил разные варианты. Но, видимо, мой случай несколько уникален, потому и спрашиваю.
Работаю в FlashDevelop + Flex. Код привожу нужный, ненужное выкинул.
Есть основной код:
main.as

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.sampler.NewObjectSample;
public class Main extends Sprite
{
private var usrprofile : Profile;
private var provider : Provider;
private var srvdata : ServerData;
private var loadscr : LoadingScreen;
private var gameData : GameData;
public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
gameData = new GameData();
provider = new Provider( stage, gameData );
srvdata = new ServerData( gameData );
usrprofile = new Profile( srvdata, gameData );
loadscr = new LoadingScreen();
loadscr.isvisible = false;
addEventListener(Event.ENTER_FRAME, newFrame );
}
private function newFrame(e:Event = null):void
{
switch( sceneid )
{
case scene_id_profile:
addChild( usrprofile );
usrprofile.Update();
}
break;
}
}
}
}
Как видно, из него вызывается Update профиля.
profile.as

Код AS3:
package
{
public class Profile extends Sprite
{
private var gd:GameData;
public function Profile( serv:ServerData, gamedata:GameData )
{
super();
srvdata = serv;
gd = gamedata;
}
public function Update():void
{
gd.LoadAva();
}
}
Уже здесь вызывается функция загрузки аватарки игрока из класса GameData.
GameData.as

Код AS3:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.*;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.net.URLRequest;
public class GameData extends Sprite
{
public var user_photo:String;
public var user_ava:Bitmap;
public var loader:Loader;
private var url:URLRequest;
private var bitmapData:Bitmap;
public function GameData()
{
user_photo = new String();
}
public function LoadAva():void
{
loader = new Loader;
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onLoadComplete );
url = new URLRequest( String("http://myweb.site/test.png") );
loader.load( url );
addChild(loader);
}
private function onLoadComplete(e:Event):void
{
1: bitmapData = e.target.loader.contentLoaderInfo.content as Bitmap;
2: user_ava = new Bitmap( bmp.bitmapData );
}
}
}
Здесь я пронумеровал 2 строчки.
И вот она проблема: функция onLoadComplete обрывается на строке 1. Т.е. строка 2 не срабатывает, но при этом приложение работает, как ни в чем не бывало. Ни ошибок, ни Adobe FP Debug ничего не пишет. И в итоге изображения нет.
Пробовал строку 1 делать так:

Код AS3:
bitmapData = loader.contentLoaderInfo.content as Bitmap;
Результат тот же.
В чём проблема? Что я делаю не так?