Actionscript 3 对象相交时意外修改类属性
Posted
技术标签:
【中文标题】Actionscript 3 对象相交时意外修改类属性【英文标题】:Actionscript 3 Unexpected modification of Class properties when objects intersect 【发布时间】:2014-07-22 19:05:32 【问题描述】:在我的actionscript 3
类中,我放置了一个名为oldX 的私有属性来保存MovieClip 的初始位置。
当一个实例拖到另一个实例上时,这些属性会意外更改。
public class Piece extends MovieClip
private var oldX:Number;
private var oldY:Number;
public function Piece()
//...
oldX = this.x;
oldY = this.y;
//action listeners
public function startDragging(evt:MouseEvent) evt.startDrag(true);
public function stopDragging(evt:MouseEvent)
evt.stopDrag();
//when one Piece instance drags on another instance
trace(oldX); //these are not the original values at this moment
trace(oldY); //these are not the original values at this moment
请您解释一下为什么会这样。
【问题讨论】:
【参考方案1】:这里唯一正确的答案是痕迹必须来自其他对象。如果这是您的全部代码,则没有任何东西可以重置这些变量。所以跟踪不是来自您期望的对象。
使用调试器获取对象的id
(应该类似于Object@1241),匹配数字,看看发生了什么。
【讨论】:
当一个实例拖到另一个实例上时,就会发生这种情况。鼠标拖放监听器有问题吗? 你是对的。其拖动对象的实例名称和拖放对象的实例名称不同。这是因为在拖动对象之后添加了另一个对象。请在您的答案中添加解决方案。 哈,我不能像魔术师一样解决你的问题,尤其是当你没有提供完整的代码时。努力,调试,得到错误..我已经回答了你的问题,这是你的另一个问题。以上是关于Actionscript 3 对象相交时意外修改类属性的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3.0 当你单击一个对象时,我如何使它进入下一个场景?
ActionScript 3 - 在外部类中使用 MovieClip