A simple and efficient way of dynamically resizing flash embedded objects with javascript and actionscript.
Ever wanted to change the dimensions of a flash movie on-the-fly without refreshing the page? If yes, read on!
The idea is to wrap your flash movie within a div and embed it with swfobject making its width and height 100%. Resizing the wrapper div with javascipt is very simple and can be done with a single jquery function in the html code. The same function can also be called from flash using a simple getURL action, resulting an easy way of accomplishing the goal of dynamically resizing flash movies.
The code
Firstly we need to insert our flash movie in the html using swfobject. In our example the flash movie is resized.swf. Inside the head tag insert:
<script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
var flashvars = {
};
var params = {
allowFullScreen: "true",
menu: "false",
wmode: "window"
};
var attributes = {
id: "resized",
name: "resized",
wmode: "window"
};
swfobject.embedSWF("resized.swf", "resized", "100%", "100%", "10.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>
Note that we’re giving the embedded swf a width and height of 100% and for some caching speed, we load the swfobect from Google.
We also need to load the jQuery that we’ll need for our javascript function later on. We load jQuery also from Google by inserting still inside head tag:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>
We now need some CSS for the wrapper div that’ll hold the flash movie and set its initial dimensions. For simplicity we’ve given it an id of resized.
#resized{width:550px; height:400px; margin:20px 40px;}
We insert the div in our markup and we also create a text link that we’ll use to call the jquery function.
In ResizeFlash function, the first number (800) corresponds to the new width (in pixels) we want our flash to change and the second (1200) to the new height. We can also use percentages (e.g. 90%) instead of pixel values and leaving any of the 2 parameters empty will result in only resizing one dimension. For instance writing ResizeFlash(”,’1200′) will set the height of flash to 1200px while leaving its width as it is.
So know we need to insert the actual javascript function that’ll do the trick of resizing the div holder. At the very end of our document, right before the closing body tag insert:
<script>
function ResizeFlash(newWidth,newHeight){
if(newWidth){
$("#resized").css("width",newWidth);
}
if(newHeight){
$("#resized").css("height",newHeight);
}
}
</script>
The function checks if width and height parameters are set and if they are, gets their values and applies a new CSS style to the div.
The Flash (Actionscript 2.0)
Calling the function from within the flash is very easy with the use of the getURL action. So create the movie with flash and give it the name resized. Create a new button and give it an instance name of btn1. Then make an onRelease function in a frame in timeline and insert “javascript:ResizeFlash(”,’1000′);” as the URL inside the getURL action:
btn1.onRelease=function(){
getURL("javascript:ResizeFlash('','1000');");
}
The button when clicked will set the flash movie height to 1000 pixels. You can see that we call the javascript function and set its parameters exactly like we do in html text links. Export the movie as resized.swf and you’re done
Note that in order to see the result, you need to upload your files on your server. if you wanna check it locally, you’ll need to change the flash player security settings (right-click swf, select “Global Settings…”).
See a working example of the tutorial
Download source files





28 Comments
Cool.
Now if only you made it so the user can enter their own value in an input box.
Good suggestion. I’ll try to find some time to implement it. Thanks!
Wow this is very good. It works in firefox, but IE doesn`t show the flash movie. Or i`m missing something?
Never mind works perfect in IE too. The problem was in mine IE
Yes, sometimes IE has issues updating flash to latest version
The actionscript resize buttons don’t seem to be working for me. The javascript resizing works fine but inside flash: nothing.
Yea, scratch that/delete that comment. getURL local v. live got it…
Really nice Work let me try it. Thanks for sharing.
thank. good job.
Yes, sometimes IE has issues updating flash to latest version
Yea, scratch that/delete that comment. getURL local v.
its works all browsers, thanks.
i have IE 8 and i wont make 100% height i doesn’t work for me
I have latest flash player
In order to have an element be 100% height, you need to add on your css: html,body{height:100%}
This is a really helpful tutorial! Thanks for sharing.
Thank you. That is a great code.
I noted that I cannot set height to 100%, any idea of how I can make it ?
In order to set an element height to 100% you need to set its parent height also (for xhtml). For example in the demo, the parent of #resized is the body. So in order to set #resized height to 100%, in the css, you’d need to add firstly:
html,body{height:100%;}
Hi, I’m having an issue using the getURL function in Flash as2. I notice that I needed to change the flash player to version 7 in order to work. Is there a way of this working with flash player 1o? Or would I need to change the getURL to ExternalInterface (which I’m not too familiar with) in order to work with version 10? Thanks in advance.
Great work. Thanks for sharing
Sorry. I noticed when it’s published online it works. Thanks again.
very nice sharing. I’m looking for a similar code in the form of a slide and dragging it horizontally, but could change the size of the possible?
Hi, great code but this is manually resized by hitting a button.
How can I get this to automatically resize a movie to 90% when a page is loaded ?
You can simply call ResizeFlash function on window load like this:
window.onload=function(){
ResizeFlash('90%');
}
or on body tag:
<body onload="ResizeFlash('90%'); ">
Thank you, powerful!
Just thought about resizing from the top RIGHT corner.
I made simple and it works perfect in Opera & Safari, but Firefox, Chrome & IE (off course ) that shows buggy (with blinking…).
Please, if you have any solution. Here is my example files:
Thanks in advance!
This is exactly what I’ve been searching for days, thanks a lot!!
Auto resize div – no need to set any values
See the scripts in action:
http://www.kataskeves.com.gr/
Manos, thank you for the excellent starting point
Mike
/////////////////////////////////////////////
Flash
var curHeight:Number = this._height;
var newHeight:Number = Math.round(curHeight) + 64;
getURL(“javascript:ResizeContent(” + newHeight + “);”);
==============================================
HTML
function ResizeContent(newHeight){
var FLContainer = document.getElementById(‘contentContainer’);
FLContainer.style.height = newHeight + ‘px’;
}
Great!
Thank you for posting your mod
Is it easy to change also the margins of the element on click ?
It would be great also to be able to adjust the positioning.
And how about easing the transition? Is it simple to do?
Thanks a lot man! This is really helpful!
17 Trackbacks
Resize flash dynamically with javascript and actionscript…
A simple and efficient way of dynamically resizing flash embedded objects with javascript and actionscript….
Resize flash dynamically with javascript and actionscript…
A simple and efficient way of dynamically resizing flash embedded objects with javascript and actionscript….
[...] Read more: Resize flash dynamically with javascript and actionscript [...]
[...] from: Resize flash dynamically with javascript and actionscript Related Posts:Resize flash dynamically with javascript and actionscript The button when clicked [...]
[...] This post was mentioned on Twitter by ideasw3b, Mario A. Labastida. Mario A. Labastida said: Cambiar el tamaño de flash dinámicamente con javascript y actionscript http://bit.ly/be2G8Y [...]
[...] original here: Resize flash dynamically with javascript and actionscript Related Posts:Butterfly 3D (Canvas + JavaScript) — Workflow: Flash The top Flash, ActionScript, [...]
[...] more here: Resize flash dynamically with javascript and actionscript Related Posts:Resize flash dynamically with javascript and actionscriptFlash Developer – Flash [...]
[...] Adres URL: Resize flash dynamically with javascript and actionscript [...]
[...] Zobacz resztę artykułu: Resize flash dynamically with javascript and actionscript [...]
[...] Czytaj więcej: Resize flash dynamically with javascript and actionscript [...]
Software That Help You Monitor Network Factors Such As Capacity And Additional Critical Variables…
Im adding a trackback here, this was great!…
[...] Resize flash dynamically with javascript and actionscript [...]
[...] Resize flash dynamically with javascript and actionscript [...]
[...] Resize flash dynamically with javascript and actionscript [...]
[...] Resize flash dynamically with javascript and actionscript [...]
[...] Resize flash dynamically with javascript and actionscript [...]
[...] Resize flash dynamically with javascript and actionscript [...]