0

我遇到了“点”类型可变速度变化的问题,而没有任何更改它的调用。

private function framecode(e:Event) {
  trace(getVelocity().y);
  tracks.gotoAndStop(2);
  trace(getVelocity().y);
}

此代码是称为“坦克”的类的一部分,该类扩展了使用速度的类(我的移动对象类)。velocity是一个私有点类型变量,getVelocity()是一个公共访问方法。track是一个命名的movieClip,包含在与tank链接的那个中。事件侦听器是 ENTER_FRAME。轨道的帧上没有编码。

不知何故,这两条迹线给出了不同的值(第一个是正确的),我无法弄清楚 gotoAndStop() 可能如何影响它(以及如何修复它)。

我发现 play() 不会重现错误,但 prevFrame() 和 nextFrame() 会。由于变量是私有的,因此此类甚至不应该访问它来更改它。

另一个奇怪的是,如果将事件侦听器更改为 FRAME_CONSTRUCTED 或 EXIT_FRAME,会有很大的延迟,我的 movieClip 会在几秒钟后随机消失。

感谢您的阅读,任何帮助将不胜感激。

4

1 回答 1

1

你的velocity变量是私有的,所以一个人可以在课堂之外访问它。

但是,getVelocity()正在返回对您的velocity变量的引用。一旦有人拥有该引用,他们就可以更改其属性的值: getVelocity().y = 3. 所以这种情况发生也不是不可能。

解决此问题的一种方法是将trace()语句添加到/设置断点,getVelocity()以便您可以看到它的使用位置。

您可以使用Point该类执行类似的操作,但您必须扩展它,添加 getter/setter 方法y(在调用它们时跟踪),并修改您的代码以使用 getter/setter。这可能是值得的(它很简单),修改代码以使用 getter 的行为可能会帮助您发现问题所在。

于 2013-07-02T18:20:49.183 回答