In AS2 there is a compile-time type-checking only, the Flash VM itself
doesn't care about type settings


here's what I'm thinking: the complier should know that the return value
from xmlnode.nodeValue  == string (even though the xml wouldnt be loaded
until runtime), and therefore throw an error if I try and assign it to
apoperty typed as a number.

You don't have compiler errors because you're assigning values to your
singleton by using the square brackets [ ] method. By doing this, at
compile
time the compiler doesn't know which property you're trying to modify


that's a good point.  I actually just did that to tidy up the code a little
bit, but that's not the issue.  Here's a clearer example of what I mean:

// this produces compiler error because settings_id is typed to Number
settings.settings_id = 'someString';

// this does not produce an error
settings.settings_id = settingsBranch.childNodes[0].firstChild.nodeValue;

//outputs 'string'
trace(typeof settings.settings_id)

or you can
modify your Settings class and make your xml processing aware of Settings'
property types


yeah that seems like the long way around...I don't have control over the xml
output so I can't just convert the xml to JSON, so I might not have a choice
though.







On 11/16/06, Hans Wichman <[EMAIL PROTECTED]> wrote:

Hi,
another option for typed data is the serializer from the xflas2 package.
It serializes/deserializes classes as well.

Or example imagine you not only have strings and numbers in your xml but a
type MyClass as well.
After deserializing it, you immediately calls methods on your object.

The reason I love that, is because instead of manually translating a model
to xml and back, i simply say Serializer.serialize (myModel) and when i
get
back to it, i deserialize it, and its immediately available to add
listeners
to for example.

Still in alpha though:)
greetz
JC


