Flash/AS3安全-将movieclip引用传递给儿童swf?
在我的预加载程序和主要应用程序类(都是AS3/Flash CS4)之间的交互方面,我看到了一些奇怪的行为。大致来说,以下是事件的流程:Flash/AS3安全-将movieclip引用传递给儿童swf?,flash,actionscript-3,security,preloader,Flash,Actionscript 3,Security,Preloader,在我的预加载程序和主要应用程序类(都是AS3/Flash CS4)之间的交互方面,我看到了一些奇怪的行为。大致来说,以下是事件的流程: preload.swf加载两个东西:main.swf,它是主应用程序,以及由文本和图像组成的自定义对象的资产,这些内容由预加载程序从各种URL组装到对象中 加载完成后,预加载程序将main.swf作为子级添加。预加载程序然后在main.swf上调用init(myCustomObject),其中myCustomObject是对预加载程序在步骤1中组装的对象的引用,
myMainApplication=新应用程序(customobj)抛出了一个可爱的#1009
错误,它通常表示一个空指针引用或类似的东西
奇怪的是,我在应用程序中添加了一些日志记录。作为
,它似乎毫无问题地接收到了对customObject
的引用;在应用程序
的构造函数中的自定义对象
上调用toString()
,将准确返回预期的数据
换句话说,语句myMainApplication=newapplication(customobj)似乎同时成功和失败。提供了什么?确保Flash Player中的全局安全设置允许本地访问该目录
试试这个。转到发布设置-本地播放安全性-选择“仅访问网络”。Flash CS4默认值为“仅访问本地文件”,可能不喜欢。我希望这是有用的
见:
我认为我们需要看到更多的代码,但要开始:“customobj”。。。你在哪里定义它?您在其他地方都提到“customObject”。那是打字错误吗?如果该确切语句抛出错误,那么“customobj”很可能为空。我猜您的强制转换是跨应用程序域的,因此尽管类型是相同的文件,但在每个应用程序域的内存中,它们是两个独立的具体类型。有很多方法可以解决这个问题,可以从加载到同级应用程序域而不是子域开始,也可以不必费心于强制转换,而是显式地在非类型化对象上调用有问题的函数
如果事实上是这个问题,应该会有所帮助。你能不能把最小的例子放在一起,让我们来演示这个失败,让我们来设计它?你是使用FlexBuilder/FlashDevelop还是使用FlashIDE?
另外,如何设置预加载程序
如果使用FlexBuilder/FlashDevelop构建应用程序,是否在编译器选项中指定了框架开始?原因是myMainApplication=new Application(customobj)
似乎同时成功和失败的原因是我没有完全理解AS3中的try/catch
块的操作方式。在应用程序
的构造函数的子例程中引发空指针异常,该异常发生在应用程序
检查以确保其接收到对customobj的引用的代码之后。此错误被Main
中Application
实例周围的try/catch
块捕获,因为它是最近的封闭错误检查代码
希望我的错误能挽救其他人犯同样的错误