{lang: 'de'}
Flashhilfe.de - Flash Community

Objekte im AMF-Format speichern? [AIR 2]

 


AntwortenRegistrieren Seite1  

shadow_zed#1
Benutzerbild von shadow_zed
Beiträge: 90
Registriert: Feb 2007

17.07.2010, 12:51

Hi,
ich wollt versuchen, wie man Objekte aus Flash auf die Festplatte speichern und dann von ihr wieder laden kann.
hab dazu gelesen, dass Flash seine Objekte in einem AMF-Format hat, und dass man, um diese objekte typensicher laden zu können, die methode flash.net.registerClassAlias(aliasName:String, classObject:Class) benutzen muss.
dazu hab ich mir folgenden test-code zusammengelesen, der zwar mit Bitmaps funktioniert (wenn auch mit TypeErrors, wo ich nicht verstehe, wieso sie auftauchen), aber mit einer eigenen testklasse nicht lauffähig ist:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
//Funktion wird per mit button-click aufgerufen; benötigte imports vor diesem codeschnipsel
public function RegisterClassAliasExample(e:Event):void { //von http://livedocs.adobe.com/flex/3/langref/flash/net/package.html#registerClassAlias%28%29 -verändert
   trace(getQualifiedClassName(TestKlasse)); //ausgabe: components::TestKlasse
   registerClassAlias("components.TestKlasse",TestKlasse); //auch mit components::TestKlasse versucht, wie mir die vorherige trace-ausgabe weiß machen will
            
     var eg1:TestKlasse = new TestKlasse();
     var ba:ByteArray = new ByteArray();
     ba.writeObject(eg1);
     ba.position = 0;
     var eg2:* = ba.readObject();
     trace(eg2 is TestKlasse, eg2 is MovieClip, typeof eg2); //ausgabe: false false undefined
}

und hier TestKlasse.as im Ordner components:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
package components
{
     import flash.display.MovieClip;
     public class TestKlasse extends MovieClip
     {
        private var blubb:String = "bla";
        public function TestKlasse() {
           trace("xyz");
        }
     }
}


in einer anderen seite (http://www.aboutflash.de/typsafe-storage-of-complex-data-types-in-local-shared-objects-20081109.html) hab ich gelesen, dass man ein Metatag mit z.B.[RemoteClass(alias="de.aboutflash.vo.MyType")] irgendwo einfügen muss. Nur weiß ich nicht, wo man solche einfügen muss und als ichs angepasst und einfach in die Klassendefinition von TestKlasse gepackt hab, zeigte es auch keine veränderung...

Weiß jemand, wie es möglich ist, dass man Flash-Objekte (auch ohne SharedObjects zu benutzen) auf die festplatte bekommt und wieder typensicher einladen kann? Und gibt es eine möglichkeit entsprechende Alias aus dem einzuladenden Objekt herauszufinden?

MfG
shadow_zed
springer#2
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

19.07.2010, 13:41