16

as3载入影片中TypeError:Error #1009:无法访问空对象引用的属性或方法

类别: Flash\Ria鼠标炸弹 @ 2008.03.16 13:13 已阅9,341次
标签: , , ,

今天遇到的一个问题:
一个swf文件,要在主文件中来载入这个swf,但是却始终遇到如下问题:
当执行loadSwf(“xxxx.swf”)后报错TypeError: Error #1009: 无法访问空对象引用的属性或方法。

载入代码如下:

  1. private function loadMainSwf(url):void {
  2. var urlR:URLRequest=new URLRequest(url);
  3. containtLoader.unload();
  4. containtLoader.load(urlR);
  5. containtLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loadHandler);
  6. containtLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompHandler);
  7. }
  8. private function loadHandler(e:ProgressEvent):void {
  9. gLoad=e.target.bytesLoaded;
  10. gAll=e.target.bytesTotal;
  11. per=Math.floor(gLoad / gAll * 100);
  12. percent=per + "%";
  13. perString.text=percent;
  14. }
  15. private function loadCompHandler(e:Event):void {
  16. containtLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,loadHandler);
  17. containtLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadCompHandler);
  18. addChild(containtLoader);
  19. }

错误的位置是子影片绑定类的构造函数和子影片中所有其他类的构造函数.
上午去搜索看了下.有两种原因:

可能因为被载入的swf中舞台上有命名的元件
我没有测试。但根据以往经验,可能有两种可能:
1、ldr为空;
2、被载入的swf有绑定类,且舞台上有命名的元件。
解决办法:
1、确认 1.swf 与当前swf在相同目录
2、若被载入的swf有绑定类,且其舞台上有命名的元件,则将所有舞台(主时间轴)上的命名元件名去掉。
——蓝色理想BBS

我叨咕了半天发现罪魁祸首:stage,情况是:
子影片绑定的类构造语句中有

  1. stage.scaleMode = StageScaleMode.NO_SCALE;
  2. stage.align = StageAlign.TOP_LEFT;

单独测试子影片是没有问题的构造函数执行时trace(stage)为[object Stage].
这说明子影片在执行构造函数时已经可以访问stage了.
而当子影片被load进主影片时,情况就不同了,构造函数执行时trace(stage)为null.
这说明被load的子影片是先执行构造函数再和”舞台”交涉. 在执行构造函数时他根本不知道stage是个什么玩意(个人观点).
因此,我把子影片中对stage的操作放到了ADDED_TO_STAGE事件里就OK了.

  1. public function MousebombV9Index() {
  2. init();
  3. }
  4. private function init():void {
  5. //***其他语句….
  6. this.addEventListener(Event.ADDED_TO_STAGE,addStageHandler);
  7. }
  8. private function addStageHandler(e:Event):void {
  9. //舞台左上对齐
  10. stage.scaleMode = StageScaleMode.NO_SCALE;
  11. stage.align = StageAlign.TOP_LEFT;
  12. }

这样无论是自己独立用还是被load作子影片,都可以了.

本文对您有用吗? 何不留下评论继续交流, 或者在您的博客上引用本文继续探讨.
您可以订阅读者对本文的回应或者订阅本博客以在您的阅读器中自动获取更新.

本文居然还有同伙!有兴趣不?

才 4 条评论 - “as3载入影片中TypeError:Error #1009:无法访问空对象引用的属性或方法”

  1. remaerd Windows XP Firefox 3.0.1 说:

    一直以来给了我很多帮助。谢谢

    [回复]

  2. zhangxinxu Windows XP Firefox 3.0.11 说:

    很有帮助!

    [回复]

  3. 思伟 Windows XP Internet Explorer 8.0 说:

    今天遇到一样问题,来到这发现是一样的原因。

    [回复]

  4. 67 Windows XP Firefox 3.6 说:

    今天也遇到相同问题,一个下午都没有找到原因,谢谢你的文章。

    [回复]

您再来一条评论吧?