電子書籍の厳選無料作品が豊富!

こちらを見ていただきたいのですが
http://www.septime.net/septime_creation_haut_deb …
このサイトのフラッシュは%の指定により、常にブラウザ内に100%の表示をしています。しかし、真ん中の浮いている都市のだけは、画面を拡大縮小しても大きさが変わっていないようなのですが、一部分だけを固定表示にする事が出来るのでしょうか?

このサイトのようにブラウザ内に100%表示して、なおかつ大きさが変わらないオブジェを配置したいのですが、どうやっているのかさっぱりわかりません。

初めは背景を画像で作成し、HTMLで配置し、その上に透過フラッシュを配置しているかと思いましたが、それでも大きさが拡大縮小してしまう事には変わりありませんよね?しかも、この方法はMacのOS9だと透過しなかったと思います。

ご存知の方どうかよろしくお願いします。

A 回答 (1件)

まず,



>> 一部分だけを固定表示にする事が出来るのでしょうか?

と書かれている部分ですが,逆に考えます。
全部が固定表示だと考えれば簡単で,それにヒントもそこら中にあります。
全部が固定表示だと,メインムービー(_root)の フレーム1 に

----------------------------
//ムービーの拡大・縮小なし
Stage.scaleMode = "noScale";
----------------------------

これだけです。
例えば,新規ドキュメントを作成して,
ステージの中央に「赤い丸」でも書いてください。
「太陽」だということにしておきます。
その「太陽」をムービークリップシンボルに変換し(変換しなくても良いですが),
メインムービーのタイムラインに

Stage.scaleMode = "noScale";

と書いてパブリッシュ。
「太陽」は画面中央に固定されたままになります。

その他詳細は次のURLを参考にしてみてください。

Stage.scaleMode
「Stage.scaleModeプロパティ」
http://www.fumiononaka.com/TechNotes/Flash/FN040 …
その他,
「質問:htmlからswfファイルへのリンクについて」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1298908
 ↑教えて!goo  ↓OKWave (同じです)
http://okwave.jp/kotaeru.php3?q=1298908

ひょっとしたら,したい内容というのは,以上で解決かもしれません。
解決かもしれませんが,少し難しい?のはステージのサイズに合わせて,「太陽」以外を拡大縮小させる方だと思います。
以下は,ステージの大きさに合わせて,他のオブジェクトを拡大縮小させる方法です。


========================================

上で描いた「太陽」の下に緑色の塗りで「山」を描いてみてください。
ステージ上を図示すると下のような感じでしょうか。

 □□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□□□□□□□□□□□□
 □□□□□□□□□■■□□□□□□□□□
 □□□□□□□□■■■■□□□□□□□□
 □□□□□□□□■■■■□□□□□□□□
 □□□□□□□□□■■□□□□□□□□□
 □□□□□□□□□□□□□□■■□□□□
 □□□□■■□□□□□□□■■■■□□□
 □□□■■■■□□□□□■■■■■■□□
 □■■■■■■■■■■■■■■■■■■□
 □■■■■■■■■■■■■■■■■■■■
 ■■■■■■■■■■■■■■■■■■■■

そして描いた「山」全体を選択して,ムービークリップシンボルに変換してください。
そして,そのムービークリップを選択し,下のプロパティパネルで何かインスタンス名を付けてください。
ここでは, yama というインスタンス名を付けたとしておきます。

そして,メインムービー(_root)のタイムラインの フレーム1 に以下のようなスクリプトを書いてみてください。
「山」の大きさが画面の大きさによって変わると思います。

-------------------------------------------
//ムービーの拡大・縮小なし
Stage.scaleMode = "noScale";

//山の縦横比を算出
yama_h = _root.yama._height/_root.yama._width;

//リスナーオブジェクトの作成
myListener = new Object();

//ステージの横幅によって山の大きさを変える
myListener.onResize = function() {
_root.yama._width = Stage.width;
_root.yama._height = yama_h*_root.yama._width;
};

//上のメソッドを呼び出す
Stage.addListener(myListener);
-------------------------------------------

画面に合わせて大きさを変更したい部分がもっとある場合は,function の中などのスクリプトをオブジェクトの数だけ付け足して行っても良いですし,
yama の中にさらにムービークリップを入れて行けば,上のままのスクリプトで良くなります。

少し形が違いますが,こちらのURLが参考になるかもしれません。

「Stage.onResizeリスナーイベント」
http://www.fumiononaka.com/TechNotes/Flash/FN030 …


上のスクリプトは,画面の大きさを監視していて,画面の大きさが変わったときに,オブジェクトの大きさを変えるもので,少々理解しにくいかもしれません。
もし,使いにくいと思われたら,次のようなスクリプトでもかまわないと思います。

-------------------------------------------
//ムービーの拡大・縮小なし
Stage.scaleMode = "noScale";

//山の縦横比を算出
yama_h = _root.yama._height/_root.yama._width;

//1フレーム進む時間に1回以下を実行
this.onEnterFrame = function() {
_root.yama._width = Stage.width;
_root.yama._height = yama_h*_root.yama._width;
};
-------------------------------------------


これで行くと,ずっと同じスクリプトが実行され続けるので,余分なCPUを使い続けることになりますが,
数個のオブジェクトでは,さほど問題にならないと思います。
また,メインムービーのフレームのスクリプトではなく,個々のムービークリップに書いても良いと思います。
    • good
    • 0
この回答へのお礼

参考になりました。お礼が遅れて済みません。
どうもありがとうございました。

お礼日時:2006/01/11 13:47

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