Menu:

Sponsor

Discover Master of Alchemy, our first iPad/iPhone and iPod touch game!

Follow Me

 

Forum's topics

Latest Files

Archives

Top Rated

Categories

Photo Gallery


Alessandro Crugnola on September 22, 2007 in actionscript

SharedObject reader plugin for FD3

In the past week I was working on the SharedObject plugin for FlashDevelop 3.
First I just made a port of my previous sepy sharedobject reader python code into C#, but then for the new AMF3 sharedobject encoding I found this java class very useful. By the way, after coding and coding.. I finally managed to create a good solution (ok, I have to test it a lot again...).
You can find the plugin here: http://code.google.com/p/fdplugins
But the interesting thing I found was another!
Flash does not read the sharedojects correctly (at least the amf0 ones)!

To reproduce this bug follow these steps:

Create a new document (flash8 / as2)
- Add this code in the timeline:
var so:SharedObject = SharedObject.getLocal("flash8", "/");
so.clear();
so.data.obj1 = new XML("");
so.data.obj2 = new Date();
so.data.obj3 = so.data.obj2;
so.data.obj4 = {a:1, b:so.data.obj1, c:[1,2,3], d:so.data.obj2};
so.data.obj5 = so.data.obj4.c;
so.flush();
you will see this in the debug view variables:
Variabile _level0.so = [oggetto #1, classe 'SharedObject'] {
    data:[oggetto #2, classe 'Object'] {
      obj1:[oggetto #3] {
        
          <root />
      },
      obj2:[oggetto #4, classe 'Date'] {Sat Sep 22 19:31:31 GMT+0200 2007},
      obj3:[oggetto #4, classe 'Date'],
      obj4:[oggetto #5, classe 'Object'] {
        d:[oggetto #4, classe 'Date'],
        c:[oggetto #6, classe 'Array'] [
          0:1,
          1:2,
          2:3
        ],
        b:[oggetto #3],
        a:1
      },
      obj5:[oggetto #6, classe 'Array']
    }
  }
ok, now remove all the code you just written and leave just this line:
var so:SharedObject = SharedObject.getLocal("flash8", "/");
and see the variables list again, you will see this:
Variabile _level0.so = [oggetto #1, classe 'SharedObject'] {
    data:[oggetto #2, classe 'Object'] {
      obj1:[oggetto #3] {
        
          <root />
      },
      obj2:[oggetto #4, classe 'Date'] {Sat Sep 22 19:31:31 GMT+0200 2007},
      obj3:[oggetto #5, classe 'Date'] {Sat Sep 22 19:31:31 GMT+0200 2007},
      obj4:[oggetto #6, classe 'Object'] {
        d:[oggetto #7, classe 'Date'] {Sat Sep 22 19:31:31 GMT+0200 2007},
        c:[oggetto #8, classe 'Array'] [
          0:1,
          1:2,
          2:3
        ],
        b:[oggetto #6, classe 'Object'],
        a:1
      },
      obj5:non definito
    }
  }
they are different! (both data.obj5 and data.obj4.b changed)

For what I understand during my experiments it seems that flash does not write into its internal references table the XML objects while reading back the file and so next time it open the sharedobject all the references after the xml are broken or just they point to a different object.

 

Bookmark and Share

 

 



Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)


Type the characters you see in the picture above.





 

TrackBacks

TrackBack URL for this entry: http://www.sephiroth.it/cgi-bin/mt/mt-tb.cgi/220