apache-flex - 我的 Flex 应用程序中的 "int main()"在哪里?

标签 apache-flex

嗯,当然不是字面上的意思,但是:

我是 Flex 的新手,我想弄清楚在我的应用程序启动时将要运行的代码放在哪里。在我的示例中,我在标记中定义了一个树控件,并且我有可以从本地文件或 Web 服务填充它的 AS 代码。如何将一个绑定(bind)到另一个,以便在创建控件时运行代码?

我在文档中找到的示例都使用事件处理程序,即。 e.他们将 'creationComplete="myInitFunction(evt)"' 放在控件的开始标记中。那意味着我要写一个小的胶水函数来初始化东西。

现在,据我了解,Markup 确实在内部转换为 AS 类。那我是不是可以只定义一个引擎实例化的类,然后把我的启动代码放在构造函数中呢?甚至可以扩展 Tree 类?

编辑:

几个月后,我变得聪明多了。在尝试滥用扩展组件类的构造函数之后,我不得不了解到 Flex 并不期望构造函数做很多事情——当然不会从网络加载数据。

“Programming Flex 3”中的组件生命周期解释非常有帮助。现在,我的构造函数都是空的,我正在重写生命周期方法,例如 createChildren 用于很多事情,并将事件用于任何涉及延迟或依赖于外部性的事情,尤其是网络东西.

例如,我使用creationComplete发起一个异步网络请求(使用HTTPService),当返回有ResultEvent和FaultEvent处理程序时,ResultEvent更新一个数据模型我将我的控件数据绑定(bind)到它。这看起来非常 Flex-y,而且效果很好。

最佳答案

当 Application 组件创建完成时,将调度 creationComplete 事件(在 Application 对象上)。一旦整个应用程序完成(布局等)并且对用户可见(加载屏幕完成),就会调度 applicationComplete 事件。

对于您提到的情况——您在启动时填充控件——我建议使用组件的 creationComplete 事件包含您要填充的控件(树你的情况),这听起来像是你的应用程序组件。这通常是一种很好的做法,因为此代码通常取决于您正在填充的代码的同级组件(​​例如,HTTPService 组件)。

您说得对,所有 MXML 都在 AS3 中进行了转换,然后进行了编译。有一个编译器标志将保留生成的 AS3(不过它将是只读的)。你不想搞砸了。由于 UIComponent 实例化序列(构造函数、样式、布局等)的(有点)复杂性质,在 creationComplete 事件(或类似事件)中填充控件绝对是最佳实践。

关于apache-flex - 我的 Flex 应用程序中的 "int main()"在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/424915/

相关文章:

apache-flex - 将 CURL 转换为 FLEX HTTP 请求

apache-flex - 更改 textfield() 鼠标悬停的光标

apache-flex - 弹性 : dialog not display immediately

c++ - AS3 中的计数器 "without dynamic text field"

javascript - Web 浏览器中的等高线图

c# - C# winforms中有像Flex中 "ViewStack"这样的控件吗?

flash - 对 Flex Builder 项目所做的更改未反射(reflect)在 Firefox/IE 中

actionscript-3 - 判断一个 Sprite 是否靠近另一个 Sprite 的更快方法?

apache-flex - 在浏览器中捕获热键

apache-flex - 预定的媒体流