I am trying to pass parameters to my swf file using flash vars. I am using Swfobject to embed my swf. I, however, am not able to access these flashvars inside the swf file. I've been having trouble with this for weeks now. I have searched the internet, swfobject's documentation, and other questions related to this.
Here is my js code using the swfobject to embed the swf file.
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
flashvars.name1 = "hello";
swfobject.embedSWF("Comics.swf", "myContent", "950", "650","9.0.0","expressInstall.swf", flashvars, flashvars,flashvars);
</script>
Here is my the html code to be used for embedding
<div id="myContent"></div>
The swf is embedded fine and produces the following
<object type="application/x-shockwave-flash" name1="hello" data="Comics.swf" width="950" height="650" id="myContent" style="visibility: visible; ">
<param name="name1" value="hello">
<param name="flashvars" value="name1=hello">
</object>
Again, the swf is embedded fine. I can see the content but the flashvars seems to be null. Here is my flash code that tries to access the flashvars
var flashVars = root.loaderInfo.parameters;
addChild(Util.newLabel(" FlashVars: " + flashVars+" "+root.loaderInfo,0,0,400,100,12,0x0));
var y=0;
for(var i in flashVars){
addChild(Util.newLabel("FlashVars:"+i+":"+flashVars[i],0,y+=30,300,100,12,0x0));
}
Util is a custom class I made where newLabel(str:String,x:Number,y:Number,w:Number,h:Number,fontSize:uint, color:uint) is a method that returns a label component with str as its text, x and y as its location, w and h as its dimensions and etc. Im pretty sure that the util stuff works so I would like to know how do I really load flashvars?
I should see a list of variable names when running this code.
PS: The flash code above is coded in the main timeline(im using the flash ide to compile my code), in the first frame, while Util is in a seperate as file. The root object in the first frame in the main timeline is an [object MainTimeline].
Let me know if you need more info. Thanks in advance.
Flash captures the variables either by getting the variables inside the URL or by flashvars and they are key/value pairs. So basically if you had a URL like this:
http://someurl.com/flashmovie.swf?testVariable=101&testVariable2=tank
testVariable is the key and 101 is the value and you could get these key/value pairs as below;
//creating a textfield for debugging
var _textField:TextField = new TextField();
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.border = true;
addChild(_textField);
//flashvars code
try {
var valueString:String;
var keyString:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
for (keyString in paramObj) {
valueString = String(paramObj[keyString]);
_textField.appendText("\t" + keyString + ":\t" + valueString + "\n");
}
}catch (error:Error) {
_textField.appendText(error.toString());
}
Hope this helps, Cheers