A Flash Developer Resource Site

Results 1 to 5 of 5

Thread: Loading External Variables -> String Variables

  1. #1
    Junior Member
    Join Date
    Jan 2008
    Location
    Somerset, UK
    Posts
    25

    Talking [SOLVED]Loading External Variables -> String Variables

    Hey all, I've got a problem with importing external variables, and turning them into strings. Whenever I export, it gives me this error:

    TypeError: Error #1010: A term is undefined and has no properties.
    at EnergiMusicSig_fla::MainTimeline/frame1()

    The code is pretty self explanetory, ask if you need more info:

    The code for importing and turning into strings:
    Code:
    var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.load(new URLRequest("track_var.txt"));
    
    var track1_infoStr:String = new String(loader.data.track1_info);
    
    var track2_infoStr:String = new String(loader.data.track2_info);
    
    var track3_infoStr:String = new String(loader.data.track3_info);
    
    var track4_infoStr:String = new String(loader.data.track4_info);
    
    var track5_infoStr:String = new String(loader.data.track5_info);
    The text file containing variables: (no spaces)
    Code:
    track1_info=PendulumMasochistNoisiaRmX&track2_info=TinchyStryderFeatNDubz&track3_info=Track3SongName&track4_info=Track4SongName&track5_info=Track5SongName
    Thanks for any help!
    Last edited by raven3962; 06-15-2009 at 12:27 PM.

  2. #2
    Will moderate for beer
    Join Date
    Apr 2007
    Location
    Austin, TX
    Posts
    6,801
    Loaders are asynchronous. Your code is attempting to access loader.data before it's defined.

    You need to put the track initialization code inside an event handler for loader's COMPLETE event.

  3. #3
    Junior Member
    Join Date
    Jan 2008
    Location
    Somerset, UK
    Posts
    25
    I see, I've done that, but now flash is giving me "Undefined Property" errors because it's trying to use those strings too early. I think.

    The code is messy, I know, but here's the full frames code for you to have a butchers:

    Code:
    var loader:URLLoader = new URLLoader();
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.addEventListener(Event.COMPLETE, loading);
    loader.load(new URLRequest("track_var.txt"));
    
    function loading (event:Event):void {
    var track1_infoStr:String = new String(loader.data.track1_info);
    
    var track2_infoStr:String = new String(loader.data.track2_info);
    
    var track3_infoStr:String = new String(loader.data.track3_info);
    
    var track4_infoStr:String = new String(loader.data.track4_info);
    
    var track5_infoStr:String = new String(loader.data.track5_info);
    }
    
    text_holder.text_animator.track_info_text.text = "Please Press Play";
    
    var trackPlay:Number = 1;
    
    playbtn.addEventListener (MouseEvent.MOUSE_OVER, play_over);
    stopbtn.addEventListener (MouseEvent.MOUSE_OVER, stop_over);
    fwdbtn.addEventListener (MouseEvent.MOUSE_OVER, fwd_over);
    bckbtn.addEventListener (MouseEvent.MOUSE_OVER, bck_over);
    credit.addEventListener (MouseEvent.MOUSE_OVER, cred_over);
    
    
    function play_over (e:MouseEvent):void {
    	playbtn.gotoAndStop (5);
    	mouse_bubble.gotoAndStop (5);
    }
    
    function stop_over (e:MouseEvent):void {
    	stopbtn.gotoAndStop (5);
    	mouse_bubble.gotoAndStop (10);
    }
    
    function fwd_over (e:MouseEvent):void {
    	fwdbtn.gotoAndStop (5);
    	mouse_bubble.gotoAndStop (15);
    }
    
    function bck_over (e:MouseEvent):void {
    	bckbtn.gotoAndStop (5);
    	mouse_bubble.gotoAndStop (20);
    }
    
    function cred_over (e:MouseEvent):void {
    	mouse_bubble.gotoAndStop (25);
    }
    
    playbtn.addEventListener (MouseEvent.MOUSE_OUT, play_out);
    stopbtn.addEventListener (MouseEvent.MOUSE_OUT, stop_out);
    fwdbtn.addEventListener (MouseEvent.MOUSE_OUT, fwd_out);
    bckbtn.addEventListener (MouseEvent.MOUSE_OUT, bck_out);
    credit.addEventListener (MouseEvent.MOUSE_OUT, cred_out);
    
    function play_out (e:MouseEvent):void {
    	playbtn.gotoAndStop (1);
    	mouse_bubble.gotoAndStop (1);
    }
    
    function stop_out (e:MouseEvent):void {
    	stopbtn.gotoAndStop (1);
    	mouse_bubble.gotoAndStop (1);
    }
    
    function fwd_out (e:MouseEvent):void {
    	fwdbtn.gotoAndStop (1);
    	mouse_bubble.gotoAndStop (1);
    }
    
    function bck_out (e:MouseEvent):void {
    	bckbtn.gotoAndStop (1);
    	mouse_bubble.gotoAndStop (1);
    }
    
    function cred_out (e:MouseEvent):void {
    	mouse_bubble.gotoAndStop (1);
    }
    
    playbtn.addEventListener (MouseEvent.MOUSE_UP, play_start);
    stopbtn.addEventListener (MouseEvent.MOUSE_UP, stop_stop);
    fwdbtn.addEventListener (MouseEvent.MOUSE_UP, fwd_press);
    bckbtn.addEventListener (MouseEvent.MOUSE_UP, bck_press);
    
    function play_start (e:MouseEvent):void {
    	playbtn.removeEventListener (MouseEvent.MOUSE_UP, play_start);
    
    	if (trackPlay == 1) {
    		var track1_s:Sound = new Sound(new URLRequest("track1.mp3"));
    		text_holder.text_animator.track_info_text.text = track1_infoStr;
    		track1_s.play (0, 5);
    
    	} else if (trackPlay == 2) {
    		var track2_s:Sound = new Sound(new URLRequest("track2.mp3"));
    		text_holder.text_animator.track_info_text.text = track2_infoStr;
    		track2_s.play (0, 5);
    
    	} else if (trackPlay == 3) {
    		var track3_s:Sound = new Sound(new URLRequest("track3.mp3"));
    		text_holder.text_animator.track_info_text.text = track3_infoStr;
    		track3_s.play (0, 5);
    
    	} else if (trackPlay == 4) {
    		var track4_s:Sound = new Sound(new URLRequest("track4.mp3"));
    		text_holder.text_animator.track_info_text.text = track4_infoStr;
    		track4_s.play (0, 5);
    
    	} else if (trackPlay == 5) {
    		var track5_s:Sound = new Sound(new URLRequest("track5.mp3"));
    		text_holder.text_animator.track_info_text.text = track5_infoStr;
    		track5_s.play (0, 5);
    	}
    }
    
    function stop_stop (e:MouseEvent):void {
    	playbtn.addEventListener (MouseEvent.MOUSE_UP, play_start);
    	SoundMixer.stopAll ();
    }
    
    function fwd_press (e:MouseEvent):void {
    	if (trackPlay <= 4) {
    		trackPlay += 1;
    		SoundMixer.stopAll ();
    	} else if (trackPlay == 5) {
    	}
    }
    
    function bck_press (e:MouseEvent):void {
    	if (trackPlay>=2) {
    		trackPlay-=1;
    		SoundMixer.stopAll ();
    	} else if (trackPlay == 1) {
    	}
    }

  4. #4
    Will moderate for beer
    Join Date
    Apr 2007
    Location
    Austin, TX
    Posts
    6,801
    Now it's giving you that "undefined" error because your trackX_infoStr variables are local to the loading function. Declare them outside.

    Code:
    var track1_infoStr:String;
    var track2_infoStr:String;
    var track3_infoStr:String;
    var track4_infoStr:String;
    var track5_infoStr:String;
    
    function loading (event:Event):void {
     track1_infoStr = new String(loader.data.track1_info);
     track2_infoStr = new String(loader.data.track2_info);
     track3_infoStr = new String(loader.data.track3_info);
     track4_infoStr = new String(loader.data.track4_info);
     track5_infoStr = new String(loader.data.track5_info);
    }
    Technically, you shouldn't have to do "new String", but it should also be harmless.

  5. #5
    Junior Member
    Join Date
    Jan 2008
    Location
    Somerset, UK
    Posts
    25
    You sir, are a leg-end. Thanks everso much for the speedy help! All works fine now =D
    Have a beer =P

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