E-Risk
asked on
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 %20Setting s/CRobinso n/Desktop/ Thermomete r/xml/unde fined.xml
at thermometer_fla::thermomet er_1/therm ometer_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
at thermometer_fla::thermomet
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);
}
thermometer.txt
ASKER
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>
My fault, you actually don't need that, just add the query sting to the swf name.
my.swf?myvariable=variable value
my.swf?myvariable=variable
ASKER
This is what I get:Error #2044: Unhandled ioError:. text=Error #2032: Stream Error. URL: file:///C:/Documents%20and %20Setting s/CRobinso n/Desktop/ Thermomete r/xml/unde fined.xml
at thermometer_fla::thermomet er_1/therm ometer_fla ::frame1()
Here is what I added:
<param name="movie" value="thermometer.swf?myV ar=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="sameDom ain" allowFullScreen="false" type="application/x-shockw ave-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");
at thermometer_fla::thermomet
Here is what I added:
<param name="movie" value="thermometer.swf?myV
Here is the action script I am using to try and refernce the variable:
var xmlString:URLRequest = new URLRequest("xml/" + this.loaderInfo.parameters
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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','sameD omain',
'movie', 'thermometer',
'FlashVars','myVal=10868'
'salign', ''
); //end AC code
}
</script>
<noscript>
<object classid="clsid:d27cdb6e-ae 6d-11cf-96 b8-4445535 40000" 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?myV ar=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="sameDom ain" allowFullScreen="false" type="application/x-shockw ave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>
</object>
</noscript>
<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','sameD
'movie', 'thermometer',
'FlashVars','myVal=10868'
'salign', ''
); //end AC code
}
</script>
<noscript>
<object classid="clsid:d27cdb6e-ae
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="false" />
<param name="movie" value="thermometer.swf?myV
</object>
</noscript>
ASKER
Awesome! Works like a charm.
I was sooo close....Thanks for the help.
I was sooo close....Thanks for the help.
There should be 'myvar', '10868'