gpt4 book ai didi

Flash/AS3 安全性 - 将影片剪辑引用传递给子 swf?

转载 作者:行者123 更新时间:2023-12-01 05:46:07 26 4
gpt4 key购买 nike

关于我的预加载器和主应用程序类(所有 AS3/Flash CS4)之间的交互,我看到了一些奇怪的行为。粗略地说,这是事件的流程:

  • Preloader.swf 加载两个东西:main.swf,它是主应用程序,以及由文本和图像组成的自定义对象的资源,这些资源由预加载器从各种 URL 组装到对象中。
  • 加载完成后,Preloader 将 main.swf 添加为子项。 Preloader 然后在 main.swf 上调用 init(myCustomObject),其中 myCustomObject 是对在步骤 1 中由 preloader 组装的对象的引用,公共(public)函数 init(customObject:CustomObject):void) 是 Main.as 中的方法签名。 (Preload.as 将 Main 转换为 * 类型的对象,以便能够调用任意函数而不必担心编译时错误。)
  • Main.as 实际上是应用程序本身的容器,所以它实例化了一个 new Application(customObject);传递对由预加载器组装的 customObject 的引用,并将其添加为子项。

  • 我已经安装了 thunderbolt所以我可以在应用程序运行时记录消息,这就是我确定正在发生的事情。步骤 3 中的 Application 对象的实例化是造成问题的原因;出于某种原因,声明 myMainApplication = new Application(customobj);在 Main.as 中抛出一个可爱的 #1009错误,通常表示空指针引用或类似的东西。

    奇怪的是,我在 Application.as 中添加了一些日志记录。 ,并且它似乎收到了对 customObject 的引用没有问题;调用 toString()customObjectApplication的构造函数完全返回预期的数据。

    换句话说,语句 myMainApplication = new Application(customobj);在 Main.as 中似乎同时成功和失败。是什么赋予了?

    最佳答案

    我的猜测是你的转换跨越了应用程序域,所以虽然类型是相同的文件,但在每个应用程序域的内存中它们是 2 个单独的具体类型。有很多方法可以解决这个问题,可能从加载到同级应用程序域而不是子域开始,或者不打扰强制转换并在无类型对象上显式调用有问题的函数。

    WeLoveAppDomain如果确实是这个问题,应该会有所帮助。你能举出最小的例子来证明我们解构的失败吗?

    关于Flash/AS3 安全性 - 将影片剪辑引用传递给子 swf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140462/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com