A Flash Developer Resource Site

Results 1 to 4 of 4

Thread: [RESOLVED] Dynamic Text from XML

Threaded View

  1. #1
    Junior Member
    Join Date
    Feb 2010
    Posts
    17

    resolved [RESOLVED] Dynamic Text from XML

    Hi Guys - really need to know if this is possible, and if so - please help!

    Please!

    I need to reload data from an external XML into the same dynamic text field on pressing a series of buttons. Each XML file is for a different (human) language.

    Please use the below AS in a new layer in actions - first frame in the timeline. On another layer create a dynamic text box with an instance name of 'theText' in the first frame. On a third later draw four small rectangles and convert them to symbols and give them instance names of 'enBtn', 'plBtn', 'deBtn' and 'nlBtn' respectively.

    Use the icon files and XML files in the attached. Test the movie - you should see a carousel and your four language 'buttons'.

    You will see that if you click on a carousel icon some text will appear. If you click the icon again the text will disappear and the icon will go back to the carousel. If you now click one of the language buttons, you will see that the language associated with the tooltips and contents changes to the target language.

    BUT - here is the problem. If you have one of the icons popped-out so that text is showing, then you change the language using a button, the original text gets 'stuck' on the stage. This needs to be 'destroyed' when the user changes the language, along with all the other carousel items.

    Can anyone please advise how to destroy what is in the dynamic text when a language button is pressed so that it can be reloaded with the new XML when the language is changed???

    Please, please, please help! Getting desperate!!!!!

    BTW, couldn't attach the stripped-down movie to the forums as it was still too big. Are there any workarounds for this - have already removed all images.....

    Thanks,

    lobster_bot

    AS:

    Code:
    import mx.utils.Delegate;
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    
    var numOfItems:Number;
    var radiusX:Number = 300;
    var radiusY:Number = 75;
    var centerX:Number = Stage.width / 2;
    var centerY:Number = Stage.height / 1.8;
    var speed:Number = 0.05;
    var perspective:Number = 130;
    var home:MovieClip = this;
    theText._visible = false;
    var carouselClips:Array = new Array;
    var currentCarousel:Number = 1;
    
    var tooltip:MovieClip = this.attachMovie("tooltip","tooltip",10000);
    tooltip._alpha = 0;
    
    var xml:XML = new XML();
    xml.ignoreWhite = true;
    
    xml.onLoad = function()
    {
           for (z=0; z<carouselClips.length; z++) {
              removeMovieClip(carouselClips[z]);
           }	
    	var nodes = this.firstChild.childNodes;
    	numOfItems = nodes.length;
    	for(var i=0;i<numOfItems;i++)
    	{
    		var t = home.attachMovie("item","item"+i,i+1);
    		t.angle = i * ((Math.PI*2)/numOfItems);
    		t.onEnterFrame = mover;
    		t.toolText = nodes[i].attributes.tooltip;
    		t.content = nodes[i].firstChild.nodeValue;
    		t.icon.inner.loadMovie(nodes[i].attributes.image);
    		t.r.inner.loadMovie(nodes[i].attributes.image);
    		t.icon.onRollOver = over;
    		t.icon.onRollOut = out;
    		t.icon.onRelease = released;
    		carouselClips.push(t);
    	}
    }
    
    function over()
    {
    	//BONUS Section
    	var sou:Sound = new Sound();
    	sou.attachSound("sover");
    	sou.start();
    	
    	home.tooltip.tipText.text = this._parent.toolText;
    	home.tooltip._x = this._parent._x;
    	home.tooltip._y = this._parent._y - this._parent._height/2;
    	home.tooltip.onEnterFrame = Delegate.create(this,moveTip);
    	home.tooltip._alpha = 100;
    }
    
    function out()
    {
    	delete home.tooltip.onEnterFrame;
    	home.tooltip._alpha = 0;
    }
    
    function released()
    {
    	//BONUS Section
    	var sou:Sound = new Sound();
    	sou.attachSound("sdown");
    	sou.start();
    	
    	home.tooltip._alpha = 0;
    	for(var i=0;i<numOfItems;i++)
    	{
    		var t:MovieClip = home["item"+i];
    		t.xPos = t._x;
    		t.yPos = t._y;
    		t.theScale = t._xscale;
    		delete t.icon.onRollOver;
    		delete t.icon.onRollOut;
    		delete t.icon.onRelease;
    		delete t.onEnterFrame;
    		if(t != this._parent)
    		{
    			var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,0,1,true);
    			var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,0,1,true);
    			var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,100,0,1,true);
    		}
    		else
    		{
    			var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,t._xscale,100,1,true);
    			var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,t._yscale,100,1,true);
    			var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,175,1,true);
    			var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,400,1,true);
    			theText._visible = true;
    			theText.htmlText = t.content;
    			var s:Object = this;
    			tw.onMotionStopped = function()
    			{
    				s.onRelease = unReleased;
    			}
    		}
    	}
    }
    
    function unReleased()
    {
    	//BONUS Section
    	var sou:Sound = new Sound();
    	sou.attachSound("sdown");
    	sou.start();
    	
    	delete this.onRelease;
    	theText._visible = false;
    	for(var i=0;i<numOfItems;i++)
    	{
    		var t:MovieClip = home["item"+i];
    		if(t != this._parent)
    		{
    			var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,0,t.theScale,1,true);
    			var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,0,t.theScale,1,true);
    			var tw3:Tween = new Tween(t,"_alpha",Strong.easeOut,0,100,1,true);
    		}
    		else
    		{
    			var tw:Tween = new Tween(t,"_xscale",Strong.easeOut,100,t.theScale,1,true);
    			var tw2:Tween = new Tween(t,"_yscale",Strong.easeOut,100,t.theScale,1,true);
    			var tw3:Tween = new Tween(t,"_x",Strong.easeOut,t._x,t.xPos,1,true);
    			var tw4:Tween = new Tween(t,"_y",Strong.easeOut,t._y,t.yPos,1,true);
    			tw.onMotionStopped = function()
    			{
    				for(var i=0;i<numOfItems;i++)
    				{
    					var t:MovieClip = home["item"+i];
    					t.icon.onRollOver = Delegate.create(t.icon,over);
    					t.icon.onRollOut = Delegate.create(t.icon,out);
    					t.icon.onRelease = Delegate.create(t.icon,released);
    					t.onEnterFrame = mover;
    				}
    			}
    		}
    	}
    }
    
    
    function moveTip()
    {
    	home.tooltip._x = this._parent._x;
    	home.tooltip._y = this._parent._y - this._parent._height/2;
    }
    enBtn.onRelease = function() {
    
         switch (currentCarousel)
         {
              default:
                   xml.load("icons_en.xml");
                   currentCarousel = 1;
                   break;
         }
    }	
    plBtn.onRelease = function() {
    
         switch (currentCarousel)
         {
              default:
                   xml.load("icons_pl.xml");
                   currentCarousel = 3;
                   break;
         }
    }
    deBtn.onRelease = function() {
    
         switch (currentCarousel)
         {
              default:
                   xml.load("icons_de.xml");
                   currentCarousel = 2;
                   break;
         }
    }
    nlBtn.onRelease = function() {
    
         switch (currentCarousel)
         {
              default:
                   xml.load("icons_nl.xml");
                   currentCarousel = 4;
                   break;
         }
    }
    
    xml.load("icons_en.xml");
    
    function mover()
    {
    	this._x = Math.cos(this.angle) * radiusX + centerX;
    	this._y = Math.sin(this.angle) * radiusY + centerY;
    	var s = (this._y - perspective) /(centerY+radiusY-perspective);
    	this._xscale = this._yscale = s*100;
    	this.angle += this._parent.speed;
    	this.swapDepths(Math.round(this._xscale) + 100);
    }
    
    this.onMouseMove = function()
    {
    	speed = (this._xmouse-centerX)/14000;
    }
    Last edited by lobster_bot; 12-13-2010 at 04:22 PM. Reason: Slight change to AS

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center