2015-11-26 82 views
-1

打開組件(歡迎頁面)中有一個按鈕,它在開始時不可見。當用戶傳遞給另一個組件時,該按鈕應該是可見的。但我無法達到property如何在默認包中導入打開組件?

什麼是導入打開組件(默認包)的方式?

這是按鈕:

<s:SWFLoader id="btnRepr" x="1790" y="1008.45" source="@Embed('Components/Starter/Assets/Buttons/ButtonReport.swf')" click="ShowReportPage" visible="false"/> 

,這是我改變可見的真實部分:

btnRepr.visible = true;//Access of undefined property 'btnRepr'

+0

你在哪裏使用過'btnRepr.visible = true;'? – akmozo

+0

我在上面提到的第二個組件中調用它。這兩行屬於兩個不同的組件/'mxml'文件。 – coner

+1

在這種情況下,請嘗試:'component_instance.btnRepr.visible = true;'。 – akmozo

回答

1

假設你SWFComponent你有你的SWFLoader

<s:SWFLoader id="btnRepr" source="@Embed('ButtonReport.swf')" visible="false"/> 

,你有另一個組件調用BTNComponent,你有一個簡單的按鈕,它會顯示在名爲swf_componentSWFComponent的情況下加載的SWF,所以你可以這樣做:

<s:Button click="button_clickHandler(event)"/> 

protected function button_clickHandler(event:MouseEvent):void 
{ 
    mx.core.FlexGlobals.topLevelApplication.swf_component.btnRepr.visible = true; 
} 

當然這只是一個非常簡單和有限的例子,如果你如何做你正在尋找的東西,你應該根據你的具體需求來改進它...

編輯:

假設我的兩個組件都在MyComponents包,然後創建自己的實例我做:

import MyComponents.*; 

public var swf_component:SWFComponent;    
public var btn_component:BTNComponent; 

,那麼應用程序的創建完整的事件處理中,比如,我說:

swf_component = new SWFComponent(); 
addElement(swf_component); 

btn_component = new BTNComponent(); 
addElement(btn_component); 

然後當點擊btn_component中的按鈕時,swf_component`內的SWF被設置爲可見。

希望能有所幫助。

+0

由於某種原因它不能識別'button_clickHandler'方法中的實例。如果我直接調用像'mx.core.FlexGlobals.topLevelApplication.btnRepr.visible = true;' – coner

+0

@coner,它就會按預期工作;組件的兩個實例應該處於同一級別(對於此示例)... In我的例子中,我們有SWFComponent的實例和BTNComponent的一個在頂級應用程序中。你在哪裏添加了你的組件實例? – akmozo

+0

src文件夾下有三個軟件包。 (默認包)是歡迎頁面(Starter。mxml)位於。所有其他頁面組件都位於第二個包中。所以我剛剛在_... visible = true; _行之前定義了我的實例,例如'var strtr:Starter = new Starter;'。也試圖在功能上定義它,但是它是相同的。 – coner

相關問題