【问题标题】:Actionscript: Problems with implicit coercionActionscript:隐式强制的问题
【发布时间】:2012-10-24 02:14:28
【问题描述】:

我正在关注 hemanth sharma 的关于八哥框架的优秀教程系列。我或多或少地复制了他的代码,并对我想到的游戏进行了一些更改。代码与他在项目中使用的代码有 80% 相同。尽管如此,我遇到了一个奇怪的错误:“错误 1067”它抱怨所谓的不相关类型的“隐式强制”。

我浏览了以前的问题,发现了这个:

1067: Implicit coercion of a value of type Class to an unrelated type flash.display:DisplayObject

我收到的错误消息基本相同,但不幸的是,该解决方案不适用于我的问题。此外,我在许多有趣的不同风格中都遇到了这个错误。

  1. 我有一个名为 NavigationEvent 的自定义事件类,它可以扩展 椋鸟.events.Event。当使用过的人试图在 发送此事件的游戏屏幕。这是一些代码:

    import starling.events.Event;
    
    public class NavigationEvent extends Event
    

    它是这样发送的:

    this.dispatchEvent(new NavigationEvent(NavigationEvent.CHANGE_SCREEN,{id:"play"},true));
    

    错误信息说:

    错误 1067:将 events:NavigationEvent 类型的值隐式强制转换为不相关的类型 starling.events:Event

    代码在我第一次编写时运行良好,但现在,在我写完之后 更改了程序的另一部分,它被破坏了。我无法解释 它。我从 starling.events.Event 扩展 NavigationEvent 所以 类型绝对不是无关的。我什至像这样运行程序 这。诚然,在屏幕之间切换的例程还没有 已实现,但触发事件没有问题。

  2. 为了让用户触发这个事件,我在 屏幕。是八哥标准starling.display.Button;。这 button 是我的屏幕类的成员变量

    private var playBtn:Button;
    

    但是这行会导致错误:

    playBtn=new Button(Assets.getAtlas().getTexture("play"));
    

    这次的错误更离谱:

    错误 1067:将starling.textures:Texture 类型的值隐式强制转换为不相关的类型 starling.textures:纹理

我该怎么办?

【问题讨论】:

  • 您是否正在将一个 swf 加载到另一个中?
  • +1 可以清楚地描述问题并显示以前的研究。
  • @Amy Blankenship,没有。这是一个独立的项目
  • 好的,所以我会将您的 dispatchEvent 代码分成两行并跟踪和设置断点。此外,您是否在 Flash Builder 中处理此问题,您是否有可能同时打开两个引用相同代码的项目?
  • 我在 FlashBuilder 工作,刚刚关闭了所有其他项目。现在一切正常。错误就消失了。我不知道这怎么可能。它来来去去随意。我无法想象其他项目会如何影响这一点,因为它们使用相同的代码进行导航,但在不同目录中的不同文件中。你的建议听起来很神奇,但它奏效了。你可能想把它作为一个答案——我很乐意接受并支持它。如果可能的话,我会很感激更详细的解释,并很高兴有一个链接来阅读这个主题

标签: actionscript-3 flash web-applications actionscript web


【解决方案1】:

有时,当您在 Flash Builder 中打开了两个 Flash Pro 项目,并且两个项目在代码路径中具有相同的目录时,您可能会遇到您遇到的错误。当您在其中一个项目中打开文件时会发生这种情况,但您正在编译和运行这两个项目(尤其是在您正在调试并设置断点时)。

我认为正在发生的事情是 FB 在同一个文件中编译就好像它是一个不同的文件,因为它从文件打开的地方“延伸”并将其编译成它只是被引用但未打开的那个。打开的文件扩展了 its 项目中的基类,而不是项目中包含 fla/xfl 的基类。虽然 我们 知道它实际上是一个文件,但 FB 显然无法弄清楚。我认为你真的很轻松,因为我过去不得不采取真正英勇的措施来解决这个问题。

您可以通过将共享代码移出库项目来解决此问题,我认为工程师可能认为每个人都会这样做。我认为他们无法(或至少没有)预见到历史 Flash 开发实践的交集以及将 FB 和 FP 一起使用的怪癖会导致此特定错误出现。

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多