我正在关注hemanth sharma关于starling框架的优秀教程系列。我或多或少地复制了他的代码并对我想到的游戏做了一些改变。代码与他在项目中使用的代码相同。然而,我遇到了一个奇怪的错误:“错误1067”它抱怨所谓的无关类型的“隐含强制”。
我浏览了之前的问题并发现了这个问题:
1067: Implicit coercion of a value of type Class to an unrelated type flash.display:DisplayObject
我收到的错误消息基本相同,但遗憾的是该解决方案不适用于我的问题。此外,我在许多有趣的不同风格中得到了这个错误。
我有一个名为NavigationEvent的自定义事件类,可以扩展 starling.events.Event。当用过的尝试在之间切换时 游戏屏幕此事件已发送。这是一些代码:
import starling.events.Event;
public class NavigationEvent extends Event
发送方式如下:
this.dispatchEvent(new NavigationEvent(NavigationEvent.CHANGE_SCREEN,{id:"play"},true));
错误消息显示:
错误1067:类型事件值的隐式强制:NavigationEvent到不相关的类型starling.events:Event
当我第一次编写代码时,代码工作正常,但现在,在我写完之后 改变了它破坏的程序的另一部分。我无法解释 它。我从starling.events.Event扩展了NavigationEvent所以 类型绝对不是无关的。我甚至跑了这个程序 这个。不可否认,在屏幕之间切换的例程还没有 实施但事件没有问题。
为了让用户触发此事件,我添加了一个按钮
屏幕。它是椋鸟标准starling.display.Button;
。该
button是我的屏幕类的成员变量
private var playBtn:Button;
然而,这一行会导致错误:
playBtn=new Button(Assets.getAtlas().getTexture("play"));
这次错误更加令人愤慨:
错误1067:类型为starling.textures的值的隐式强制:纹理为不相关的类型 starling.textures:纹理
我该怎么办?
答案 0 :(得分:3)
有时,如果在Flash Builder中打开了两个Flash Pro项目,并且两个项目在代码路径中都具有相同的目录,则可以获得您遇到的错误。当您在其中一个项目中打开文件时会发生这种情况,但是您正在编译并运行这两个项目(特别是如果您正在调试并设置了断点)。
我认为发生的事情是FB在同一个文件中编译,好像它是一个不同的文件,因为它从文件打开的那个文件“到达”并将其编译成它刚引用的那个,但不是开放的。打开的文件扩展了其项目中的基类,而不是项目中带有fla / xfl的基类。虽然我们知道它实际上是一个文件,但FB显然无法弄明白。我觉得你很轻松,因为我过去必须采取真正的英雄措施来解决这个问题。
您可以通过将共享代码移动到库项目中来解决这个问题,我认为这是工程师可能认为每个人都会这样做的场景。我认为他们不能(或者至少没有)预见到历史Flash开发实践和与FB和FP一起工作的怪癖会导致这个特定的bug出现。