通过JS控制flash场景随内容而增减的方法
类别: Flash教程
本教程摘操自《Flash MX 2004 ActionScript 2.0 与RIA应用程序开发》
//---------------------------------------------------
在过去,Flash是无法做到随内容的增减而缩放场景的,按在Flash 6以后,利用Stage的属性控制Flash影片的固定比例(Stage.scaleMode = "noScale";)和靠左上角(Stage.align="TL";),整个影片发布时是百分比大小,它根据包围着它的table调节;Table大小都是百分比,Table是根据它所处的Layer(DIV)大小调节,因此最后要控制Layer大小-->Table的大小-->改变Flash 影片的大小。每次Flash要改变大小时,就利用getURL调用html中的javascript函数,那个javascript函数就改变layer的大小,原理就是这样简单。
//---------------------------------------------------
HTML的例子如下:
//---------------------------------------------------------
Flash中加如代码:
//此为实例原文件,大家下载研究吧。点击这里下载源文件
//---------------------------------------------------
在过去,Flash是无法做到随内容的增减而缩放场景的,按在Flash 6以后,利用Stage的属性控制Flash影片的固定比例(Stage.scaleMode = "noScale";)和靠左上角(Stage.align="TL";),整个影片发布时是百分比大小,它根据包围着它的table调节;Table大小都是百分比,Table是根据它所处的Layer(DIV)大小调节,因此最后要控制Layer大小-->Table的大小-->改变Flash 影片的大小。每次Flash要改变大小时,就利用getURL调用html中的javascript函数,那个javascript函数就改变layer的大小,原理就是这样简单。
//---------------------------------------------------
HTML的例子如下:
<html>
<head>
<title>Flash Resize</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
function newSize(datoX,datoY) {
if(document.all && !document.getElementById) {
document.all[’miFlash’].style.pixelWidth = datoX;
document.all[’miFlash’].style.pixelHeight = datoY;
}else{
document.getElementById(’miFlash’).style.width = datoX;
document.getElementById(’miFlash’).style.height = datoY;
}
}
//-->
</script>
<style type="text/css">
<!--
td {
font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>
<body bgcolor="#ffffff" leftmargin="0" topmargin="0" leftmargin="0" rightmargin="0" onLoad="javascript :newSize(1,1);">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr bgcolor="#eeeeee">
<td>This is HTML</td>
</tr>
<tr>
<td> <div id="miFlash" style="position:relative; width:1px; height:1px; z-index:1">
<table height="100%" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="flashResize" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="flashResize.swf" />
<param name="loop" value="false" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="scale" value="noscale" />
<param name="salign" value="lt" />
<param name="bgcolor" value="#ffffff" />
<embed src="flashResize.swf" loop="false" menu="false" quality="high" scale="noscale" salign="lt" bgcolor="#ffffff" width="100%" height="100%" name="flashResize" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object> </td>
</tr>
</table>
</div> </td>
</tr>
<tr bgcolor="#eeeeee">
<td>This is HTML</td>
</tr>
</table>
</body></html>
Flash大小是100%,固定比例和靠左上角,Layer的大小默认是1pix*1pix,因此Flash一开始要调用newSize();将Layer大小改为目前的Flash大小,否则就看不到flash。<head>
<title>Flash Resize</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
function newSize(datoX,datoY) {
if(document.all && !document.getElementById) {
document.all[’miFlash’].style.pixelWidth = datoX;
document.all[’miFlash’].style.pixelHeight = datoY;
}else{
document.getElementById(’miFlash’).style.width = datoX;
document.getElementById(’miFlash’).style.height = datoY;
}
}
//-->
</script>
<style type="text/css">
<!--
td {
font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>
<body bgcolor="#ffffff" leftmargin="0" topmargin="0" leftmargin="0" rightmargin="0" onLoad="javascript :newSize(1,1);">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr bgcolor="#eeeeee">
<td>This is HTML</td>
</tr>
<tr>
<td> <div id="miFlash" style="position:relative; width:1px; height:1px; z-index:1">
<table height="100%" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="flashResize" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="flashResize.swf" />
<param name="loop" value="false" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="scale" value="noscale" />
<param name="salign" value="lt" />
<param name="bgcolor" value="#ffffff" />
<embed src="flashResize.swf" loop="false" menu="false" quality="high" scale="noscale" salign="lt" bgcolor="#ffffff" width="100%" height="100%" name="flashResize" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object> </td>
</tr>
</table>
</div> </td>
</tr>
<tr bgcolor="#eeeeee">
<td>This is HTML</td>
</tr>
</table>
</body></html>
//---------------------------------------------------------
Flash中加如代码:
function setFlashSize(w:Number, h:Number):Void {
getURL("javascript :newSize("+w+", "+h+")");
}
以后只要有任何影片大小改变,就在调用setFlashSize()-->getURL-->javascript :newSize();getURL("javascript :newSize("+w+", "+h+")");
}
//此为实例原文件,大家下载研究吧。点击这里下载源文件
- 上一篇: 基础教程:给按钮加动作的方法
- 下一篇: 触鼠感应的loadMoive框框缩放教程
-= 资 源 教 程 =-
文 章 搜 索