こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

拡大縮小するFLASHの同じ場所に表示するには?

ステージがブラウザの大きさによって拡大縮小するFLASHを作成しました。(width=100% height=100%という風に)

その中に表示しているオブジェクトなのですが
ブラウザの大きさを縦、横と伸ばした時、
特に横に縮めた時、画面の外に消えてしまいます。

そうではなく、HTMLのテーブルの%表示のように常に端っこから同じ割合の位置に表示をさせるにはどうしたらよいのでしょうか?
相対位置指定みたいなものがあるのでしょうか?

投稿日時 - 2006-01-30 12:34:00

QNo.1931270

暇なときに回答ください

質問者が選んだベストアンサー

今ひとつわからないご質問です。

書かれているような現象は,
あえてそうするように設定しないと,そうならない現象だと思います。
普通に,何も考えず,
[パブリッシュの設定] で,[HTML] タブを選択して,

 サイズ[ パーセント         ▼]
 幅(W)     高さ(E)
 [100   ] × [100   ] パーセント

にすれば,他はデフォルトのままで,「すべて表示」の100%になります。
ウィンドウの高さや幅によって 「画面の外に消えるもの」 はありません。
80 × 80 にすると,「すべて表示」の80パーセントになります。
これ以外をさわると変になります。

何も考えなくて良いところをあえて説明をすると,
余計にややこしくなると思うのですが,
ネット上のサンプルや解説をお借りして,一応説明します。


Flash の見え具合を操作する方法は2通りあります。
「スクリプトで制御する」方法と「HTMLのタグで制御する」方法です。

まず,「スクリプトで制御する」方法です。
(スクリプトではHTML上でのパーセンテージまではコントロールできません。)

「Flashゲーム講座&ASサンプル集【表示に関する情報について】」
http://hakuhin.hp.infoseek.co.jp/main/as/stage.html#STAGE_01
このページに,

「100%表示」
「すべて表示」
「外が見えないように拡大」
「上下左右にフィット」

という項目が並んでいますが,書かれているような状態は,
「外が見えないように拡大」 のパターンではないでしょうか。

Flash の タイムラインの フレーム1 などにわざわざ
Stage.scaleMode = "noBorder";
と書くと,3番目の 「外が見えないように拡大」 のような状態になります。
つまり
>> 横に縮めた時、画面の外に消えてしまいます。
という現象が起きます。
何も書かなければ,2番目の 「すべて表示」 のパターンになります。
こういった類のスクリプトは書かなくて良いと思います。
また,もし書かれるのであれば上記ページのサンプルなどを参考に検討してみてください。


次に「HTMLのタグで制御する」方法です。

「Stage.scaleModeプロパティ - Flash テクニカルノート」
http://www.fumiononaka.com/TechNotes/Flash/FN0408002.html
ここにも書いていますが,
HTMLのタグで指定ではscaleModeプロパティはデフォルトの "showAll" になっています。
だから何も考えなければ 「すべて表示」 になります。

このページの図にあるように,
[パブリッシュの設定] で,[HTML] タブを選択して,

 伸縮(S)[ すべて表示         ▼]

にすれば良いと思います。
普通はしなくても,デフォルトでそうなっています。
他の表示方法をさせたい場合は上記ページの説明を参考に検討してみてください。


ちなみに,
Flash 8 で HTML をパブリッシュしたときのタグは次のようになります。
「100%」 で 「すべて表示」 の場合のタグです。
もし Flash をお持ちでなければ参考にしてみてください(お持ちだとは思いますが)。

---------------------------------------
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>○○</title>
</head>
<body bgcolor="#ffffff">
<!--ムービーで使用されている URL-->
<!--ムービーで使用されているテキスト-->
<!-- saved from url=(0013)about:internet -->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%" id="○○" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="○○.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="○○.swf" quality="high" bgcolor="#ffffff" width="100%" height="100%" name="○○" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>
---------------------------------------

これで,
ステージ外の余計な物が見えてしまって困ることはあっても,
ステージ上の何かが見えなくなることはありません。

投稿日時 - 2006-01-31 20:16:07

お礼

詳細な解説をどうもありがとうございました。
リンク先の情報も改めて参考になりました。

私が採用しているのはお察しの通り「外が見えないように拡大」ですね。これはスクリプトではなく、パブリッシュ時に設定しています。

説明が足りなかったと思いますが、問題なのは「すべて表示」にしてしまうと、背景が見えてしまうい「上下左右にフィット」だと、比率が壊れるという事なのです。

なので、縦横の比率はそのままで位置のバランスだけ帰られないかと考えました。背景に関しては上から下にグラデーションしているだけなので、比率が変わったりトリミングされても問題ないのですけどね。

紹介していただいたリンク先
http://hakuhin.hp.infoseek.co.jp/main/as/stage.html#STAGE_01
にステージの大きさを得るスクリプトが載っていたので、表示させたいオブジェクトをそれを元に計算して画面の端からの比率をだしてやればうまく行く気がします。

試行錯誤してみます。どうもありがとうございます!

投稿日時 - 2006-02-03 11:43:38

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問