簡體   English   中英

在AS3中定位/訪問硬編碼的動畫片段

[英]Targeting/accessing hardcoded movieclip in AS3

我正在嘗試使用較舊的Flash電影制作一塊AS3代碼。 由約4000個關鍵幀組成的電影,並且定期向主時間軸添加靜態影片剪輯。

在第120幀,將一個實例名稱為playButtonMC片段添加到舞台。 playButtonMC有一個名為playButtonbutton實例。 我想將click事件處理程序分配給來自主時間軸的此影片剪輯內的按鈕,但是我無法從主時間軸上關鍵幀#121上的操作獲得對影片剪輯的引用。

我試着徒勞無功:

var myMc:MovieClip = stage.getChildByName("playButtonMC") as MovieClip;
trace(myMc);
trace(playButtonMC);
trace(root.playButtonMC);
trace(stage.playButtonMC);

// If I get a reference, I plan to do following to attach event listener.
// Please advise if its incorrect as well
myMc.playButton.addEventListener(MouseEvent.CLICK, doStuff);

function doStuff():void{
    trace('called');
}

所有對trace調用都會導致null

從某種意義上說,我不是Flash開發人員,但我已經完成了這項小任務。 我知道正確的AS3方式必須通過動態生成影片剪輯並將引用存儲在變量中,但此刻,我只是想讓它以某種方式工作。

編輯

trace(stage.playButtonMC); 實際上會創建一個錯誤ReferenceError: Error #1069: Property playButtonMC not found on flash.display.Stage and there is no default value.

你確定實例仍然存在嗎?

stage!= root

如果您在MainTimeline實例上有代碼,請使用root或使用this 絕對不是舞台。

如果您可以訪問舊電影的源代碼,最簡單的方法是為您需要了解的實例添加getter和setter。 查看您發布的代碼,看起來您可能有權訪問源代碼,但出於某種原因,您使用的是時間軸代碼而不是文檔類。 如果你打算使用時間軸代碼,你可能只想用按鈕把它推到框架上,不要再擔心了。

如果你不只是注意ADDED_TO_STAGE(它不會冒泡,那么你需要在捕獲階段觀察)並篩選直到找到你關心的東西。 您可以打開name或getQualifiedClassName()或其他滿足您需要的條件。

有關這兩種技術的概述,您可以閱讀本文 這里的示例代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM