テーマを管理する 2 つのクラスを作成できます。
最初はテーマ名を管理します
package
{
public class Styles
{
public static const DARK:String = "dark";
public static const LIGHT:String = "light";
public static var currentStyleName:String = "dark";
public static function setStyles(styleName:String):void
{
currentStyleName = styleName;
}
}
}
2 つ目はアセットを管理します
package
{
import flash.events.EventDispatcher;
import flash.display.*;
import flash.utils.getDefinitionByName;
import Styles;
public class Assets extends EventDispatcher
{
public static function setStyles(styleName:String):void
{
currentStyleName = styleName;
}
public static function getClass(name:String):Class
{
var TheClass:Class = getDefinitionByName(name) as Class;
return TheClass;
}
public static function sprite(name:String):Sprite
{
return new (getClass(name)) as Sprite;
}
public static function simpleButton(name:String):SimpleButton
{
return new (getClass(name)) as SimpleButton;
}
public static function styledName(name:String):String
{
return name + Styles.currentStyleName.replace(/^\w/, function(firstChar) {
return firstChar.toUpperCase();
});
}
}
}
Flash ライブラリでは、各シンボルのリンケージ名を次のように設定する必要があります。
myButtonDark
myButtonLight
mySpriteDark
mySpriteLight
ここで、現在のスタイル名を設定する必要があります
Styles.setStyles(Styles.LIGHT);
最後に、必要なインスタンスを作成できます
// All the instances created here belong to the Light theme
addChild( Assets.simpleButton(Assets.styledName("myButton")) );
addChild( Assets.sprite(Assets.styledName("mySprite")) );
// Changes the theme to dark
Styles.setStyles(Styles.DARK);
// All the instances created here belong to the Dark theme
addChild( Assets.simpleButton(Assets.styledName("myButton")) );
addChild( Assets.sprite(Assets.styledName("mySprite")) );
私はそれがあなたのために働くことを願っています:)