查看完整版本: 通过JS控制flash场景随内容而增减的方法

和健 2008-1-13 22:25

通过JS控制flash场景随内容而增减的方法

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