On 11/16/06, Julien Vignali <[EMAIL PROTECTED]> wrote:
>
> Thanks Rich ;-)
>
> You don't have compiler errors because you're assigning values to your
> singleton by using the square brackets [ ] method. By doing this, at
> compile
> time the compiler doesn't know which property you're trying to modify...
> The
> property can be of any type or can even not exist at all, the compiler
> won't
> bother! ;-)
> To solve the problem you can use JSON as Eka previously said, or you can
> modify your Settings class and make your xml processing aware of
Settings'
> property types.
>
> Here is a example:
>
> class com.mysite.model.Settings
> {
>   private static var instance:MySettings;
>   public var custom_color_3:String;
>   public var background_image:Boolean;
>   public var background_type:String;
>   public var background_alpha:Number;
>   public var title_mode:String;
>
>   /*
>    * Private constructor
>    */
>   private function MySettings(){
>       init();
>   }
>
>   /**
>    * Set the defaults values
>    * (otherwise properties are seen as 'undefined')
>    */
>   private function init():Void {
>       custom_color_3 = "";
>       background_alpha = 0;
>       background_image = false;
>       background_type = "";
>       title_mode = "";
>   }
>
>   // rest of class..
> }
>
> function parseSettings(success:Boolean){
> var settingsBranch:XMLNode = app_xml.firstChild;
> var name:String; // will store the current node name
> var value:String; // will store the current node string value
> var type:String; // will store Setting's property type
> var settingNodes:Array = settingsBranch.childNodes;
>
> // iterate through setting nodes
> for(var i:Number = 0; i < settingNodes.length; i++){
>    var settingNode:XMLNode = settingNodes[i];
>    name = settingNode.nodeName;
>    value = settingNode.firstChild.nodeValue;
>    type = typeof(settings[name]);
>    switch(type){
>      case "number": settings[name] = Number(value); break;
>      case "boolean": settings[name] = (value == "1") ? true : false;
> break;
>      default: settings[name]= value; break;
>    }
> }
> }
>
> Hope it helps,
>
> Julien
>
>
>
>
>
>
> 2006/11/16, Rich Rodecker < [EMAIL PROTECTED]>:
> > julien:
> >
> > sure here's a sample:
> >
> > class com.mysite.model.Settings {
> >
> >     private static var instance = null;
> >
> >     public var custom_color_3:String;
> >     public var background_image:Boolean;
> >     public var background_type:String;
> >      public var background_alpha:Number;
> >     public var title_mode:String;
> >
> >     //rest of class....
> > }
> >
> > Here is the function where I parse the xml into the properties above,
> pretty
> > simple:
> >
> >     function parseSettings(){
> >
> >         var settingsBranch = app_xml.firstChild.firstChild;
> >         var c = settingsBranch.childNodes;
> >
> >         var num = settingsBranch.childNodes.length;
> >
> >         var nextBranch:XMLNode = settingsBranch.childNodes [0];
> >
> >         while(nextBranch){
> >             var tagName = nextBranch.nodeName;
> >             settings[tagName] = nextBranch.firstChild.nodeValue;
> >             nextBranch = nextBranch.nextSibling;
> >         }
> >
> >     }
> >
> >
> > and here is what the xml looks like:
> >     <settings>
> >         <custom_color_3>#FFFFFF</custom_color_3>
> >         <background_image>1</background_image>
> >         <background_type>jpg</background_type>
> >         <background_alpha>100</background_alpha>
> >         <title_mode>PROFILE</title_mode>
> >     </settings>
> >
> >
> >
> > eka:  - yeah, i know xml is only a string..my problem is that i am
> assigning
> > a string to properties that are clearly typed as something other than
a
> > string, yet flash isnt complaining.
> >
> >
> >
> >
> > On 11/16/06, eka <[EMAIL PROTECTED]> wrote:
> > >
> > > Hello :)
> > >
> > > a XML is only a String .... all properties (nodeValue) or attributes
> are
> > > strings... you must transform the type of your values with customs
> > > "deserialize" functions.
> > >
> > > For me it's better to use JSON for example : http://www.json.org/(you
> > > keep
> > > the primitive types of your objects with the serialize/deserialize)
> > >
> >  > You can try to use my openSource framework "VEGAS" who implement
JSON
> and
> > > EDEN (the best solution to text format datas)
> > >
> > > Install VEGAS : http://vegas.riaforge.org/  (use the SVN or the zip
> link
> in
> > > this page to download my framework)
> > >
> > > Test the JSON examples in VEGAS in the vegas.string package :
> > >  http://svn.riaforge.org/vegas/AS2/trunk/bin/test/vegas/string/
> > >
> > > Test the Eden examples (Burrrn library used in VEGAS) :
> > > http://svn.riaforge.org/vegas/AS2/trunk/bin/test/buRRRn/eden/
> > >
> > > Test JSON and Eden extension in ASGard (extension of VEGAS) :
> > > http://svn.riaforge.org/vegas/AS2/trunk/bin/test/asgard/net/
> (JSONLoader,
> > > EdenLoader)
> > >
> > > Test my example of Config pattern and localization pattern in
> > > http://svn.riaforge.org/vegas/AS2/trunk/bin/test/asgard/config/
  (and
> > > bin/test/system)
> > >
> > > For me ... XML is slow and don't keep the typing  !
> > >
> > > EKA+ :)
> > >
> > >
> > > 2006/11/16, Julien Vignali < [EMAIL PROTECTED]>:
> > > >
> > > > Hi Rich, could you provide some sample code of your Settings class
> and
> > > > your
> > > > xml processing ?
> > > >
> > > > 2006/11/16, Rich Rodecker < [EMAIL PROTECTED]>:
> > > > >
> > > > > Hello,
> > > > >
> > > > > I've got a class named 'Settings' which has a number of
> > > > properties.  Those
> > > > > properties are strongly typed to various types...string, number,
> > > > boolean,
> > > > > etc.
> > > > >
> > > > > I'm loading in xml in a separate Model class, and then parsing
the
> xml
> > > > and
> > > > > assigning the that various values in the xml to the properties
of
> the
> > > > > Settings class.  However, all the values are being set as a
string
> > > (that
> > > > > part I expected since I am assigning the  values of text nodes,
> which
> > > of
> > > > > course are strings, in the xml to the Setting's
properties)...and
> I'm
> > > > not
> > > > > getting any parse errors when I try and assign a string to a
> property
> > > > that
> > > > > is strongly typed as a number, or boolean.
> > > > >
> > > > > I figure since I am trying to use
myBranch.firstChild.nodeValuethat
> > > > > flash,
> > > > > at compile time, can see I am trying to set a string to a
property
> > > typed
> > > > > as
> > > > > a Number, so what's going on?
> > > > > _______________________________________________
> > > > > Flashcoders@chattyfig.figleaf.com
> > > > > To change your subscription options or search the archive:
> > > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > > > >
> > > > > Brought to you by Fig Leaf Software
> > > > > Premier Authorized Adobe Consulting and Training
> > > > > http://www.figleaf.com
> > > > > http://training.figleaf.com
> > > > >
> > > > _______________________________________________
> > > >  Flashcoders@chattyfig.figleaf.com
> > > > To change your subscription options or search the archive:
> > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > > >
> > > > Brought to you by Fig Leaf Software
> > > > Premier Authorized Adobe Consulting and Training
> > > > http://www.figleaf.com
> > > >  http://training.figleaf.com
> > > >
> > > _______________________________________________
> > > Flashcoders@chattyfig.figleaf.com
> > > To change your subscription options or search the archive:
> > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > >
> > > Brought to you by Fig Leaf Software
> > > Premier Authorized Adobe Consulting and Training
> > > http://www.figleaf.com
> > > http://training.figleaf.com
> > >
> > _______________________________________________
> >  Flashcoders@chattyfig.figleaf.com
> > To change your subscription options or search the archive:
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> > Brought to you by Fig Leaf Software
> > Premier Authorized Adobe Consulting and Training
> > http://www.figleaf.com
> > http://training.figleaf.com
> >
> _______________________________________________
> Flashcoders@chattyfig.figleaf.com
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
>
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to