FlashVars and Actionscript 3.0

I have the below actionscript, what I am trying to do is dynamically pass the name of the xml file using flashvars. For some reason I am getting the  Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: file:///C:/Documents%20and%20Settings/CRobinson/Desktop/Thermometer/xml/undefined.xml
      at thermometer_fla::thermometer_1/thermometer_fla::frame1()

See the attached txt file that is embedding the variable. Also see the actionscript to see how I am attempting to access this FlashVar called myVar. Any help here would be greatly appreciated. Thanks
stop();
import caurina.transitions.Tweener;//import tween class
stage.scaleMode = StageScaleMode.NO_SCALE;//define how stage scales
stage.align = StageAlign.TOP_LEFT;
//get all the vars from the xml file
var xmlString:URLRequest = new URLRequest("xml/" + root.loaderInfo.parameters.myVar + ".xml");
var xmlLoader:URLLoader = new URLLoader(xmlString);
xmlLoader.addEventListener("complete", init);
function init(event:Event):void {
	var xDoc:XMLDocument = new XMLDocument();
	xDoc.ignoreWhite = true;
	var thermXML:XML = XML(xmlLoader.data);
	xDoc.parseXML(thermXML.toXMLString());
	//get vars
	var goalTxt:String = xDoc.firstChild.childNodes[0].firstChild.nodeValue;//goal text
	populateGoal(goalTxt);//populate the goal text
	var goalNum:Number = xDoc.firstChild.childNodes[0].attributes.goalNum;//goal number
	var currentNum:Number = xDoc.firstChild.childNodes[1].attributes.currentNum;//current number
	makeCurrent(goalNum, currentNum);
	//marks
	var marksArray:Array = new Array;
	var marksLength:Number = xDoc.firstChild.childNodes[2].childNodes.length;
	for(var i:Number = 0;i<marksLength;i++){
		var markNum:Number = xDoc.firstChild.childNodes[2].childNodes[i].attributes.markNum;
		var markNumString:String = addCommas(markNum);
		addMark(markNumString, markNum, goalNum, currentNum);
	}
}
 
//populate goal text
function populateGoal(getGoalTxt:String):void {
	goal_txt.htmlText = getGoalTxt;
}
//make progress bar
var goalHeight:Number = 170;
function makeCurrent(goalNum:Number, currentNum:Number) {
	var percDone:Number = currentNum/goalNum;
	var progressY:Number = goalHeight - (goalHeight* percDone);//determine what y should be
	Tweener.addTween(progress_mc, {y:progressY, time:3, onUpdate:reportPosition, onUpdateParams:[progressY, goalNum, currentNum]});//tween progress
	Tweener.addTween(mask_mc, {y:progressY, time:3});//tween mask
}
//position during tween
function reportPosition(progressY:Number, goalNum:Number, currentNum:Number):void {
	var currentProgressY:Number = progress_mc.y;
	var percentDone:Number = 1 - (currentProgressY/goalHeight);
	var currentValue:Number = Math.floor(percentDone* goalNum);
	if (currentValue > currentNum) {
		currentValue = currentNum;//if the current value is more than what is should be...
	}
	progress_mc.progress_txt.htmlText = "$" + addCommas(currentValue);
}
//format number with commas
function addCommas(getDollarAmount:Number):String {
	var amountArray:Array = String(getDollarAmount).split();//split the string into an array
	var dollarArray:Array = new Array();
	var startNum:Number;
	var endNum:Number = amountArray[0].length;//length of the number
	while (endNum > 0) {
		startNum = Math.max(endNum - 3, 0);
		dollarArray.unshift(amountArray[0].slice(startNum, endNum));
		endNum = startNum;
	}
	amountArray[0] = dollarArray.join(",");//join all the nodes of the dollar array together
	return (amountArray[0]);//return the number with the ,s
}
//add marks
function addMark(markString:String, markNum:Number, goalNum:Number, currentNum:Number){
	var mark_mc:mark = new mark();
	mark_mc.x = 65;
	var percDone:Number = markNum/goalNum;
	var markY:Number = goalHeight - (goalHeight* percDone);//determine what y should be
	mark_mc.y = markY;
	mark_mc.mark_txt.text = "$" + markString;
	this.addChild(mark_mc); 
}

