0

我想知道如何在 Flash as3 中定位特定对象/实例。我在舞台上有 2 个对象,现在我们将调用它们obj1obj2(带有实例名称)。我试图ob1根据obj2' 的y位置获得 ' 的旋转速度。我想把代码放在里面,obj1所以我想如果我想obj2从里面定位,obj1我会使用类似this.rotation = this.obj2.y / 10;的东西,但由于某种原因,它只是保持它的旋转。我使用了本机代码编辑器顶部的“目标”按钮,但它仍然给了我相同的this.obj2. 有任何想法吗?提前致谢。

4

2 回答 2

0

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

假设 A 是 obj1 类

解决方案一,使用 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;
    }
}
于 2013-09-01T07:18:49.210 回答
0

假设两个DisplayObjetcs在stage上彼此相邻,它们有一个共同的父级,因此从 obj1 “定位” obj2 的方法是:

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

换句话说,除非您像 Pan 的回答那样设置自己对其他 DisplayObjetcs 的引用,否则您可以通过它们在分层显示列表中的位置来引用它们。

于 2013-09-01T10:13:07.227 回答