在项目中需要使用发送短信模板的功能的,根据主题不同,模板不同,发送的不同的短信,将短信信息存放在问题:
在网上查了一下类似的解决方案为两种:
1.将信息保存在数据库,在系统加载,加载相应的资源信息.
2.将信息保存在资源文件中,使用Flex中资源类读取资源信息.
本人采用第二种方案,将信息写在资源文件中,使用资源类读取信息.
必须注意的几点:
1.的resource名应与.properties文件名相同
2.在Flex属性中的Flex Compiler中 添加编译参数
-locale en_US -sp 资源文件包
3.在flex 3中资源文件不支持动态加载,但是flex4中支持动态加载,说明资源文件存放信息是flex存放资源一种趋势,所以最好采用资源文件的形式.
package util
{
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.utils.ByteArray;
import mx.resources.ResourceBundle;
import mx.resources.ResourceManager;
import mx.utils.ObjectUtil;
/**
* 资源文件的信息
*
*/
public class ResourceUtil extends EventDispatcher
{
//采用单例模式
private static var _instance : ResourceUtil;
private var _language : String;
//这里的resource名应与.properties文件名相同
[ResourceBundle("en_US")]
private var lang_en:ResourceBundle;
[ResourceBundle("zh_CN")]
private var lang_zh:ResourceBundle;
private var localResources:ResourceBundle;
public static function getInstance() : ResourceUtil
{
if (_instance == null) {
_instance = new ResourceUtil();
}
return _instance;
}
[Bindable(event="languageChange")]
public function getString(key:String,params:Array=null):String
{
var value:String="";
if(params!=null)
{
value=ResourceManager.getInstance().getString(_language,key,params);
}else{
value=ResourceManager.getInstance().getString(_language,key);
}
var bytesArray:ByteArray=new ByteArray();
bytesArray.writeMultiByte(value,"utf-8");
bytesArray.position=0;
trace(bytesArray.readMultiByte(bytesArray.bytesAvailable,"utf-8"));
return bytesArray.readMultiByte(bytesArray.bytesAvailable,"utf-8");
}
[Bindable(event="languageChange")]
public function ResourceUtil(){
this.language = "zh_CN";
}
public function set language(language : String):void {
this._language = language;
if (_language ==OfflineConstant.BUSSOFF_RESOURCE_EN_US) {
this.localResources = lang_en;
} else if (_language == OfflineConstant.BUSSOFF_RESOURCE_ZH_CN) {
this.localResources = lang_zh;
} else {
this.localResources = lang_zh;
}
dispatchEvent(new Event("languageChange"));
}
}
}