StupidBeauty
Read times:655Posted at:Fri Dec 21 00:13:03 2012
- no title specified

ActionScript3中的一个坑:ScrollPane

本座最近做的这个数据可视化项目中, 要显示中文,并且是要抗锯齿的,于是嵌入了一整个字体文件 ,结果导致编译出的swf文件达到4M。于是 就要另外做个载入器,这个载入器用来载入 主要的那个4M的swf文件,并且显示出进度条表示载入进度。

对于 上面这个需求,按照网络上搜到的方法去搞就行了。

然而 actionscript3中的一个坑卡了本座一下。

在主要的swf文件中,要用到滚动条 ,于是直接使用了fl.containers.ScrollPane,并且按照 要求把FlashControls.swc加到项目的库中了。 在只打开并且显示此主swf文件的情况下,一切正常。

当本座使用载入器swf文件来载入主swf文件时,问题就有了。 这种情况下,滚动条容器不会正常显示。使用调试版的flash播放器来打开时会报告说:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at fl.containers::ScrollPane/drawBackground()
at fl.containers::ScrollPane/draw()
at fl.core::UIComponent/callLaterDispatcher()

查了大概2个小时,本座得到的结论就是,这是actionscript3中的一个坑。

第一 点,这里的网页说到了,遇到上面那个报错,表示妳的项目里没有加上FlashControls.swc,从目前的情况来看,这个作者说得对。 http://www.evontech.com/login/topic/1014.html

第二 点,这里的网页中,作者 提出一个问题: 当被载入的swf文件中使用了ScrollPane时,是不是负责载入工作的swf里也必须把ScrollPane的控件加到项目里去?从目前的情况来看,这个问题的答案是:是。 http://stackoverflow.com/questions/2668564/scrollpane-component-required-in-library-even-though-it-is-not-being-used-by-par

那么碰到 这种情况 怎么解决呢?本座是这样解决的:

主要的swf不用做什么修改,因为它的功能本来就是正常的。 在负责载入主swf的那个小swf 的主类 中,声明 一个类型为ScrollPane 的成员变量, 不使用它,并且要把FlashControls.swc加入到小swf的项目中 ,这样ScrollPane相关代码会被编译到小swf中去。 再试试看,妳会发现已经能够正常载入大的swf并且显示了。

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4