【发布时间】:2011-08-02 16:14:26
【问题描述】:
我正在尝试创建一个扩展 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();
}
}
}
【问题讨论】:
-
您的车辆实例是 Sprite 类型还是 Vehicle 类型?如果是前者,则需要在获取/设置道具之前将其转换为 Vehicle。
-
你可以用get/set和Sprite一起使用,肯定是其他地方有问题。请在您实例化车辆的位置以及使用访问器的位置发布代码。
-
我是这样做的:var vehicle:Sprite = new Vehicle(); addChild(车辆);
-
谢谢,如果它被声明为Vehicle。
-
另外请记住,在某些情况下,最好将其键入为 Sprite 并通过强制转换访问其独特属性。前任。 (车辆作为车辆)。速度。这样你就可以使用相同的变量,但在不同的实现中为相似的类型拆分逻辑
标签: actionscript-3 class static setter getter