簡體   English   中英

as3如何防止輸入框架創建新實例?

[英]as3 how can i prevent that a new instance is created by entering a frame?

我正在一個項目中使用幾個嵌套的動畫片段對象。 但是我在嵌套的動畫片段中創建和實現的按鈕遇到了麻煩:

以一種簡單的方式來描述它:我有一個帶有五個幀的主動畫片段,其中包括兩個帶有偵聽器的按鈕,可以在兩個幀之間瀏覽。 然后在一個Frame中,我有另一個帶有自己按鈕的動畫片段。 我沒有通過代碼手動實例化它,並給它一個特定的名稱,例如“ nestedMc”。

現在,我不想在嵌套的movieclip類的類中但在其父類中為這些按鈕構建監聽器,在我隨后轉到主動畫片段時間軸中的另一幀並返回之前,它可以正常工作。

顯然,每次Flash進入幀時,其內容都會重新創建(並因此獲得新的實例名稱)。 我現在可以嘗試通過代碼填充框架來解決此問題。

但是也許還有另一種方法可以確保每次我輸入時框架都包含相同的實例?

時間軸腳本編寫是一項骯臟的工作,實際上是ActionScript 2項目的遺留兼容性層 只要有可能,我強烈建議您不要這樣做,只需將所有代碼保留在文檔類中即可。 在您遇到問題時,時間軸代碼會令人頭疼。

考慮改為只創建舞台的兩種狀態(聽起來就是這兩個按鈕之間的切換),然后簡單地將它們隱藏在舞台下或將其alpha設置為零,並將mouseEnabled狀態設置為false。 此外,如果幀的目的是播放動畫(補間動畫),請考慮改用功能更強大的套件,例如TweenLite 將對象平滑地移動一百個像素可以很容易:

TweenLite.to(redBall, 3, {x:100});

現在,如果您要手動將這些項目添加到舞台上,只要該對象是動態對象,則可以為其分配一個實例名稱,該名稱將在兩次框架加載之間保存。 請注意,對象名稱與實例名稱不同。 例如:

var redBall:Ball = new Ball();
redBall.name = "bubbles";

該對象的名稱是Ball ,但是它表示為一個名為redBall的變量。 它的實際DisplayList名稱可能是模棱兩可的(例如“ Instance71”),我可以手動將其定義為"bubbles" 同一對象的3個不同名稱,都非常不同且必要。

即使為對象指定了displayList名稱,也可能無法通過代碼引用它,除非您啟用了自動聲明階段實例,該實例基本上在每個對象上創建了一個指向displayList對象的指針。

如您的項目設置所示

也就是說,您始終可以通過其他方式來獲取對象。 顯然,您的按鈕總是會出現,但是您正在嘗試在舞台上找到一個非常特定的對象。 此時,我們可以使用getChildByName()getChildAt()

希望能有所幫助。 -干杯

暫無
暫無

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

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