Hello,
     I have a problem synchronising external data loading and drawing
graph as per external data.
I have to display 12 concentric rings(each representing a sun
sign"Rashi"). I take the order of rings from xml file. I have to plot
users as dots on the respective sunsign rings. The problem is, I get a
blank page without rings and all. But when I randomly click on the
blank canvas, the mose-click events meant for displaying the user(dot)
profile data from xml file get fired and I can see the users' data.

   I am trying to play with the initialize/creationComplete and
applicationComplete for getting the desired output. I have set startup
()(which calls httpservice.send) in the initialize and create()(which
reads xml data and draws circles and nodes in the httpservice's
xmlresult success event. I am not sure of how to go about. In IE,
because of cache, when I reload my page, the circles get displayed.
But not in Firefox.

Pasting the code below:-

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="absolute" width="711" height="600" backgroundColor="#FFFFFF"
horizontalScrollPolicy="off" verticalScrollPolicy="off" initialize =
"startup()">
        <mx:VRule x="588" y="24" width="0" height="600" />
        <mx:Canvas x="0" y="0" width="711" height="600" id="cnv1"
backgroundColor="#FFFFFF" borderStyle="none"
horizontalScrollPolicy="off" verticalScrollPolicy="off">
                <mx:VRule x="511" y="0" width="8" height="600"/>
                <mx:Image x="564" y="27"  id="img1" scaleContent="true"/>
                <mx:Label x="529" y="260" text="Favourite  Movies:" width="112"
id="lblMovies" fontFamily="Verdana"/>
                <mx:Label x="529" y="388" text="Favourite Music:" width="112"
id="lblMusic"/>
                <mx:Label x="529" y="499" text="Favourite Books:" 
id="lblBooks"/>
                <mx:TextArea x="533" y="124" width="168" id="txtStatus" 
height="53"
wordWrap="true" verticalScrollPolicy="auto" verticalScrollPosition="0"
editable="false" borderStyle="none"/>
                <mx:TextArea x="527" y="282" height="101" id="txtMovies"
editable="false" enabled="true" borderStyle="none" width="160"/>
                <mx:TextArea x="529" y="408" height="89" id="txtMusic"
wordWrap="true" editable="false" borderStyle="none" width="158"/>
                <mx:TextArea x="529" y="516" height="83" id="txtBooks"
wordWrap="true" editable="false" borderStyle="none" width="158"/>

                <mx:Label x="527" y="221" text="Birthday:" height="25" 
width="101"
id="lblBday"/>
                <mx:Label x="582" y="220" width="98" id="txtBday" height="25"
alpha="0.0"/>
                <mx:Label x="528" y="195" text="Name:" id="lblName"/>
                <mx:Label x="572" y="197" id="txtName" width="124" height="18"/>
        </mx:Canvas>

        <mx:Script>
                <![CDATA[
                        import mx.rpc.events.ResultEvent;
                        import mx.rpc.events.FaultEvent;
//      import flash.display.LoaderInfo;
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
//      import flash.net.URLLoader;
//      import flash.net.URLRequest;
        import flash.text.TextField;
        import mx.core.UIComponent;

        public var rashiObjectsArray:Array;
        public var rashiRingsArray:Array;

        import mx.controls.Alert;
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;

        [Bindable]
        private var myXML:XML;

        internal var isLoaded:Boolean = false;

        internal var myFormat:TextFormat = new TextFormat();



        public function deg2rad(deg:Number):Number
        {
                return deg*Math.PI/180;
        }

        public function clearControls():void
        {
        //      img1.unloadAndStop();
                txtStatus.text = "";
                txtBday.text="";
                txtMovies.text ="";
                txtMusic.text = "";
                txtBooks.text ="";
                txtName.text="";

        }

        public function initControls():void
        {
                myFormat.font = "Verdana";
                myFormat.font = "12px";
                myFormat.bold;
                lblBday.visible = false;
                lblMovies.visible = false;
                lblMusic.visible = false;
                lblBooks.visible = false;
                lblName.visible = false;
                cnv1.visible = true;

        }

        public function onOver(event:MouseEvent):void
        {
                var txt:TextField = (event.target as TextField);
                txt.setTextFormat(myFormat);
                var value:int = parseInt(txt.name);
                var rindex:int = value / 1000;
                var dindex:int = value % 1000;
                var rashi:RashiObject = rashiObjectsArray[rindex];
                var userobj:UserObject = rashi.rusers[dindex];
                txt.text = userobj.getUname();
                txt.autoSize = "left";

        }

        public function onClick(event:MouseEvent):void
        {
                clearControls();
                var txt:TextField = (event.target as TextField);
                var value:int = parseInt(txt.name);
                var rindex:int = value / 1000;
                var dindex:int = value % 1000;
                var rashi:RashiObject = rashiObjectsArray[rindex];
                var userobj:UserObject = rashi.rusers[dindex];
                txt.text = userobj.getUname();
                txt.autoSize = "left";


                img1.source = userobj.getPic();
                if(userobj.getStatus()=="NA")
                        txtStatus.visible = false;
                else {
                        txtStatus.text = userobj.getStatus();
                        txtStatus.visible = true;
                }

                txtName.text = userobj.getUname();
                lblName.visible = true;

                txtBday.text = userobj.getBdate();
                lblBday.visible = true;
                if(userobj.getMovies()=="NA") {
                        txtMovies.visible = false;
                        lblMovies.visible = false;
                }
                else {
                                txtMovies.text = userobj.getMovies();
                                txtMovies.visible = true;
                                lblMovies.visible = true;
                }

                if(userobj.getMusic()=="NA"){
                        txtMusic.visible = false;
                        lblMusic.visible = false;
                }
                else {
                                txtMusic.text = userobj.getMusic();
                                txtMusic.visible = true;
                                lblMusic.visible = true;
                }

                if(userobj.getBooks()=="NA"){
                        txtBooks.visible = false;
                        lblBooks.visible = false;
                }
                else {
                                txtBooks.text = userobj.getBooks();
                                txtBooks.visible = true;
                                lblBooks.visible = true;
                        }
        }

        public function onOut(event:MouseEvent):void
        {
                var txt:TextField = (event.target as TextField);
                txt.text = "";
        }

        private function convertDate(bdate:String):String
        {
                var finalString:String ="";
                var mon:String="";

       if(bdate !="")
       {
                var tokens:Array = bdate.split("/");
                switch(tokens[0]) {
                case 01: {
                                mon = "January";
                                break;
                }
                case 02: {
                                mon = "February";
                                break;
                }
                case 03: {
                                mon = "March";
                                break;
                }
                case 04: {
                                mon = "April";
                                break;
                }
                case 05: {
                                mon = "May";
                                break;
                }
                case 06: {
                                mon = "June";
                                break;
                }
                case 07: {
                                mon = "July";
                                break;
                }
                case 08: {
                                mon = "August";
                                break;
                }
                case 09: {
                                mon = "September";
                                break;
                }
                case 10: {
                                mon = "October";
                                break;
                }
                case 11: {
                                mon = "November";
                                break;
                }
                case 12: {
                                mon = "December";
                                break;
                }
        }
                if(tokens.length == 3)
                        finalString = tokens[1]+" "+mon+" "+tokens[2];
                else if(tokens.length==2)
                        finalString = tokens[1]+" "+mon;
        }
                else
                        finalString = "NA";

                return finalString;
 }

        public function create():void
        {


                        var borderColor:uint  = 0x666666;
                var borderSize:uint   = 2;
                        var xCoord:int = 240;   //original:-250
                var yCoord:int = 300;   //original:-200
                var radius:int = 18;
                        var r:int = radius;

                        rashiRingsArray = new Array();
                        rashiObjectsArray = new Array();
        //              var rashiCount:int = myXML.rashi.length();
                        //2. Create 12 rashi circles.


                        for (var i:int = 0; i < 11; i++)
                        {

                                //Big Circle.
                                var circle1:Sprite = new Sprite();
                                //Push rashi circle in the cirle array.
                                rashiRingsArray.push(circle1);
        //                      circle1.graphics.lineStyle(borderSize, 
myXML.rashi[i].color);
                                circle1.graphics.lineStyle(borderSize, 
0xFF0000);
                                circle1.graphics.drawCircle(xCoord, yCoord, r);
                                var shift:int = i * 90;
                                //At the same time create a rashi object nd 
push in object array.
                                var rashiobj:RashiObject = new 
RashiObject(myXML.rashi[i].rid ,
myXML.rashi[i].rname, myXML.rashi[i].trait, myXML.rashi[i].count);
                                rashiObjectsArray.push(rashiobj);
                                //Get count of users for the rashi.
                                var userCount:int = 
myXML.rashi[i].users.length();
                        //      trace(myXML.rashi[i].count);

                                if (myXML.rashi[i].users.length() > 0)
                                {

                                        //Initialize angle.
                                        var angle:int = shift;
                                        var angleDelta:Number = deg2rad(360 / 
myXML.rashi[i].count);

                                        for (var j:int = 0; j < 
myXML.rashi[i].count; j++)
                                        {

                                                //Add the user to rashiobject 
array.
                                        //      var str:String = 
convertDate(myXML.rashi[i].users.user
[j].bday);
                                                var str:String = 
myXML.rashi[i].users.user[j].bday;
                                                var userObject:UserObject = new 
UserObject(myXML.rashi
[i].users.user[j].uid, myXML.rashi[i].users.user[j].uname,myXML.rashi
[i].users.user[j].upic,myXML.rashi[i].users.user[j].umovies,myXML.rashi
[i].users.user[j].umusic,myXML.rashi[i].users.user
[j].ubooks,myXML.rashi[i].users.user[j].usite,myXML.rashi[i].users.user
[j].status,str);
                                                
//trace(rashiObjectsArray[i].getRname());
                                                
rashiObjectsArray[i].addUser(userObject);

                                                //Draw smaller circle 
simulating a dot.
                                                var dot:Sprite = new Sprite();
                                                dot.name = 
(i*1000+j).toString();
                                                
dot.graphics.beginFill(0xFF0000);
                                        //      
dot.graphics.beginFill(myXML.rashi[i].color);
                                                dot.buttonMode = false;

                                                //Set the x and y co-ordinates.
                                                angle += angleDelta;
                                                var b:Number = 
r*Math.cos(angle);
                                                var h:Number = r * 
Math.sin(angle);

                                                var imageLoader:MovieClip = new 
MovieClip();

                                                var txt:TextField = new 
TextField();
                                                txt.setTextFormat(myFormat);
                                                txt.name = 
(i*1000+j).toString();
                                                txt.visible = true;
                                                txt.width = 100;
                                                txt.height = 18;
                                                txt.text = "";
                                                txt.x = xCoord+b-1;
                                                txt.y = yCoord + h ;

                                                
txt.addEventListener(MouseEvent.MOUSE_OVER, onOver);
                                                
txt.addEventListener(MouseEvent.CLICK, onClick);
                                                
txt.addEventListener(MouseEvent.MOUSE_OUT, onOut);
                                                dot.addChildAt(txt,0);
                                                dot.graphics.drawCircle(xCoord 
+ b, yCoord + h, 5);
                                                circle1.addChildAt(dot, j);

                                        }
                                }
                                cnv1.rawChildren.addChildAt(circle1, i);
                                cnv1.setVisible(true);
                                r = r + 20;
                        }


        }

                private function xmlResultFailure( event:FaultEvent ):void {
                 Alert.show( event.fault.message, "Error loading XML" );
                }

                private function xmlResultSuccess( event:ResultEvent ):void {
                 myXML = event.result as XML;
                 isLoaded = true;

                  create();
                 }

                public function startup():void
                {


                        initControls();
                        //1. Import XML data.
                        myService.clearResult(true);
                        myService.send();
                }

                ]]>
        </mx:Script>
        <mx:HTTPService id="myService" url="http://www.udayjoshi.com/
rashi.xml" showBusyCursor="true" result="xmlResultSuccess( event )"
resultFormat="e4x"
fault="xmlResultFailure( event ); " />


</mx:Application>

Thanks.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Flex 
India Community" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/flex_india?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to