在AS3中定位对象

时间:2013-09-01 06:47:04

标签: actionscript-3 object actionscript this target

我想知道如何在flash as3中定位特定的对象/实例。我在舞台上有2个对象,现在我们称它们为obj1obj2(带有实例名称)。我试图让ob1的轮换速度基于obj2的{​​{1}}位置。我想将代码放在y内,所以我想我是否想从obj1内部obj2定位我只是使用类似obj1的内容但由于某种原因事情只是保持它的旋转仍然。我使用了本机代码编辑器顶部的“目标”按钮,但它仍然给了我相同的this.rotation = this.obj2.y / 10;。有任何想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果你想根据obj2'y更新obj1的旋转,你应该在一个ENTER_FRAME处理程序中调用this.rotation = this.obj2.y / 10。或者当obj2的y发生变化时,调用obj1中的函数来改变旋转。

假设A是obj1类

解决方案1 ​​,使用enter_frame事件

class A {

    private var obj2:Object;

    public function class A($obj2:Object) {
        obj2 = $obj2;

        this.addEventListener(Event.ENTER_FRAME, changeRotation);
    }


    private function changeRotation(e:Event):void {
        this.rotation = this.obj2.y / 10;
    }
}

解决方案2 ,在obj2.y更改时更改轮播

class A {

    public function changeRotation(obj2:Object):void {
        this.rotation = this.obj2.y / 10;
    }
}

答案 1 :(得分:0)

假设两个DisplayObjetcsstage上彼此相邻,他们有一个共同的父母,所以从obj1“定位”obj2的方法是:

this.rotation = this.parent.getChildByName("obj2").y / 10;

换句话说,除非您在Pan的答案中设置自己对其他DisplayObjetcs的引用,否则您可以通过它们在分层display list中的位置来引用它们。