我正在尝试设置一个概念验证,将一个SWF加载到另一个SWF中进行换肤。设置如下:
app.fla
,其附加了ActionScript类AppMain.as
skin.fla
,其中包含UI组件 AppMain.as
显然会包含所有应用程序的逻辑;然后,我希望能够根据在特定皮肤中定义的实例名称来影响加载的皮肤文件中包含的UI组件。
例如,如果我的TextField
实例名称为myTextField
,我希望能够以编程方式在{{{I}中设置该文本字段的text
属性1}}。
基于AppMain.as
参数加载外观文件的导出app.swf
将加载到如下所示的HTML文档中:
flashvar
这只会将<html>
<head>
<title>Test</title>
</head>
<body>
<div id="swf"><!--//--></div>
<script src="jquery.js"></script>
<script src="swfobject.js"></script>
<script>
$(document).ready(function() {
$('#swf').flash({
swf: 'app.swf',
width: 550,
height: 400,
flashvars: {
skin: 'skin.swf'
}
});
});
</script>
</body>
</html>
加载到app.swf
#swf
中。有关如何将皮肤SWF加入我的主应用程序SWF的任何帮助将不胜感激。我目前有以下(这不起作用)。
<div>
我试图加载的皮肤很简单,因为它有一个红色的背景,所以我可以看到它是否已被加载;它不是我导出的HTML页面仍然有白色背景。
我上面有错误吗? Flash Professional CS5中的控制台在“编译错误”选项卡下没有给我任何错误。
答案 0 :(得分:0)
我尝试使用较小的修改代码,它对我来说很好。首先检查这一行:
self.addChild(myLoader);
如果您在此处编写的代码已完成,则不会声明自变量(但在这种情况下,您应该获得“未定义属性的访问”错误)。 如果声明了该变量,请检查是否添加到显示列表中。在没有添加的情况下,您的问题可以在这种情况下重现:您没有看到已加载的内容,也没有出现任何错误。
如果它仍然无效,请尝试向Loader实例添加一些事件侦听器,以查看加载过程中发生的情况。
myLoader.contentLoaderInfo.addEventListener( Event.INIT, initHandler );
myLoader.contentLoaderInfo.addEventListener( Event.OPEN, openHandler );
myLoader.contentLoaderInfo.addEventListener( Event.UNLOAD , unLoadHandler );
myLoader.contentLoaderInfo.addEventListener( Event.COMPLETE , completeHandler );
myLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR , ioErrorHandler );
myLoader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS , progressHandler );
myLoader.contentLoaderInfo.addEventListener( HTTPStatusEvent.HTTP_STATUS , httpStatusHandler );
myLoader.contentLoaderInfo.addEventListener( SecurityErrorEvent.SECURITY_ERROR , securityErrorHandler);
如果您有任何其他问题,请询问。
干杯
Tamas Gronas