我正在尝试创建一个扩展Sprite的类,附加一些私有属性,并能够使用getter和setter读取和写入这些属性。 简单...但编译器抛出此错误“通过静态类型flash.display:Sprite的引用访问可能未定义的属性速度。” 如果我将我的类设置为扩展MovieClip对象,它就可以工作。 有人能解释一下这背后的逻辑吗?为什么我不能使用带有Sprite的getter和setter?
以下是示例代码:
package {
import flash.display.Sprite;
public class Vehicle extends Sprite{
private var _speed:uint = 3;
public function get speed():uint {
return _speed;
}
public function set speed(value:uint):void {
_speed = value;
}
public function Vehicle() {
super();
}
}
}
答案 0 :(得分:2)
您需要声明Vehicle的实例,因为Sprites不像Movieclips那样动态。
所以,这样做不起作用:
var vehicle:Sprite = new Vehicle;
vehicle.speed = 5;
这应该有效:
var vehicle:Vehicle= new Vehicle;
vehicle.speed = 5;
var vehicle:Sprite = new Vehicle;
Vehicle(vehicle).speed = 5; //We cast the vehicle instance to Vehicle type.
此外,我们可以使用as
运算符进行投射:
var vehicle:Sprite = new Vehicle;
(vehicle as Vehicle).speed = 5; //We cast the vehicle instance to Vehicle type.