我们有一个在Flash和as3中构建的项目。这是一款我们想要完全定制的视频播放器。我们有不同的图像和配色方案,我们希望能够快速改变。现在我们有配置常量,可以为不同的方案打开和关闭。在代码中,有大量不同的图像点发生了变化。
当我们创建一个新的配色方案或其他什么时,我们需要创建新的配置。然后我们必须遍历所有的代码并将其正确地放入。
基本上,对于我们如何利用当前的flash项目(也许是flex?)并使其更快地进行自定义,有什么建议吗。
将所有可配置参数移动到XML定义中。
为每个自定义项创建多个XML文档。
在代码中,为可配置参数建立默认值,然后加载XML文档的XML和引用值作为这些默认值的覆盖。
对于生产生成,如果加载外部资源是部署的问题,则XML可以嵌入到程序集中。
通过加载不同的配置XML文档,您可以在运行时更改定义,通过使用动态配置模型,您可以起草一个主题编辑器来实时查看更改。
配置模型.as
package
{
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class ConfigurationModel
{
/** ======== configuration ======== */
public static var color:uint = 0xff00ff;
public static var fontName:String = "Arial";
/** ======== serialization ======== */
public static function loadConfiguration(url:String):void
{
var loader:URLLoader = new URLLoader(new URLRequest(url));
loader.addEventListener(Event.COMPLETE, completeHandler);
}
protected static function completeHandler(event:Event):void
{
var xml:XML = new XML(event.target.data);
if (xml.color)
color = xml.color;
if (xml.fontName)
fontName = xml.fontName;
}
}
}
配置示例:AcmeClientConfiguration.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<color>0xff0000</color>
<fontName>Calibri</fontName>
</configuration>