2013-09-01 83 views
0

我想知道如何在flash as3中定位特定對象/實例。我在舞臺上有2個物體,現在我們將其稱爲obj1obj2(帶有實例名稱)。我試圖根據obj2y的位置獲得ob1的轉速。我想把代碼放在obj1之內,所以我想如果我想從obj1裏面找到obj2我只是想用this.rotation = this.obj2.y/10;之類的東西,但是由於某種原因,這個東西只是保持它的旋轉。我使用本地代碼編輯器頂部的「目標」按鈕,但仍然給了我相同的this.obj2。有任何想法嗎?提前致謝。在AS3中定位對象

+0

你什麼時候調用this.rotation = this.obj2.y/10? – Pan

+0

在'obj1'裏面的_actions_框架中,如果你問我是否使用了一個事件監聽器,那麼是的,它是以'this.addEventListener(Event.ENTER_FRAME,rotate);'開頭的,然後有一個函數'this .rotation = this.obj2.y/10;'裏面有一些閃爍的顏色的東西:D –

回答

0

假設這兩種DisplayObjetcs彼此相鄰stage ,他們有一個共同的父,所以辦法從OBJ1「目標」 obj2的是:

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

換句話說,除非你建立自己的其他DisplayObjetcs引用就像潘的回答,您可以參考它們通過他們在分層display list中的位置。

+0

謝謝,但是當我這樣做時,我得到一個錯誤? _1119:_ _訪問_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Display _ Display _另外obj2實際上被稱爲滑塊。 –

+0

對不起,我在AS3中使用AS2語法(可能被示例代碼愚弄了:),您需要使用getChildByName()。答案已更新。 –

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; 
    } 
} 
+0

謝謝,但我已經有了一個ENTER_FRAME監聽器。如果我使用'this.rotation ++;'它會轉而以相當慢的速度(每秒1度60次)。至於'this.obj2.y',它並不是針對這個對象,所以我想知道這條線是否有一個輕微的替代,只能讓它在'obj1'裏面定位'obj2'。 –

+0

你有沒有改變obj2 refrerence?像obj2 = new type()?當obj2移動時,你可以追蹤obj2的y。 – Pan