Open in new window

thermometer.txt
LVL 2
E-RiskAsked:
Who is Participating?
 
asaivanConnect With a Mentor Commented:
remove myvar references from your embed code and try this instead.  add to script block (and no script using appropriate notation).

'FlashVars','myVar=10868'
0
 
asaivanCommented:
I'm not seeing this var listed in the Javascript part of your embed code.  It is in the <noscript> block, but not in the <script> block.
There should be 'myvar', '10868'
0
 
E-RiskAuthor Commented:
I added the code below same error.
<script language="javascript">
	if (AC_FL_RunContent == 0) {
		alert("This page requires AC_RunActiveContent.js.");
	} else {
		AC_FL_RunContent(
			'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
			'width', '590',
			'height', '300',
			'src', 'thermometer',
			'quality', 'high',
			'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			'align', 'middle',
			'play', 'true',
			'loop', 'true',
			'scale', 'showall',
			'wmode', 'window',
			'devicefont', 'false',
			'id', 'thermometer',
			'bgcolor', '#ffffff',
			'name', 'thermometer',
			'menu', 'true',
			'allowFullScreen', 'false',
			'allowScriptAccess','sameDomain',
			'movie', 'thermometer',
			'myVar', '10868',
			'salign', ''
			); //end AC code
	}
</script>
<noscript>
	<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="590" height="300" id="thermometer" align="middle">
	<param name="allowScriptAccess" value="sameDomain" />
	<param name="allowFullScreen" value="false" />
	<param name="movie" value="thermometer.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />	<embed src="thermometer.swf" quality="high" bgcolor="#ffffff" width="590" height="300" name="thermometer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" myVar="10868"/>
	</object>
</noscript>

Open in new window

0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
asaivanCommented:
My fault, you actually don't need that, just add the query sting to the swf name.

my.swf?myvariable=variablevalue
0
 
E-RiskAuthor Commented:
This is what I get:Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: file:///C:/Documents%20and%20Settings/CRobinson/Desktop/Thermometer/xml/undefined.xml
      at thermometer_fla::thermometer_1/thermometer_fla::frame1()

Here is what I added:
<param name="movie" value="thermometer.swf?myVar=10868" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="thermometer.swf" quality="high" bgcolor="#ffffff" width="590" height="300" name="thermometer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" myVar="10868"/>

Here is the action script I am using to try and refernce the variable:
var xmlString:URLRequest = new URLRequest("xml/" + this.loaderInfo.parameters.myVar + ".xml");
0
 
E-RiskAuthor Commented:
As this ?
<script language="javascript">
      if (AC_FL_RunContent == 0) {
            alert("This page requires AC_RunActiveContent.js.");
      } else {
            AC_FL_RunContent(
                  'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
                  'width', '590',
                  'height', '300',
                  'src', 'thermometer',
                  'quality', 'high',
                  'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
                  'align', 'middle',
                  'play', 'true',
                  'loop', 'true',
                  'scale', 'showall',
                  'wmode', 'window',
                  'devicefont', 'false',
                  'id', 'thermometer',
                  'bgcolor', '#ffffff',
                  'name', 'thermometer',
                  'menu', 'true',
                  'allowFullScreen', 'false',
                  'allowScriptAccess','sameDomain',
                  'movie', 'thermometer',
                  'FlashVars','myVal=10868'
                  'salign', ''
                  ); //end AC code
      }
</script>

<noscript>
      <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="590" height="300" id="thermometer" align="middle">
      <param name="allowScriptAccess" value="sameDomain" />
      <param name="allowFullScreen" value="false" />
      <param name="movie" value="thermometer.swf?myVar=10868" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />      <embed src="thermometer.swf" quality="high" bgcolor="#ffffff" width="590" height="300" name="thermometer" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>
      </object>
</noscript>
0
 
E-RiskAuthor Commented:
Awesome! Works like a charm.
I was sooo close....Thanks for the help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.