2012-06-11 56 views
0

在Flash CS4中,我可以通過屬性面板在我的時間軸中爲對象提供實例名稱。我想這個變量會在我的Document類中提供給我,但是當我嘗試訪問它時,它是空的。Flash/AS3:如何從Document類訪問<Instance Name>對象?

如何從我的Document類中訪問這些實例?另外,這些對象是否必須位於第1幀的時間軸上才能用於我的Document類的構造函數?

+0

你試過getChildByName(「name_of_object」)。不知道自動聲明階段實例是否在cs4 – ansiart

+0

yes-且它返回null。該對象還沒有在時間軸上,所以我可以看到爲什麼我無法訪問它。我只需要知道何時調用getChildByName(「obj_name」)的方法。這可能有幫助。 – Thomas

+0

使用:Event.FRAME_CONSTRUCTED - 這會告訴你何時創建了一切。你的代碼在構造函數中?你確定你給了這個物品一個名字? :) – ansiart

回答

0

構造函數總是在對象上調用的第一件事,它用於獲取存儲該對象類型的所有屬性所需的內存。在構建對象之後(假設它是一個顯示對象)在某個點添加到舞臺上。如果將其中一個對象的實例添加到框架的舞臺上,則主文檔類將必須知道該對象何時添加到舞臺才能正確訪問它。你可以在你的文檔類構造器中創建對象的實例,然後當你的主類添加到舞臺觸發器時,你可以添加實例。

只是嘗試,這是無法重現的有機磷農藥初始行爲,我能夠訪問在第1幀添加的情況下,發佈了一些例子在這裏:

http://www.shaunhusain.com/TestHandleOnInstance/TestHandleOnInstance.as

http://www.shaunhusain.com/TestHandleOnInstance/TestHandleOnInstance.swf

http://www.shaunhusain.com/TestHandleOnInstance/TestHandleOnInstance.fla

+0

我不確定你的意思是什麼時候說「然後添加到你的主類的舞臺火焰上,你可以添加實例」。如果我將一個Event.ADDED_TO_STAGE監聽器添加到主類中,那麼只會在文檔加載時觸發一次。這幾乎就像我想爲我的實例添加一個ADDED_TO_STAGE偵聽器,以便它可以告訴主類它在那裏。只有在添加實例之前,我無法訪問實例。我會說,在main中創建實例並在main中創建addToStage,但是我無法直接在我的時間軸中編輯對象。 – Thomas

+0

@Thomas,你好像直接關注我的意圖,我想的是從時間線中刪除實例並控制它在文檔類中的創建/添加,這樣你知道實例何時有效並添加到階段。我能想到的唯一方法是聽取輸入幀事件,直到您能夠獲取非空引用,或者偵聽添加到從舞臺觸發的舞臺事件並檢查event.target,直到它匹配類和/或實例,你正在尋找處理。 – shaunhusain

+0

添加stage.addEventListener(Event。ADDED_TO_STAGE,test)在我的主類的構造函數中不會觸發。我應該使用不同的活動嗎? – Thomas