gpt4 book ai didi

actionscript-3 - Flex 4.6 检查 creationComplete 是否已经发生

转载 作者:行者123 更新时间:2023-12-01 12:52:13 26 4
gpt4 key购买 nike

在 AS3 中,我知道我可以通过在加载的 SWF 开头包含以下内容来检查该阶段是否可供外部加载的 SWF 访问:

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

上述解决方案非常适合在执行这些行时检查程序是否可以访问该阶段,或者添加一个事件监听器来监听该阶段何时可以访问。

我试图在 Flex 4.6 的自定义组件中复制类似的情况。但是,我不是在监听舞台的存在,而是在寻找组件的 creationComplete 事件是否已被触发。

creationComplete事件是否触发,没有触发则监听,是否有类似的解决方案?

最佳答案

我只是 Windows grepped 4.6 源代码并且 UIComponent 在初始化设置为 true 时调度创建完成事件所以 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIComponent.html#initialized应该可以。

编辑作为对评论的回应,初始化被调用但设置初始化为真在第 9 步没有发生,它实际上是在 UIComponent 中调度 CREATION_COMPLETE 的地方看到我从 UIComponent 的 4.6 源代码中提取的这个片段:

/**
     *  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));
}
}

如果您不相信我,请按 Ctrl+Shift+T 在 UIComponent 中键入并搜索“Variables: Creation”,您将得到一个注释 block ,该注释 block 开始了调度启动事件的部分和一些变量标记那些已完成的事件已设置。 INITIALIZE 事件发生在我引用的 setter 下方的不同 setter 中。

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

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

关于actionscript-3 - Flex 4.6 检查 creationComplete 是否已经发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com