Flash AS3 - 库中相同基类的对象 - 类型强制失败

时间:2009-12-14 20:00:28

标签: flash actionscript-3 class

这件事发生在我身上,我还没有找到一个好的解决方案。假设您有两个类,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.

3 个答案:

答案 0 :(得分:3)

您是否使用编译选项“自动声明舞台实例”?在这种情况下,您可能必须禁用它并添加:

public var fruit:Fruit;

到您的Tree类。这会将“水果”分配给舞台上的MovieClip,实例名称为“fruit”,避免冲突。请查看this post以获取更多信息。

答案 1 :(得分:1)

typeoneerror的答案确实有效。 Flash会将fruit2的类型设置为fruit1,这与将它的Base设置为Fruit基本相同。

一个非常烦人的警告,但一切正常

答案 2 :(得分:0)

http://jongrant.wordpress.com/2012/01/10/as3-warning-all-instances-named-will-be-automatically-declared-as-in-symbols-that-use-as-their-base-class-in-symbols-that-are-linked-to-user-defined-base-classes-instances-with-the-same-name/

这个解决方案对我来说非常合适,只需取消选中该框即可。\ n \ n

文件 - >发布设置 - > Flash->设置...您已自动声明舞台实例