簡體   English   中英

Flex 4.6檢查creationComplete是否已發生

[英]Flex 4.6 check if creationComplete has occured

在AS3中,我知道我可以通過在加載的SWF的開頭包含它來檢查是否可以訪問外部加載的SWF的階段:

if (stage) {
  this.init();
} else {
  addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
}

上述解決方案非常適合在執行這些行時檢查程序是否可以訪問該程序,或者添加事件監聽器以監聽該階段何時可訪問。

我試圖在Flex 4.6中的自定義組件中復制類似的情況。 但是,我正在尋找是否已觸發組件的creationComplete事件,而不是監聽舞台的存在。

是否有一個類似的解決方案,無論是否已經觸發了creationComplete事件,如果還沒有,它會監聽它嗎?

當初始化設置為true時,我只是Windows grepped 4.6源和UIComponent調度創建完成事件所以http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIComponent.html#initialized應該工作。

編輯響應注釋初始化被調用但是初始化設置為true不會發生在步驟9,它實際上是在UIComponent中調度CREATION_COMPLETE的位置,請參閱我從4.6源UIComponent中提取的片段:

/**
     *  A flag that determines if an object has been through all three phases
     *  of layout: commitment, measurement, and layout (provided that any were required).
     *  
     *  @langversion 3.0
     *  @playerversion Flash 9
     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */

/**
 *  @private
 */

public function set initialized(value:Boolean):void
{
    _initialized = value;

    if (value)
    {
        setVisible(_visible, true);
        dispatchEvent(new FlexEvent(FlexEvent.CREATION_COMPLETE));
    }
}

如果您不相信我在UIComponent中按Ctrl + Shift + T類型並搜索“變量:創建”,您將獲得一個注釋塊,該塊將啟動調度啟動事件的部分以及用於標記這些事件的一些變量完成設置。 INITIALIZE事件發生在我引用的一個不同的setter中。

public function set processedDescriptors(value:Boolean):void
{
    _processedDescriptors = value;

    if (value)
        dispatchEvent(new FlexEvent(FlexEvent.INITIALIZE));
}

為什么不向組件添加creationComplete事件偵聽器並在處理函數中執行邏輯? 另外,你可以嘗試制作一個布爾屬性,例如

public var isInitialized:Boolean = false;

function creationCompleteHandler(e:Event):void
{
   isInitialized = true;
   //code here
}

這樣你可以從外部來源檢查它是否已經初始化。

為什么不只使用applicationComplete而不是creationComplete,因為在查看階段是否可訪問時,applicationComplete是周期的最后一個階段? 我認為每個應用程序組件的creationComplete都必須在applicationComplete之前觸發。 您是否因為某些原因在應用程序准備好之前嘗試訪問creationComplete?

我剛剛回過頭來看,我不確定你為什么要積極尋求更難的解決方案。 這個解決方案應該有效,我個人認為這是正確的解決方案。 當然你可以檢查一下是否已經觸發了creationComplete,但除非你明確需要這個功能,否則當你可以通過利用生命周期來利用邏輯的良好分離時,我無法看到檢查creationComplete的重點......

暫無
暫無

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

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