如何在Flex项目中创建/使用主题

时间:2009-05-08 03:06:49

标签: flex actionscript-3

我刚刚开始使用Flex,虽然我已经使用了Actionscript2几年了,但我仍然围绕着Actionscript3。过去一周我一直在深入研究Flex,并且无法理解这一点。

我正在研究最好的方式(或“一种”方式),让我和其他从事这个项目的人可以轻松地为视频播放器创建新的主题。我展示了两个视频,需要能够重新定位它们,设置样式,添加图像和其他任何内容。我不打算创建一个全面的模板引擎,但是如果我可以为每个模板创建一个单独的文件/文件夹,那将完全成为我的一天。

我想象有一个解决方案,我将在src / templates /中有一个文件夹,在该文件夹中我会有view.mxml,其中包含显示视频所需的一切。然后,我就可以添加其他文件,例如图像等,以使该模板看起来应该如此。

应使用哪个模板应由主视频文件中的变量定义。这将在播放时提供给swf文件,或者由加载外部配置文件的视频提供(但这不是我的问题的一部分:)。

所以,简而言之;如何在src中的一个或两个子文件夹中包含mxml文件,以及如何通过变量选择我希望包含的文件来执行此操作。

提前非常感谢!

-Dave

2 个答案:

答案 0 :(得分:2)

Flex应用程序可以通过样式在多大程度上改变其外观,您会感到惊讶。查看以下项目:

http://www.fillcolors.com/

如果您仍需要更多灵活性,您可以拥有一个包含多个视图的应用程序,每个视图对应您要显示的每个主题。在Flex中执行此操作的一种简单方法是使用ViewStack组件,该组件基本上对视图显示进行分层,在给定时间仅显示一个。

作为一个非常简单的例子,你可以在这些方面有所作为:

<mx:ViewStack selectedIndex="{currentIndex}">
     <themes:CustomTheme1/>
     <themes:CustomTheme2/>
     <themes:CustomTheme3/>
</mx:ViewStack>

这里,currentIndex是一个绑定到ViewStack的变量,确定当前可见的三个子节点中的哪一个,每个子节点代表一个自定义MXML组件(在您的情况下,是一个主题)。

对评论的回应:

是的,上面的例子就是为了做到这一点,但它实际上不是Flex的功能,而是AS3的功能。 CustomThemeX组件使用主题命名空间定位。命名空间在父组件根标记内定义。在此示例中,父级是Canvas组件:

<mx:Canvas xmlns:themes="themes">

这告诉编译器在应用程序的themes子文件夹中查找这些自定义组件;换句话说,src / themes文件夹,其中包含CustomThemeX组件。

如果上一段对你没有意义,我建议你阅读一本书/阅读有关AS3 / Flex的文档,并学习更多关于AS3和面向对象编程的一些核心概念。我希望我能提供更多帮助,但这个问题开始变得有点过于宽泛。我希望你明白。 :)

答案 1 :(得分:0)

我不是Flex的专家。但是我在gotoAndLearn.com上看到了关于Flex的皮肤教程。也许那个kan会给你一些提示:Introduction to Flex: Part 3