| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Dec 2005 Ort: Oldenburg
Beiträge: 2.407
| Eigene Objekte + EncryptedLocalStore ?
Hallo zusammen, ich versuche gerade eine Variable vom Typ "Point" in den EncryptedLocalStore zu schreiben. Das Schreiben funktioniert auch ohne Probleme. Will ich mir das Ergebnis tracen lassen, kommt allerdings immer ein String heraus. (Egal wie ich caste) Wie stelle ich es an, dass ich einen "Point" zurückbekomme ? Meine "read" Methode sieht zB. so aus: ActionScript:
Meine Write Methode ActionScript:
Grüße, nico Geändert von Nico B. (26-01-2010 um 14:37 Uhr) |
| | |
| | #2 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Schaue dir mal die registerClassAlias Methode an.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Dec 2005 Ort: Oldenburg
Beiträge: 2.407
|
Ich entmülle mal eben: Habe diesen Link gefunden: http://cookbooks.adobe.com/post_Stor...oca-10563.html Und dementsprechend dieses Beispiel gebaut: ActionScript:
Leider ohne Erfolg :/ Kommt immer null heraus... Geändert von Nico B. (26-01-2010 um 15:33 Uhr) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Oct 2008
Beiträge: 148
|
hi, du musst die daten wieder "manuell" erzeugen. das zb. serialisiert eine arraycollection mit einem variablen objekttypen... Code: private static function serializeConfigurations(valueObject:Class,collection:ArrayCollection):ArrayCollection{
var xml:XML = describeType(new valueObject());
var properties:XMLList = xml..variable.@name;
var tempac:ArrayCollection = new ArrayCollection();
for each( var object:Object in collection){
var tempvo:Object = new valueObject();
for each(var name:Object in properties){
tempvo[name] = object[name];
}
tempac.addItem(tempvo);
}
return tempac;
} Code: public static function getConfiguration():ArrayCollection{
var byte:ByteArray = EncryptedLocalStore.getItem(KEY);
var configurations:ArrayCollection = byte.readObject() as ArrayCollection;
configurations = serializeConfigurations( ConfigurationVO, configurations);
return configurations;
} Geändert von sytch (26-01-2010 um 17:48 Uhr) |
| | |
| | #5 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Wie ich bereits schrieb, schaue dir mal registerClassAlias an Code: package fs.domain
{
import flash.net.registerClassAlias;
public class ValueObject
{
public var name:String;
public function ValueObject()
{
registerClassAlias("fs.domain.ValueObject", ValueObject);
}
public function toString():String
{
return "[object Woot, name:" + name + "]";
}
}
} Code: <?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
applicationComplete="onApplicationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import flash.utils.getQualifiedClassName;
import fs.domain.ValueObject;
import mx.events.FlexEvent;
protected function onApplicationCompleteHandler(event:FlexEvent):void
{
var vo:ValueObject = new ValueObject();
vo.name = "Fred";
write("value", vo);
var o:* = readAs("value", ValueObject);
trace("toString :", o);
trace("getQualifiedClassName:", getQualifiedClassName(o));
}
private function readAs(key:String, type:Class):*
{
var bytes:ByteArray = EncryptedLocalStore.getItem(key);
return bytes.readObject() as type;
}
private function write(key:String, value:Object):void
{
var bytes:ByteArray = new ByteArray();
bytes.writeObject(value);
EncryptedLocalStore.setItem(key, bytes);
}
]]>
</fx:Script>
</s:WindowedApplication>
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #6 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
| Doch das geht, siehe oben.
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #7 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Vergaß den Code: Code: protected function onApplicationCompleteHandler(event:FlexEvent):void
{
var vo:ValueObject = new ValueObject();
vo.name = "Fred";
write("value", vo);
var o:* = readAs("value");
trace("toString :", o);
trace("getQualifiedClassName:", getQualifiedClassName(o));
}
private function readAs(key:String):ValueObject
{
var bytes:ByteArray = EncryptedLocalStore.getItem(key);
return ValueObject(bytes.readObject());
}
private function write(key:String, value:Object):void
{
var bytes:ByteArray = new ByteArray();
bytes.writeObject(value);
EncryptedLocalStore.setItem(key, bytes);
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Dec 2005 Ort: Oldenburg
Beiträge: 2.407
|
Ola, danke erstmal für den Code. (Funtzt alles soweit gut )Ich stoße nur auf ein Problem: Sobald ich die Applikation beende und wieder starte (und auf den Store zugreifen will) ist dieser Leer. Ich frage mich jetzt, wieso das wohl so ist. Habe absolut keinen Ansatz, bisher hat das immer ohne Probleme geklappt. Nutzen: Würde gerne die X/Y Position der App speichern und a) keine lokale db/File anlegen und b) nocht 2 Werte (x,y) getrennt voneinander speichern. Grüße Nico Edit: Es scheint daran zu liegen, dass ich es nicht per writeUTFBytes hineinschreibe. Aber wie umgehe ich das am Besten? Geändert von Nico B. (27-01-2010 um 11:03 Uhr) |
| | |
| | #10 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Works like a charm Code: <?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
applicationComplete="applicationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import flash.events.MouseEvent;
import flash.utils.ByteArray;
import fs.domain.Data;
import mx.events.FlexEvent;
//-----------------------------------------------------------------
//
// Constants
//
//-----------------------------------------------------------------
private const KEY:String = "key";
//-----------------------------------------------------------------
//
// Properties
//
//-----------------------------------------------------------------
private var _data:Data;
//-----------------------------------------------------------------
//
// Methods
//
//-----------------------------------------------------------------
private function read():Data
{
var bytes:ByteArray = EncryptedLocalStore.getItem(KEY);
if (bytes)
{
return Data(bytes.readObject());
}
return new Data();
}
private function write(data:Data):void
{
var bytes:ByteArray = new ByteArray();
bytes.writeObject(data);
EncryptedLocalStore.setItem(KEY, bytes);
}
//-----------------------------------------------------------------
//
// Event Handler
//
//-----------------------------------------------------------------
protected function applicationCompleteHandler(event:FlexEvent):void
{
_data = read();
input.text = _data.content;
}
protected function deleteButton_clickHandler(event:MouseEvent):void
{
EncryptedLocalStore.removeItem(KEY);
}
protected function saveButton_clickHandler(event:MouseEvent):void
{
_data.content = input.text;
write(_data);
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout horizontalAlign="center" />
</s:layout>
<s:HGroup height="24" verticalAlign="middle" width="100%">
<s:Label id="dataLabel" text="data.content" />
<s:TextInput id="input" />
<s:Button id="saveButton" click="saveButton_clickHandler(event)" label="save" />
<s:Button id="deleteButton" click="deleteButton_clickHandler(event)" label="delete" />
</s:HGroup>
</s:WindowedApplication> Code: package fs.domain
{
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
[RemoteClass("fs.domain.Data")]
public class Data extends EventDispatcher
{
private var _content:String;
[Bindable("contentChanged")]
public function get content():String
{
return _content;
}
public function set content(value:String):void
{
if (!value)
{
value = "";
}
if (_content == value)
{
return;
}
_content = value;
dispatchEvent(new Event("contentChanged"));
}
public function Data(target:IEventDispatcher=null)
{
super(target);
}
}
}
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
| | #11 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.141
|
Et les sources...
__________________ http://icodeapps.net | Meet me at the Flex user group Hamburg talking about CoffeeScript |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| eigene Basisklasse für eigene Symbol-Klasse | NinaH | ActionScript 3 | 11 | 03-08-2009 23:22 |
| eigene Eventlistener für einzelne Array Objekte? | Steril707 | ActionScript 3 | 2 | 27-11-2007 13:15 |
| Eigene Objekte mit AS2 clonen | hans jörg | ActionScript 2 | 12 | 20-01-2007 11:40 |
| LocalConnection - Eigene Objekte übergeben | scalx69 | Flash MX 2004 | 2 | 19-02-2006 21:47 |
| Listener für eigene Objekte? | MrHoga | Flash MX | 0 | 02-07-2002 04:19 |