我有2个类,Display保存当前选定的组件:
public class Display
{
public static var selectedComponent:Component;
}
组件具有ID字符串,并且单击时设置selectedComponent变量:
public class Component extends MovieClip
{
public var id:String;
addEventListener(MouseEvent.CLICK, function() {
Display.selectedComponent = this;
});
}
我现在希望能够使用Display.selectedComponent.id =“test”设置ID;
我遇到的问题是转换错误:
TypeError: Error #1034: Type Coercion failed: cannot convert global@4693041 to Component.
删除selectedComponent变量类型,使其读取public static var selectedComponent;删除转换错误,似乎更改了ID变量,但它似乎只是对象的副本。
有什么建议吗?
由于
答案 0 :(得分:1)
我认为在将“this”分配给selectedComponent时你的范围是错误的。 本地函数定义中的“this”未指向组件类。
试试这样:
var scope:Component = this;
addEventListener(MouseEvent.CLICK, function() {
Display.selectedComponent = scope;
});
或者像这样:
import flash.events.Event;
public class Component extends MovieClip
{
public var id:String;
public function Component() {
addEventListener(MouseEvent.CLICK, onClick);
}
private function onClick(e:Event) {
Display.selectedComponent = this;
}
}
答案 1 :(得分:0)
如果你不使用类型(public static var selectedComponent;
),默认情况下它将是Object类型。对象不会在赋值时复制;他们只持有参考文献,因此不会复制。
您的代码看起来应该有用......
我知道这没有任何意义,但是在分配时可能会将this
投射到组件可能会有所帮助:Display.selectedComponent = Component(this);
你永远不会知道......