【问题标题】:Actionscript 3 Unexpected modification of Class properties when objects intersectActionscript 3 对象相交时意外修改类属性
【发布时间】: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
    }  
}

请您解释一下为什么会这样。

【问题讨论】:

    标签: actionscript-3 flash animation actionscript


    【解决方案1】:

    这里唯一正确的答案是痕迹必须来自其他对象。如果这是您的全部代码,则没有任何东西可以重置这些变量。所以跟踪不是来自您期望的对象。

    使用调试器获取对象的id(应该类似于Object@1241),匹配数字,看看发生了什么。

    【讨论】:

    • 当一个实例拖到另一个实例上时,就会发生这种情况。鼠标拖放监听器有问题吗?
    • 你是对的。其拖动对象的实例名称和拖放对象的实例名称不同。这是因为在拖动对象之后添加了另一个对象。请在您的答案中添加解决方案。
    • 哈,我不能像魔术师一样解决你的问题,尤其是当你没有提供完整的代码时。努力,调试,得到错误..我已经回答了你的问题,这是你的另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2015-01-05
    相关资源
    最近更新 更多