![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
書かれているようなことをすることは,
スクリプト的には非常にシンプルで簡単です。
しかし,
理論上は Flash の性質などを理解しないと,結構難しいことだと思います。
ですから,なぜそういうスクリプトになるのかを順に説明します。
そうでないと,イミフメイで,他での応用や作り替えがきかないと思うからです。
> 現在は
> on (release) {
> this.loadMovie("1.swf");
> }
と書かれていますが,
これを書いたのは,_root(メインのムービー) に置いた,
ボタンシンボルのインスタンス(つまりボタン)であると勝手に解釈して説明します。
=========================================
まず,書かれているスクリプトの説明です。
書かれている,
this.loadMovie("1.swf");
の,this の指す物は,ムービークリップです。
ボタン(ボタンシンボルのインスタンス)に
this.loadMovie("1.swf");
を書いた場合は,そのボタンが存在するムービークリップに 1.swf が読み込まれます。
_root(メインムービー) に置いたボタンに書いた場合は,
_root 自体がムービークリップと同じ意味になり,
そのムービークリップの一種である _root に 1.swf が読み込まれます。
ムービークリップに新たなムービーをロードすると,
そのムービーにによってムービークリップのタイムラインがすべて乗っ取られます。
したがって,書かれているように,
_root に置いたボタンに
this.loadMovie("1.swf");
を書いた場合は,_root の全てが 1.swf が乗っ取られるため,
もとのムービーは消えて, 1.swf だけが表示されるようになります。
まずこのもとのムービーが消えるという現象をどうにかしなければなりません。
これをどうにかするには,
this(_rootのこと) に読み込むのではなく,
1.swf を読み込むための,ボタンとは別のムービークリップが必要になります。
そして,ロード後に,そのボタンとは別のムービークリップを移動してやれば,
好きな場所に 1.swf などがロードできます。
=========================================
というわけで,
1.swf を読み込むムービークリップを作ってください。
ムービークリップを作る方法ですが,
まず,ボタンより下のレイヤーを追加して,
そのレイヤーのステージ上に,1~5mmくらいの小さな正方形の塗りを用意し,
その塗りを選択して,
「修正」→「シンボルに変換」で「ムービークリップシンボル」に変換します。
このとき,基準点に注意してください。
「ムービークリップシンボル」に変換するときに,
「シンボルに変換」ダイアログが出てくると思いますが,
//////////////////////////////////////////
名前(N):[ 任意の名前 ]
タイプ(T): ◎ ムービークリップ 基準点(R):□□□
○ ボタン □■□
○ グラフィック □□□
//////////////////////////////////////////
このように,基準点が,中心にチェックに入っている状態で「OK」してください。
この説明では,中心にチェックがにっている状態として説明を続けます。
ムービークリップにムービーやJPEGなどを読み込む場合,
そのムービークリップの基準点に,読み込まれる物の左上の座標が来るように読み込まれます。
上のように,必ずしも中央に基準点を持ってくる必要はありません。
基準点の位置によって,スクリプトが変わるので,
この場合,基準点が中央になっいるということを自覚してムービークリップに変換してくださいということです。
基準点などの意味がさっぱりわからない場合は,
次のURLを参考にしてください。
「インスタンスの基準点」
http://homepage3.nifty.com/ginga-b/MX/inst_refpo …
ムービークリップに変換できましたら,
そのムービークリップにインスタンス名を付けます。
この説明では, myMC というインスタンス名を付けたことにしておきます。
=========================================
そして,
_root に置いた,ボタンにも,インスタンス名を付けてください。
この説明では, myButton というインスタンス名を付けことにしておきます。
そしてそのボタンに,
-----------------------------------
on (release) {
_root.myMC.loadMovie("1.swf");
// ↓ボタンを消したい場合のみに書く
_root.myButton._visible = false;
}
-----------------------------------
と書けば(コピペすれば),「myMC」に「1.swf」が読み込まれます。
これで,半分完成です。
まだ,ボタンの中央に「1.swf」の中央を移動させるという,ご質問の本題が残っています。
=========================================
あとは,
「myMC」の座標を指定してやれば,
そこに表示されている物が移動するのですが,
ここに大きな障壁があります。
もし,ロードするものが,「1.jpg」など,JPEG であれば,
四角くて形や大きさが変わらないので,簡単です。
しかし,相手が SWF です。
SWF は基本的にステージのサイズと,その中にある物のサイズが必ずしも等しくありません。
例えば「1.swf」のステージ外に何か物が置いてあれば,
その物全てが SWF(ムービークリップmyMC) の大きさということになります。
逆に,「1.swf」ステージの大きさは 500×400px であったとしても,
その 500×400px の中に 50×60px の物が1つしか置いていなければ,
SWF (ムービークリップmyMC) の大きさは 50×60px ということになってしまいます。
つまり,中央の座標が非常に求めにくいのです。
というわけで,「1.swf」の改良です。
「1.swf」を作ったドキュメント(FLA)を開いて,
新規レイヤーを追加し,
そのレイヤーにまたしても,小さな塗りのムービークリップを作成してください。
必ず最初のフレーム1には存在させるようにしてください。
このムービークリップも基準点は中心にしたとしておきます。
そしてムービークリップにインスタンス名をつけてください。
この説明では, datum (基準の意味)というインスタンス名を付けことにしておきます。
この「datum」を選択して,右側の整列パネルで,
(表示されていなければ,「ウィンドウ」→「整列」で表示させてください。)
「ステージを基準」をクリックした状態にしておいて,
「中央揃え(水平方向)」ボタン(串みたいなボタン),「中央揃え(垂直方向)」ボタン(串が横向きになったようなボタン)をクリックして,ステージ中央に配置します。
そして,「1.swf」をパブリッシュします。
=========================================
再び,元の読み込む側の FLA ファイルに戻ります。
最初に作った,「myMC」を選択して,
その「myMC」に次のようなスクリプトを書けば(コピペすれば)ほぼ完成です。
---------------------------------------
onClipEvent (load) {
this._x = _root.myButton._x-this.datum._x;
this._y = _root.myButton._y-this.datum._y;
}
---------------------------------------
意味は,
このムービークリップがロードされたとき,
このムービークリップを,「myButton」の座標から,「datum」の座標分,左上に移動。
ということです。
==※==※==※==※==※==※==※==※==※==※==※==
という感じで,
Flash というものの性質を知っていれば,
すごく簡単なことで,スクリプト自体もものすごく簡単でシンプルです。
ボタンとムービークリップのスクリプトを合計しても,ほんの8行くらい?で,簡単な算数が入っているだけです。
しかし,
Flash というものの性質を理解されていない場合は,
スクリプト自体は簡単でも,イミフメイで難解なスクリプトだと思われると思うので,
長々と説明させていただきました。
上のつたない説明の意味が本当にわかると,
「1.swf」のステージのサイズさえ最初にわかっていれば,
「datum」 なんて用意せずに,
---------------------------------------
onClipEvent (load) {
this._x = _root.myButton._x-ムービーの幅/2;
this._y = _root.myButton._y-ムービーの高さ/2;
}
---------------------------------------
という定数で行けることがわかると思います。
例えば,
「1.swf」のステージサイズが 横×高さ=400×300px だとすると,
---------------------------------------
onClipEvent (load) {
this._x = _root.myButton._x-200;
this._y = _root.myButton._y-150;
}
---------------------------------------
ということになります。
しかし,「1.swf」という名前から考えて,
「2.swf」,「3.swf」… なども存在すると考えたため,
どの SWF が読み込まれても良いように,上のような少し凝った仕組みにしました。
なお,
「myMC」と「datum」の最初に描いた四角い塗りは,不要ですね。
各ムービークリップの編集で,最初に描いた四角い塗りを削除するか,透明な塗りに塗り替えてください。
作成するときには見えた方が良いので,しばらく残しておいても良いですが,
実際のアップでは見えても目障りなだけですから消した方が良いです。
=============================================
というわけで,実際は自分で考えてすべきことで,
その考え方によって,スクリプトはコロコロ変わります。
> いろいろなサイトを見たものの
> 適切な答えがなかったので質問します
探してもサンプルなどはないと思いますよ。
以上のように基準点やムービーの作成まで長々と説明せねばなりませんから,
私が Flash 解説のサンプルを公開するサイトの作成者であったとしたら,
説明が手間なだけで,説明に手間をかけた割には,格好いいものができるわけではないので,
絶対にサンプルとして公開しないでしょうね。
もっと,スクリプト的に格好良く(高度なスクリプトで),説明が簡単で(スクリプトを公開するだけで使える),もっとすごい動きをするものを公開するでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- 画像編集・動画編集・音楽編集 Corel VideoStudio Pro X8 で、SWFをmp4に変換する方法 1 2022/05/06 22:19
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- USBメモリー・SDカード・フラッシュメモリー PDF文書をCD-Rで配るときの注意事項 4 2022/03/31 16:49
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- Facebook Facebookの投稿欄が変に? 投稿できない! 1 2023/04/12 14:45
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- 政治 ロシアは対空ミサイルを地上攻撃に流用しています。日本もそうするべきですよね? 2 2023/02/23 21:18
- ビデオカメラ BDの動画より音楽のみをpcへ取り込む方法 5 2022/09/18 13:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Flashでカラーシュミレーション...
-
外部SWF読み込み後の座標指定
-
Flashで文字の表示を
-
ボタンから一つ上の階層のムー...
-
adobe frash CS5.5について
-
PHPでボタンをクリックすると変...
-
arduino プログラムについて
-
Xcodeのアプリケーション開発に...
-
Flash8 リンクの挿入の仕方
-
スクロールバーとボタンで長いM...
-
SEのオンオフ
-
flashのボタンは、ムービークリ...
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
VBAで改行の入ったデータの正規...
-
POIでのテキストボックス作成に...
-
IP Address 入力フォームについて
-
変数に256文字以上のテキストを...
-
テキストボックスの中身をリセ...
-
多分探索木の高さを測定する関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
arduino プログラムについて
-
マウスオーバーで色が薄くなる...
-
FLASHで画面の最大化と100%表示...
-
FlashからPHPへの変数の渡し方...
-
ボタンと連動したフェードイン...
-
縦のメニューバー作成方法で困...
-
[Start]を押すと始まるFlas...
-
×ボタンを無効化したいのですが...
-
虫眼鏡拡大ムービーの中にボタ...
-
attachMovie後のプロパティ参照
-
ムービークリップの中のボタン...
-
ボタンのカウント数でムービー...
-
2つのムービークリップをスク...
-
ボタンの深度で
-
ボタンをクリックするとフェー...
-
メニューの単語が落ちてきてバ...
-
ムービークリップの中にボタン...
-
メニューボタンを押されたまま...
-
ボタンアクション flash アク...
-
記述の無いアクションが動く??
おすすめ情報