国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

17.6.序列化類型對象

2024-04-27 13:52:23
字體:
來源:轉載
供稿:網友
17.6.1. 問題
我想要能去保存自定數據類型的對象到一個共享對象中。
17.6.2. 解決辦法
使用registerClassAlias()方法來注冊類型化的對象到Flash 運行時,然后存貯這個對象實例到一個共享對象。
17.6.3. 討論
所有的共享對象都包含了一個叫作objectEncoding 的屬性,用來標示在這個共享對象中使用的AMF 版本。默認情況,objectEncoding 被設為AMF3—標準的as3 格式。你也可以設定一個共享對象的編碼來使用as1 和as2 格式,通過設定objectEncoding 為AMF0。

當存貯類型化數據到一個共享對象是,確保已經在運行時注冊了類型化對象,這樣在特殊的情況發生時候你的應用程序才能確切地指導如何序列化和反序列化這個對象。呼叫registerClassAlias 方法來注冊類。

registerClassAlias 方法需要2 個參數。第一個必須是目標對象的完整限定類名以字符串的形式,通常就是類的別名。第二個參是你想要注冊到第一個參所提供的類名的對象。
+展開
-ActionScript
registerClassAlias( "package.ClassType", ClassType );

下面的例子是一個自定數據類型通過registerClassAlias()方法來注冊,確保屬性值被序列化之后存到共享對象中,以及被同一個會話或其他會話讀取出來并且反序列化。
+展開
-ActionScript
// the strongly typed object to use for this example
package oreilly.cookbook{
[Bindable]
public classAutomobile
{
private var _make : String;
public function get make() : String { return _make; }
public function set make( value : String ) : void {
_make = value;
}
private var _model : String;
public function get model() : String { return _model; }
public function set model( value : String ) : void {
_model = value;
}
private var _year : Number;
public function get year() : Number { return _year; }
public function set year( value : Number ) : void {
_year = value;
}
public functionAutomobile()
{
super();
}
public function toString() : String
{
return "make: " + _make + "/nmodel: " + _model +
"/nyear: " + _year;
}
}
}

Automoible 類擁有與制造一個汽車相關的基礎屬性。屬性值可以被分別地存貯存儲到共享對象實例中,但是你也需要注冊這些自定的數據類型,確保當數據被再次從共享對象中讀取到應用程序時,數據反序列化操作上可以序列化以及保留屬性值。下面的例子注冊了一個Automoible 類的類名并且讀寫自定義對象到本地共享對象:
+展開
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="absolute"
initialize="onInit()">

<mx:Script>
<![CDATA[
import mx.utils.ObjectUtil;
import oreilly.cookbook.Automobile;
import flash.net.registerClassAlias;
private var lso : SharedObject;
private function onInit() : void
{
// register the class alias to be able to later correctly
// deserialize and serialize this class type
registerClassAlias( "oreilly.cookbook.Automobile", Automobile );
// initialize the shared object
lso = SharedObject.getLocal( "automobile" );
}
private function save() : void
{
var automobile : Automobile = newAutomobile();
automobile.make = make.text;
automobile.model = model.text;
automobile.year = parseFloat( year.text );
lso.data.automobile = automobile;
lso.flush();
status.text = "your automobile has been saved";
}
private function retrieve() : void
{
if ( lso.data.automobile != undefined )
{
var objectInfo : String = ObjectUtil.toString(lso.data.automobile);
status.text = "retrieving type information about the currently" +
" stored object/n/n";
status.text += lso.data.automobile.toString() + "/n/n";
status.text += objectInfo;
}
else
{
status.text = "nothing has been stored into the shared object";
}
}

]]>
</mx:Script>
<mx:VBox width="100%height="100%">
<mx:Form>
<mx:FormItem label="makewidth="100%">
<mx:TextInput id="makewidth="100%"/>
</mx:FormItem>
<mx:FormItem label="modelwidth="100%">
<mx:TextInput id="modelwidth="100%"/>
</mx:FormItem>
<mx:FormItem label="yearwidth="100%">
<mx:TextInput id="yearwidth="100%"/>
</mx:FormItem>
<mx:FormItem direction="horizontalwidth="100%">
<mx:Button label="save lso datawidth="100%"
click="{ save() }"/>

<mx:Button label="retrieve lso datawidth="100%"
click="{ retrieve()}"/>

</mx:FormItem>
</mx:Form>
<mx:TextArea id="statuseditable="falsewidth="100%height="100%" />
</mx:VBox>
</mx:Application>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通渭县| 麻阳| 龙江县| 广平县| 南川市| 河间市| 中山市| 金乡县| 沭阳县| 盐源县| 西平县| 大埔县| 化州市| 厦门市| 额济纳旗| 九台市| 米泉市| 邛崃市| 永顺县| 五原县| 崇左市| 广宗县| 兴业县| 奉节县| 清河县| 昌乐县| 乐昌市| 德格县| 邹城市| 进贤县| 崇仁县| 余江县| 河北区| 子洲县| 彰化县| 司法| 谢通门县| 和平区| 双城市| 星子县| 永靖县|