2011-06-27 38 views
1

因此我决定在AIR应用程序中实现一些主题。我已将我的CSS文件转换为SWF文件,从主文件中删除了Style链接。根据存储在文件中的用户首选项,我决定使用哪个主题。即;使用StyleManager类加载SWF文件。在Flex AIR应用程序中动态加载样式

我使我的应用程序窗口不可见,为StyleManager.loadStyleDeclarations方法返回的IEventDispatcher对象添加了StyleEvent.COMPLETE事件侦听器。 StyleEvent.COMPLETE发生后,我使我的主窗口可见。

我现在的问题是,几秒钟后,我可以看到白色画布和所有我没有任何风格的组件之前使用选择的风格。我想知道我的方法是否正确,或者是否需要进行任何更改才能正确实施?

回答

1

好的,所以我似乎已经弄清楚了自己。尽管从这link获得一些帮助。

以前我读了我的applicationComplete中的设置并加载了样式。所以我想所有的UI组件都被创建并添加到显示列表中。他们裸露裸体没有任何风格价值。

因此,我将设置文件的读数更改为preinitialize,这样在触发applicationComplete时,AIR已经加载了SWF样式表。所以它会显示我想要的用户界面。

+0

+1好东西,初始化可能也会起作用,而且会更常用 – Ryan

+0

你能告诉我在'preinitialize'和'initialize'中写入东西的区别吗?到目前为止,我只使用了'creationComplete'和'applicationComplete'。 – midhunhk

+0

不用手:我们不使用预初始化,因为不是所有的容器/对象的子都将被创建。我们总是使用'​​initialize'来设置变量,为数据提供dataProvider集合(如Adobe推荐的)。所有的容器儿童都是在这个时候创建​​的。我们所有的eventlistener都会在creationComplete中设置(如Adobe建议的),它会在所有子级之后被触发,并且创建并显示子级的子级。 – Ryan

相关问题