Sevenflash
28.01.2014, 00:58
Есть 2 ролика: loader и movie. Нужно вызвать из подгружаемого ролика movie функцию loaderFunc, принадлежащую ролику loader.
loader.as:
package {
*
import flash.display.MovieClip;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
*
public class loader extends MovieClip {
*
private var loaderVar:String = "Task performed!";
*
public function loader() {
var loader:Loader = new Loader();
loader.load(new URLRequest("movie.swf"));
stage.addChild(loader);
}
public function loaderFunc():String {
return loaderVar;
}
}
*
}
movie.as:
package {
*
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Loader;
import flash.display.LoaderInfo;
*
public class movie extends MovieClip {
*
*
public function movie() {
root.addEventListener("allComplete", allCompleteHandler);
}
private function allCompleteHandler(e:Event):void {
var loaderinfo:LoaderInfo = LoaderInfo(e.target);
if(loaderinfo.loaderURL == "file:///D|/Inject/OwnTest/loader.swf") {
var loaderClass:Class = loaderinfo.applicationDomain.getDefinition("loader") as Class;
var loaderObject:Object = new loaderClass();
}
}
}
*
}
Выдает ошибку:
Error: Error #2136: SWF-файл ***/movie.swf содержит недопустимые данные.
at movie/allCompleteHandler()
Наверное, из-за того что получается бесконечная рекурсия? Пробовал так:
loader.as
*
*
public function loader(flag:Boolean = true) {
if(flag==true) lMovie();
}
private function lMovie():void {
var loader:Loader = new Loader();
loader.load(new URLRequest("movie.swf"));
stage.addChild(loader);
}
public function loaderFunc():String {
return loaderVar;
}
}
*
movie.as:
var loaderObject:Object = new loaderClass(false);
Не помогло.
Заранее спасибо за помощь!
loader.as:
package {
*
import flash.display.MovieClip;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
*
public class loader extends MovieClip {
*
private var loaderVar:String = "Task performed!";
*
public function loader() {
var loader:Loader = new Loader();
loader.load(new URLRequest("movie.swf"));
stage.addChild(loader);
}
public function loaderFunc():String {
return loaderVar;
}
}
*
}
movie.as:
package {
*
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Loader;
import flash.display.LoaderInfo;
*
public class movie extends MovieClip {
*
*
public function movie() {
root.addEventListener("allComplete", allCompleteHandler);
}
private function allCompleteHandler(e:Event):void {
var loaderinfo:LoaderInfo = LoaderInfo(e.target);
if(loaderinfo.loaderURL == "file:///D|/Inject/OwnTest/loader.swf") {
var loaderClass:Class = loaderinfo.applicationDomain.getDefinition("loader") as Class;
var loaderObject:Object = new loaderClass();
}
}
}
*
}
Выдает ошибку:
Error: Error #2136: SWF-файл ***/movie.swf содержит недопустимые данные.
at movie/allCompleteHandler()
Наверное, из-за того что получается бесконечная рекурсия? Пробовал так:
loader.as
*
*
public function loader(flag:Boolean = true) {
if(flag==true) lMovie();
}
private function lMovie():void {
var loader:Loader = new Loader();
loader.load(new URLRequest("movie.swf"));
stage.addChild(loader);
}
public function loaderFunc():String {
return loaderVar;
}
}
*
movie.as:
var loaderObject:Object = new loaderClass(false);
Не помогло.
Заранее спасибо за помощь!