这件事发生在我身上,我还没有找到一个好的解决方案。假设您有两个类,Tree(com.company.Tree)和Fruit(com.company.Fruit)。在Flash的舞台上,Tree有一个Fruit实例(class = fruit1,base class = com.company.Fruit),它的实例名称是fruit。一切都很好,直到你复制树和水果电影剪辑来创建第二个树,它有一个不同的Fruit实例(class = fruit2,base class = com.company.Fruit),但它的实例名称在第二个树是还有水果。这是必要的,因为Tree类的代码引用了“fruit”(例如,fruit.x + = 20)。
我明白了:
Warning: All instances named 'fruit' will be automatically declared as fruit1 in symbols that use fruit as their base class. In symbols that are linked to user-defined base classes, instances with the same name must be of the same type.
当然这是:
TypeError: Error #1034: Type Coercion failed: cannot convert fruit2@4be85871 to fruit1.
答案 0 :(得分:3)
您是否使用编译选项“自动声明舞台实例”?在这种情况下,您可能必须禁用它并添加:
public var fruit:Fruit;
到您的Tree类。这会将“水果”分配给舞台上的MovieClip,实例名称为“fruit”,避免冲突。请查看this post以获取更多信息。
答案 1 :(得分:1)
typeoneerror的答案确实有效。 Flash会将fruit2的类型设置为fruit1,这与将它的Base设置为Fruit基本相同。
一个非常烦人的警告,但一切正常
答案 2 :(得分:0)
这个解决方案对我来说非常合适,只需取消选中该框即可。\ n \ n
文件 - >发布设置 - > Flash->设置...您已自动声明舞台实例