import util.Proxy;

class Widget {

        private var _someProperty:Number = 5;
        
        public function Widget(xmlFile:String){
        
                var xmlData:XML;
        
                xmlData = new XML();
                xmlData.ignoreWhite = true;
                xmlData.onLoad = Proxy.create(this,init,xmlData);
                xmlData.load(xmlFile);
                
        }
        
        private function init(success:Boolean, xmlData:XML){
                trace(success);
                trace(this._someProperty);
                trace(xmlData);
        }
}


You can get proxy from http://www.person13.com/articles/proxy/Proxy.htm

Alternatively (and not as cleanly):

class Widget {

        private var _someProperty:Number = 5;
        
        public function Widget(xmlFile:String){
        
                var xmlData:XML;
        
                xmlData = new XML();
                xmlData.ignoreWhite = true;
                xmlData.onLoad = function(success:Boolean){
                        ref.init(success,this);
                }
                xmlData.load(xmlFile);
                
        }
        
        private function init(success:Boolean, xmlData:XML){
                trace(success);
                trace(this._someProperty);
                trace(xmlData);
        }
}


onLoad dosen't "take" parameters -- it's being invoked by the XML
class from a private method and passed a boolean value so that you can
evaluate if the load was successful.
With "= function(success:Boolean){...", you are assigning the onLoad
method an anonymous function so that when the method does eventually
get invoked after a successful load, your functionality is invoked as
well.

--

Joseph Sorensen


D_C wrote:
i have a UI widget that loads its own layout info from an XML file.

is there a way to set the xml.onLoad to a useful function?

I would like to have the xml.onLoad callback to initialize the object
itself, like this:

class MyWidget {
 function myWidget(xmlFile) { // constructor
           xmlData = new XML();
        xmlData.load( xmlFile );
        xmlData.onLoad = this.init(xmlData);  // doesnt work
 }
 function init(xmlData) {
   /// do layout stuff here
 }

}

it seems the xml.onLoad will only take a function with a single
boolean parameter? eg
 xmlData.onLoad = function(success)  {  // ...

is there another pattern for doing this?

thanks!

/dc
_______________________________________________
          David "DC" Collier

[EMAIL PROTECTED]
          skype: callto://d3ntaku
          http://www.pikkle.com
          +81 (0)80 6521 9559

http://charajam.com 【★キャラ♪ジャム★】
人気キャラとJ-POP最新ヒット曲を自分で組み合わせて
待受Flashや着Flashを作っちゃおう!
_______________________________________________
_______________________________________________
[email protected]
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



--
--

*Joseph Sorensen* / *Skyform* ©
Web Design / Audio Production / Photography
*Web:* aerosdesign.com/jsorensen
*Em:* jsorensen[at]aerosdesign.com
*Ph:* 815.276.9006
_______________________________________________
[email protected]
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