【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

どうしてもわからないのでわかる方ぜひ教えてください!!

下記サイトの様に、画面サイズが変わったら文字やロゴがセンターに移動するようにしたいのですが、どのようにしたらよいでしょうか?

http://www.rex-holdings.co.jp/

色々調べたのですが、このようになかなかなってくれません。
宜しくお願いいたします。

A 回答 (1件)

ActionScript などの前に,


その引用サンプルは,HTML の段階で Flash(SWF) が 100% 表示になっていますが,
その点はよろしいでしょうか?

Flash(SWF) が例えば 600px×400px のような固定表示では,
ウィンドウ によって Flash の大きさが変わりませんから,
ActionScript で,どうあがいても無理ですよ。

それで良いという条件で以下は回答します。

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

なるべくシンプルなもので原理だけを説明したいので,
ゼロ の状態からサンプル例を回答します。

まず,Flash で 新規ドキュメント を作成してください。
作成したら,「ファイル」→「パブリッシュ設定」で,HTML タブ を選択し,

 サイズ(D): [ムービーに合わせる  ]▼

の部分を,

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

にして「OK」をクリック。100%の設定にしておきます。


ステージ上に,適当な大きさのムービークリップを2つばかり作成してください。
縦×横=1cm×4cm くらいの本当に適当な大きさのムービークリップを2つ作成します。

そして,どちらがどちらでも良いので,
1つのムービークリップには「mc0」,
もう1つのムービークリップ「mc1」というインスタンス名を付けます。
インスタンス名 も別にこれでなくてもかまいませんが,
サンプル例として,「mc0」と「mc1」というムービークリップを用意するだけです。

そして,レイヤーを1つ追加して,ActionScript 専用レイヤーにします。
その新しいレイヤーの空白キーフレームを選択して,
次のスクリプトを書き(コピペし),
SWF と HTML をパブリッシュすればサンプルの完成です。

-----------------------------
// ステージ上のオブジェクトの拡大縮小なし
Stage.scaleMode = "noscale";
// ムービーを左上に配置
Stage.align = "TL";

// 動くスピードの設定(★可変)
var spd = 1/4;

// ☆例1:ムービークリップ「mc0」を,
// 左上から (x,y)=(20%,15%) に移動
_root.mc0.onEnterFrame = function() {
this._x += (Stage.width*20/100-this._x)*_root.spd;
this._y += (Stage.height*15/100-this._y)*_root.spd;
};

// ☆例2:ムービークリップ「mc1」を,
// 左上から (x,y)=(80%,50%) に移動
_root.mc1.onEnterFrame = function() {
this._x += (Stage.width*80/100-this._x)*_root.spd;
this._y += (Stage.height*50/100-this._y)*_root.spd;
};
------------------------------

Flash MX 以上で作成可能,Flash Player 6 以上で再生可能なスクリプトです。


> 画面サイズが変わったら文字やロゴがセンターに移動…

単にそれだけだと,スクリプトなんて要りません。
普通のFlashを作成して,100%で表示すれば良いだけです。


まず,最初のポイントは,画面サイズに合わせて移動することではなく,
画面サイズに合わせて,Flash が拡大縮小しないというところです。
それには,

 // ステージ上のオブジェクトの拡大縮小なし
 Stage.scaleMode = "noscale";

が必要になります。

参考URL↓
表示に関する情報について
 100%表示
 サンプル表示(別窓) をクリック。
http://hakuhin.hp.infoseek.co.jp/main/as/stage.h …


そして,次のポイントは,
画面サイズに合わせて,Flash が拡大縮小しないのに,
オブジェクトを動かすというところです。
これには,

 // ムービーを左上に配置
 Stage.align = "TL";

で,Flash の 表示基準を左上で固定して置いて,
Movieclip.onEnterFrame = function() { };
で,各ムービークリップを目標地点に徐々に近づけることが必要になります。


Movieclip.onEnterFrame = function() { };
の { } 内は1フレーム進む時間ごとに毎回実行されます。
フレームレートがデフォルトの 12fps だと,1秒間に約12回実行されます。

{ } 内の内容は ActionScript と言うより,ほとんど算数です。
ActionScript の部分だけ補足しておくと,
+= は加算後代入演算子で,例えば,
A += 10 は, A = A + 10 と同じ意味です。
Stage.width と Stage.height は見てそのまま,ステージの幅と高さです。


ActionScript は 1箇所につなげた方が説明しやすく,書きやすく,作成しやすいと思ったからです。
Movieclip.onEnterFrame = function() { }; をフレームに書くのではなく,
各ムービークリップに

---------------------------
onClipEvent (enterFrame) {
this._x += (Stage.width*80/100-this._x)*_root.spd;
this._y += (Stage.height*50/100-this._y)*_root.spd;
}
---------------------------

などと書いても良いと思います。

また,もっともっと動かすムービークリップが増えるようでしたら,
80 や 50 などと言う場所の数字を,配列などに別に用意しておいて,
for文 で,一気に代入しても良いかもしれません。

一応,原理とその簡単なスクリプト例を回答しました。
    • good
    • 0
この回答へのお礼

>ActionScript などの前に,
>その引用サンプルは,HTML の段階で Flash(SWF) が >100% 表示になっていますが,
>その点はよろしいでしょうか?

はい。HTMLの方とパブリッシュ設定は100%に修正してましたが、その後がわかりませんでした。

>// 動くスピードの設定(★可変)
>var spd = 1/4;

>// ☆例1:ムービークリップ「mc0」を,
>// 左上から (x,y)=(20%,15%) に移動
>_root.mc0.onEnterFrame = function() {
>this._x += (Stage.width*20/100-this._x)>*_root.spd;
>this._y += (Stage.height*15/100-this._y)>*_root.spd;
>};

「拡大縮小しない」のと「左上にあわせる」はわかっていたのですが、上記のスクリプトがわからなかったのです。

やってみたら出来ました!
本当にありがとうございます!!!!

お礼日時:2006/08/08 23:20

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


おすすめ情報