Flash表示領域をリサイズする
HTML内でのswfの表示領域サイズをswfをリロードしないで変更(トリミング)する方法を模索していて、ようやく見つけて理解できたのでここにメモしておきます。
- swfの表示コード(HTMLコード)を縦横共に100%にし、'scale'パラメータを'noscale'にします。
- swfの表示サイズはそれを囲むdivのサイズで決めます。
- javascriptで動かすサイズはdivのサイズ(CSSを使うと便利)。
- swf内部からはExternalInterfaceでjavascriptを操作する。
以上の4点を理解できたら全く問題なく操作できます。
テスト実装してみたものを下記リンクにあげておきます。
右側に表示されている男の子をクリックすると、サイズを変更します。
具体的なコード
swfの表示部分をくくるdivタグは以下のように定義しています。
<div id='main_swf' style='width:550;height:200;position:relative'> <!-- ここにswfを表示するタグ --> </div>
swfのサイズを変更しているjavascriptは以下のようになっています。
function changeMainSwfHeight( swfname, height ) { divSwf = document.getElementById( swfname ); if( divSwf ){ divSwf.style.height = height; } else{ alert("There is no <div id='" + swfname + "' />."); } }
これをActionScript側からは以下のように読んでいるわけです。
h = 300; ExternalInterface.call( "changeMainSwfHeight" , "main_swf", h );