dポイントプレゼントキャンペーン実施中!

ブラウザ起動時に、ウインドウサイズ一杯にFlashを表示したい

AS3です。ブラウザ起動時に、
ウインドウサイズ一杯にFlashを表示したいのですが
上手くいかずに困っています。。

IE
FireFox
Safari
Opera

上記の4ブラウザ全てに対応したいのですが、
現在私がやっている手法では、FireFoxにしか対応できておりません。

わたしの今のやり方は、
Flashサイズを縦横100%でパブリッシュして、
swfのスクリプトでは

--------------------------------------------------------

var w:Number // ブラウザ起動時の横幅
var h:Number // ブラウザ起動時の高さ

stage.addEventListener(Event.RESIZE, wr);

function wr(e:Event):void{
w = stage.stageWidth;
h = stage.stageHeight;
stage.removeEventListener(Event.RESIZE, wr);
}

--------------------------------------------------------

この様に書いています。

FireFoxでは、
Flashサイズを縦横100%でパブリッシュされていた場合、
ブラウザ起動時のウインドウサイズに一度Flashサイズがリサイズされるので
その時に自動的にEvent.RESIZEが実行されるようなので
そこで初期サイズを取得できています。

(functionで、Event.RESIZEをremoveして
 1回だけ、リサイズイベントが起きるようにして、
 そこでブラウザ起動時のウインドウサイズを取得しています。)

しかし、他のブラウザでは、
「ユーザーがウインドウをリサイズする」というアクションを起こさないと
Event.RESIZEが実行されないようですので、
ブラウザ起動時にウインドウサイズ一杯にFlashを表示できません。

何か他の方法があるのでしょうか。。?
世の中によくある、ウインドウサイズ一杯のFlashサイトは
どのようにして作られているのでしょうか。。?

どなたかご存知の方いらっしゃいましたら
どうかよろしくお願いいたします。

A 回答 (1件)

私はFlexBuilderしか持っていないので、少々勝手は違うのですが


AS3って事でヒントになるかもしれないので書いてみます。

リサイズイベントをトリガにして処理を実行できないなら
Flash側から能動的に動けるようにできないかと考え、
以下の事を考えました。

1. SWFを貼り付けるHTMLにJavaScriptでウインドウサイズを取得する関数を作る
2. Flashから1.で作った関数を呼び出して、ウインドウサイズを取得する
3. ウインドウサイズを変える


で、3の処理自体は既に出来上がっているようですので
1.と2.について検証してみました。
結果、私が使ってるブラウザではウインドウ幅を取得することが出来ました。
・IE6
・Firefox3.5
・Chorome4.0
・Lunascape6.0(Trident/Gecko/Webkit)

※Webkitエンジンでも動作したのでおそらくSafariは大丈夫かと思います。
※Operaはインストールしていないので未検証です。

--------------------
実施内容
--------------------
1. SWFを貼り付けるHTMLのヘッダに追記
--------------------
<head>
 <script language="javascript">
 <!--
  function getWidth()
  {
   if ( document.body.clientWidth ) {
    return document.body.clientWidth;
   }
   else {
    return window.innerWidth;
   }
  }
  function getHeight()
  {
   if ( document.body.clientHeight ) {
    return document.body.clientHeight;
   }
   else {
    return window.innerHeight;
   }
  }
 -->
 </script>
<head>
--------------------
2. Flash側でウインドウサイズを取得する
--------------------
package {
 import flash.display.Sprite;
 import flash.external.ExternalInterface;

 public class WindowSize extends Sprite
 {
  public function WindowSize()
  {
   if ( ExternalInterface.available )
   {
    // JavaScriptの関数を呼び出して戻り値を貰う
    var w:Number = ExternalInterface.call( "getWidth" );
    var h:Number = ExternalInterface.call( "getHeight" );
    
    trace( "ウインドウサイズ : " + w + " * " + h );
   }
  }
 }
}
    • good
    • 0
この回答へのお礼

ありがとうございます!!!!
非常に分かりやすいご回答ありがとうございます!!

おかげさまで出来ました!!
感謝しています!!

お礼日時:2010/03/13 17:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!