Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash/AS3安全-将movieclip引用传递给儿童swf?_Flash_Actionscript 3_Security_Preloader - Fatal编程技术网

Flash/AS3安全-将movieclip引用传递给儿童swf?

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中组装的对象的引用,

在我的预加载程序和主要应用程序类(都是AS3/Flash CS4)之间的交互方面,我看到了一些奇怪的行为。大致来说,以下是事件的流程:

  • preload.swf加载两个东西:main.swf,它是主应用程序,以及由文本和图像组成的自定义对象的资产,这些内容由预加载程序从各种URL组装到对象中

  • 加载完成后,预加载程序将main.swf作为子级添加。预加载程序然后在main.swf上调用init(myCustomObject),其中myCustomObject是对预加载程序在步骤1中组装的对象的引用,而公共函数init(customObject:customObject):void是main.as中的方法签名。(Preload.as将Main强制转换为*类型的对象,以便能够调用任意函数而不必担心编译时错误。)

  • init(myCustomObject) public function init(customObject:CustomObject):void)
  • 实际上Main.as是应用程序本身的容器,因此它实例化了一个新的应用程序(customObject);传递对预加载程序组装的customObject的引用,并将其作为子对象添加
  • new Application(customObject); 我已经安装,以便在应用程序运行时记录消息,下面是我确定正在发生的事情。第3步中应用程序对象的实例化是导致问题的原因;出于某种原因,该声明
    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
    块捕获,因为它是最近的封闭错误检查代码

    希望我的错误能挽救其他人犯同样的错误