《ActionScript 3.0 Cookbook》读书笔记6.3-控制载入的外部影片
控制载入的外部影片
在学习Recipe 6.7. Loading and Interacting with External Movies 一节时发现问题,如果按照书中所讲,在Event.INIT事件时就可以使用_loader.content来引用载入的影片了。但是,我在运行的时候却发生了这样的错误:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at LoadExternalMovie/::onMovieInit()
这也就意味着,在INIT事件发生的时候,_loader.content并没有初始化成功。本以为是书中的代码有错,就使用了Timer类来进行延迟处理,1秒钟之后再调用_loader.content与影片进行交互。虽然是成功了,但总感觉有些不对,书中的代码应该不会有错。后来仔细检查才发现,在注册事件的时候,我误将_loader.contentLoaderInfo写成了_loader.loaderInfo。前者来自Loader类,而后者继承自DisplayObject类。虽然后者也会触发INIT事件,却与被载入的影片无关,自然,当INIT发生的时候,_loader.content是没有准备好的,出错也是理所当然了。
除了这点,还有三点需要注意的:
-
本节中所讲的控制载入影片的方法仅适用与ActionScript3编写的swf
-
要调用外部载入的影片的方法,需要将_loader.content保存在类型生命为*****的实例中,否则会出现运行时错误。
我感觉这就好像在ActionScript2中将不确定类型的值设置为Object类型以规避编译器的类型检验。只不过ActionScript2时是在规避编译错误,而这是规避运行时的错误罢了。
-
在试图调用外部影片中本来不存在的方法或属性时,会抛出ReferenceError异常
- 文章ID:305
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/as3-cookbook-63/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。