论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

一个很头痛的SWF加载问题

文章类别:Flash | 发表日期:2008-9-21 15:04:18

  
(aorition)问题:最近做个小东西,两个SWF(一个主SWF,一个作为模块预备加载进主SWF),分别运行都没有问题,但是一旦加载进去就出问题了。

报错:
=============================
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
    at AORDATA.AORas::PICmcproClass$iinit()
    at flash.display::Sprite/flash.display:Sprite::constructChildren()
    at flash.display::Sprite$iinit()
    at flash.display::MovieClip$iinit()
    at AORDATA.AORas::PicshowerClass$iinit()
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
    at MethodInfo-55()
    at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/flash.net:URLLoader::onComplete()
======================================================
已经迷糊了,请问各位大大,这个怎么解决呀?还有就是,做这样加载处理的时候有什么地方需要注重?请大大们提醒下...

(Poshidon)回复1:对被加载影片逐块测试吧。我的经验:可能是和stage有关的东东...
(zszen)回复2:提示你有个没定义的对像在被搞,你去仔细检查代码行...

最终解决方法:
(aorition)
感谢大家,经过仔细检查终于把问题解决了。对,问题出在stage属性为null身上,害死个人的stage啊~~ (哭)
====================
细部分析和总结:
由于主SWF和子SWF单独运行都没有问题,一旦要求主SWF加载子SWF的时候就报找不对象或者属性这个问题.导致子SWF不能顺利运行.
原因在子SWF的stage属性上. 单独运行的子SWF的时候,实例已经处于舞台上.所以子SWF的stage属性是事实存在的.所以在子SWF类构造函数中引用stage属性是正常的.但是一旦被主SWF加载的时候.主SWF还没有来得及addChild(子SWF),导致子SWF的stage属性为null.在过构造函数中引用值为null的stage导致错误发生.以至于不能正常加载.

=========
解决这个问题办法:
      在子SWF类构造函数中加入(红色)
//举例code:
//===============
package{
    import flash.display.MovieClip;
    import flash.events.Event;
    public class  testClass extends MovieClip{
            public function testClass():void
            {
            this.addEventListener(Event.ADDED_TO_STAGE,onStageHandler);
            }
              priatve function onStageHandler(evt:Event)
                {
                init()
                this.removeEventListener(Event.ADDED_TO_STAGE,onStageHandler);
                }
                priatve function init():void
               {
                //子SWF的主体构CODE放这里.
              //对stage属性的引用
              }
    }//endclass
}//endpackage

进入论坛继续讨论学习:http://space.flash8.net/bbs/thread-351900-1-1.html
上一篇:{技巧}求教铅笔作画的效果 人气:1452
下一篇:{技巧}flash叠加问题 人气:2608
视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058