Привет всем. Помогите решить такую задачу. Есть три флешки: preloader.swf, loader.swf, hello.swf.
Loader.swf подгружает главный и единственный класс из hello.swf. Как из отладочной флешки preloader.swf получить доступ к свойствам и методам двух других флешок?
Пробовал вместо этого кода

Код AS3:
Hello = loaderInfo.applicationDomain.getDefinition('Hello') as Class;
LoaderHello = loaderInfo.applicationDomain.getDefinition('LoaderHello') as Class;
такой способ

Код AS3:
Hello = getDefinitionByName('Hello') as Class;
LoaderHello = getDefinitionByName('LoaderHello') as Class;
ничего не получается.
В flashlog.txt пишутся сообщения об ошибках:

Код:
<Error> Error #1065: Переменная Hello не определена.
<Error> Error #1065: Переменная LoaderHello не определена.
Ok loaded: file://localhost/C:/Documents and Settings/Admin/%D0%9C%D0%BE%D0%B8 %D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B/Hello/Hello.swf
Предупреждение: SWF-файл ActionScript 1.0/2.0 загрузил SWF-файл ActionScript 3.0; код в SWF-файле ActionScript 3.0 выполняться не будет.
Предупреждение: SWF-файл ActionScript 1.0/2.0 загрузил SWF-файл ActionScript 3.0; код в SWF-файле ActionScript 3.0 выполняться не будет.
Ниже привожу их исходный код
Hello.swf

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.*;
public class Hello extends Sprite
{
public const stroka:String = "HELLO";
public function Hello():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//helloworld();
}
private var txt:TextField;
public function helloworld():void {
var format:TextFormat = new TextFormat();
format.size = 37;
txt = new TextField();
txt.y = 180;
txt.text="Hello world!!!"
txt.setTextFormat(format);
txt.autoSize = TextFieldAutoSize.LEFT;
addChild(txt);
}
}
}
Loader.swf

Код AS3:
package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
import flash.events.*;
public class LoaderHello extends Sprite {
public const text:String = "WORLD";
public function LoaderHello() {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(new URLRequest("Hello.swf"));
}
private function completeHandler(event:Event):void {
var info:LoaderInfo = event.target as LoaderInfo;
trace("Ok loaded: " + info.url);
try {
var a:Class = info.applicationDomain.getDefinition("Hello") as Class;
addChild( new a() );
} catch (e:ReferenceError) {
trace('ERROR: '+e);
}
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ERROR: " + event);
}
}
}
Preloader.swf

Код AS3:
package
{
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.utils.*;
import flash.display.DisplayObject;
public class Preloader extends Sprite
{
//Ссылка на самих себя
protected static var self:Sprite;
//Ссылка на объект который будет загружен в профайлер
protected static var targetSprite:Sprite;
//Ссылка на объект stage загруженного объекта
protected static var targetStage:Stage;
public function Preloader():void
{
if (stage) initHandler(null);
else addEventListener(Event.ADDED_TO_STAGE,this.initHandler);
}
private function initHandler(event:Event):void
{
if (hasEventListener(Event.ADDED_TO_STAGE)) removeEventListener(Event.ADDED_TO_STAGE,initHandler);
self = this;
root.addEventListener("allComplete",allCompleteHandler);
}
private function allCompleteHandler(event:Event):void
{
var loaderInfo:LoaderInfo;
try
{
loaderInfo = LoaderInfo(event.target);
if (loaderInfo.content.root.stage == null) return;
//Извлекаем ссылку на загруженный объект
targetSprite = loaderInfo.content.root as Sprite;
targetStage = targetSprite.stage;
targetStage.frameRate = 30;
beginHarassment();
}
catch(e:Error)
{
trace("<Error> " + e.message);
}
}
private var Hello:Class;
private var LoaderHello:Class;
private function beginHarassment():void {
try {
targetSprite = loaderInfo.content.root as Sprite;
Hello = loaderInfo.applicationDomain.getDefinition('Hello') as Class;
LoaderHello = loaderInfo.applicationDomain.getDefinition('LoaderHello') as Class;
var stringHello:Object = new Hello();
var stringLoaderHello:Object = new LoaderHello();
stringHello.helloworld();
trace("TEXT"+stringHello.stroka);
trace("STROKA"+stringLoaderHello.text);
}
catch (e:Error) {
var self:Preloader = this;
trace("<Error> " + e.message);
setTimeout(function():void { self.beginHarassment(); }, 1000);
}
}
}
}