让我们按照您的错误顺序来检查一下。
-
错误1046:找不到类型或类型不是编译时常量:preloader_mc
&
错误1180:调用可能未定义的方法preloader_mc。
这些错误是因为编译器找不到任何名为
preloader_mc
如果您的库中有一个名为
预加载程序
,这还不够,你需要去它的属性并选择
export for actionscript
,然后给它一个类名(类名可以与库资产名称相同,因此:
预加载程序
).
不过要确保你没有;不要有任何与类名冲突的变量或函数名(当前的情况是
预加载程序
). 通常的做法是使所有类名以大写字母开头,所有函数和变量以小写字母开头。
2.
错误1061:通过静态类型flash的引用调用可能未定义的方法addListener。display:Loader。
在AS3中,您需要的是
addEventListener
。使用
Loader
类,您需要侦听每个事件,而不是为其提供具有预设方法的上下文。它接受字符串事件名称和回调函数。所以你可能想要这样:
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaderComplete);
imgLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
function progressHandler(e:ProgressEvent):void {
//this function will run whenever progress in the load is made
trace("progressHandler: bytesLoaded=" + e.bytesLoaded + " bytesTotal=" + e.bytesTotal);
}
function imgLoaderComplete(e:Event):void {
//this function will be called after the loader finishes loading
}
这也是一个好主意
IO_ERROR
&
SECURITY_ERROR
加载程序上的事件:
imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
imgLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
-
错误1061:通过静态类型flash的引用调用可能未定义的方法loadClip。display:Loader。
没有调用的方法
loadClip
在Loader类上。您需要以下内容(开始加载)
imgLoader.load(new URLRequest("yoururlhere"));
有关如何正确使用
装载机
类,请阅读
documentation
.
所以,最后,它应该看起来更像这样:
//take your preloader movie clip, and export it for actionscript with the class name "Preloader_MC"
//create vars for the pre loader and loader (don't create the objects yet though)
var preLoader:Preloader_MC;
var imgLoader:Loader;
skullo_b.addEventListener(MouseEvent.CLICK, skullo_bClick);
angel_b.addEventListener(MouseEvent.CLICK, angel_bClick);
function skullo_bClick(e:MouseEvent):void {
startPreload("load/skullo.swf")
}
function metal_bClick(e:MouseEvent):void {
startPreload("load/metal.swf");
}
function startPreload(url) {
//if the loader is currently populated, destroy it's content
if (imgLoader) {
imgLoader.unloadAndStop();
removeChild(imgLoader);
}else {
//it doesn't exist yet, so create it and add the listeners
imgLoader = new Loader();contentLoaderInfo
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaderComplete);
imgLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
imgLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
}
if (!preLoader) {
preLoader = new PreloaderMC();
addChild(preLoader);
}
imgLoader.load(new URLRequest(url));
addChild(imgLoader);
}
function removePreLoader():void {
removeChild(preLoader);
preLoader = null;
}
function progressHandler(e:ProgressEvent):void {
var percentLoaded:Number = e.bytesLoaded / e.bytesTotal; //number between 0 - 1
preLoader.value = percentLoaded;
}
function imgLoaderComplete(e:Event):void {
removePreLoader();
}
function ioErrorHander(e:IOErrorEvent):void {
//file not found, do something
removePreLoader();
}
function securityErrorHandler(e:SecurityErrorEvent):void {
//do something, file wasn't allowed to be loaded
removePreLoader();
}