2010-12-17 94 views
0

我正在做動態拖放遊戲。 我有一個包含拖放代碼的拖動項目的類。如何從doc類AS3的舞臺上定位影片剪輯?

我的問題是我不能打電話/訪問我已經放在我的命中測試聲明中的舞臺上的電影剪輯。

這裏是我的代碼和target1_mc & target2_mc是舞臺上的現有影片剪輯:

package { 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.text.TextField; 




public class recipeMC extends MovieClip { 



    private var startX:Number; 
    private var startY:Number; 
    private var counter:Number=0; 




    public function recipeMC() { 
    this.mouseChildren = false; 
    this.buttonMode = true; 
    this.addEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
    this.addEventListener(MouseEvent.MOUSE_UP, dropIt); 
    } 
    private function pickUp(event:MouseEvent):void { 
    this.startDrag(true); 
    this.parent.addChild(this); 
    startX = this.x; 
    startY = this.y; 

    } 
    private function dropIt(event:MouseEvent):void { 
    this.stopDrag(); 



    *****if (this.hitTestObject(target1_mc) 
    ||this.hitTestObject(target2_mc))***** { 
    this.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp); 
    this.removeEventListener(MouseEvent.MOUSE_UP, dropIt); 
    this.buttonMode = false; 
    this.x = myTarget.x; 
    this.y = myTarget.y; 
    counter++; 
    } else { 
    //reply_txt.text = "Try Again!"; 
    this.x = startX; 
    this.y = startY; 
    } 

    } 
} 
} 

回答

1

你需要去發佈設置 - >快速柱>設置(按鈕),選擇「自動聲明舞臺實例「。這應該夠了吧。

編輯

試試這個你recieptMovieClip類中:

MovieClip(root).target1_mc 
MovieClip(root).target2_mc 

因爲這是惱人的類型,你可以存儲影片剪輯(根)中的變量。請注意,除非您的movieClip位於顯示列表中,否則root屬性不存在。所以直到你的類被添加了addChild(),這是行不通的。

另一種方法是使用文檔類並將對主時間軸的引用存儲在靜態變量中。我曾經寫過一篇博文。 Have a look

如果您在博客帖子使用該技術,你可以從任何地方訪問主時間軸這樣的:

Main.display.target1_mc 

希望有所幫助。如果您需要,我可以上傳一個或兩個示例。

+0

它被選中,但我仍然有同樣的問題 – Hatem 2010-12-18 09:32:15

+0

錯誤出現說:「訪問未定義的屬性target1_mc」 – Hatem 2010-12-18 09:34:53

+0

你確定你給了movieClip實例名稱target1_mc?也許你應該把文件上傳到某個地方,以便我們看看。 – Zevan 2010-12-18 16:13:16