
こんにちは。よろしくお願いします。
使用しているのは、「FlashMx2004」です。
レイヤーの中にMCが10個ほどあるのですが。このどれかのボタンをクリックしたときに、10個のMCすべてが、拡大縮小されるような仕組みを作っています。
一つ一つ、拡大縮小の命令をだせば言いと思うのですが、もっと楽なやり方ってないのでしょうか?
イメージが湧きにくいかと思いますので、作成している物も、書き記そうと思います。
「地図」で。マスク処理により、左右前後に動きます。
地図内には、地域分けする為の枠があり、枠をクリックすると、クリックされた枠を中心に拡大されるような地図を作りたいです。
言葉足らずかも知れませんが、よろしくご教授ください。
No.2ベストアンサー
- 回答日時:
#1です。
ムービークリップを入れ子にするのはお試し済みとのことですが・・・
地図のムービークリップの中に枠のムービークリップを配置し、枠の各インスタンスに名前を付けます。すると、地図と枠は親子階層になります。
子である枠がクリックされた時に親である地図全体を拡大・移動する、という具合でアクションを組むと、1つ1つを変形する処理にはなりませんが、これではご希望の形になりませんでしたのでしょうか?親子になっているムービークリップは、親が拡大・移動すれば子もその変形に従って拡大・移動します。
例えば、地図のインスタンス map があるとします。map の中には、枠のインスタンス area1 ~ area10 があります。
各枠のターゲットパスは、map の中ですので map.area1 ~ map.area10 となります。これがクリックされた時に map が拡大されればいいので、スクリプトは
//枠1がクリックされた時、地図全体を2倍に拡大
_root.map.area1.onPress = function ()
{
_root.map._xscale = 200;
_root.map._yscale = 200;
};
map は map の中心点を基準に拡大されます。枠を中心に拡大されているように見せるには、各枠ごとに違う移動量を設定して、map の位置を調整する処理も必要になるかと思います。
しかしこの方法でも、結局は、全ての枠での処理をそれぞれ設定しなければなりません。
(ちなみに、onPress など MovieClip オブジェクトのイベントハンドラを使った処理の定義は、フレームアクションとして、1箇所にまとめて設定できます)
これも面倒だというのであれば、あとは計算で出すくらいしか、思い付かないのですが。
計算で出すなら、地図に枠を描いたムービークリップ1つで済みます。
1つのムービークリップを拡大しますから、先述の方法と同様に、枠ごとの位置補正用の情報が必要になります。この移動量は、予め配列で用意しておきます。
クリックされた時のマウスカーソルの座標から、クリックされたポイントがどの枠にあたるのかを計算で割り出します。枠ごとの移動量を配列で持っていますから、対応する番号の配列を見ると、どのくらい地図を移動させればいいのかが分かります。地図を拡大し、配列から拾ってきた移動量を元に表示位置を補正して出来上がりです。
これなら、確かに地図のムービークリップ1つでいいですし、スクリプトの設定も1箇所で済むのですが、計算式が絡むので、かえって分かりにくいスクリプトになる気がします。
結局は、「そんな割のいい話はない」って事なんですかね~。
ちなみに、入れ子にしたときは、一緒に拡大縮小はしてくれたんですが、肝心の「枠をクリックした時の処理」が上手くいかなかったんです。
まず、ボタン自身に名前などをつけなかったのと、ボタン自身への処理を書かなかったためでしょうね。
何度もありがとうございました。
まだまだ、上の説明を読むのも苦労する初心者ですが、がんばっていきたいと思います。
せめて、皆さんの説明がすぐに理解できるようになりたいです♪
本当にありがとうございます。
あと、幸薄い期待を胸に、もう2,3日回答をまってみますね。
No.1
- 回答日時:
for ループと eval を組み合わせてスクリプトを組んでみてはいかがでしょう。
ムービークリップのインスタンス名を、通し番号を使って付けます。ここでは仮に、clip1 ~ clip10 とします。
eval は、文字列を使ってインスタンス等にアクセスするためのアクションです。例えば、
eval( "_root.clip1" )._xscale = 200;
こうすると、_root.clip1 の _xscale プロパティを操作できます。
eval に渡す文字列には、
eval( "_root.clip" + i )._xscale = 200;
このように変数を使うことも可能ですので、これを for ループと組み合わせます。インスタンス名を通し番号で付けるのは、実はこのためです。
なお、操作したいプロパティが多数ある場合は、with アクションを併用するとスクリプトがスッキリまとまります。
for( i = 1 ; i <= 10 ; i++ )
{
// clip1 ~ clip10 を全て2倍に拡大
with( eval( "_root.clip" + i ) )
{
_xscale = 200;
_yscale = 200;
}
}
(↑このスクリプトをコピーして利用する場合は、行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります)
ちなみに、同様に for と eval を使って
for( i = 1 ; i <= 10 ; i++)
{
eval( "_root.clip" + i ).onPress = function ()
{
・・・
};
}
として、onPressイベント発生時、つまり、ムービークリップがクリックされた時に行う処理を、まとめて定義することもできます。
(ただし、各ムービークリップがクリックされた時に行う処理が全て同じ場合か、もしくはループを使って定義できるような処理に限ります)
ボタンのように使うムービークリップが多数あるようですので、よろしければこちらも合わせて利用してみてください。
この回答への補足
すみません。私の言葉足らずでしたね。
For文などでは、最終的に「一つ一つに命令をする事」になりますよね?
配列にすればいいとか。名前に通し番号をつけることは、一切やっていません。
というのも、アトで見たときに、自分で解らないプログラムは作らないよう心がけているからです。
それに、絵をとっかえひっかえ。すると大変なことになりそうで・・・
たとえば、グループ化して、それに名前を付けたりできないのか?ということを聞きたかったんです。
自分で色々やってみたのですが、MCの中にMCをいれたり、グループ化して、グループに名前を付けれないか試したのですが、うまくいきませんでした。
あとEvalは初めて聞きました。
こういうものもあるんですね~
ちょっと勉強になりました。ありがとうございます♪
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Windows 8 Route Generator の使い方 1 2023/05/03 00:36
- 画像編集・動画編集・音楽編集 Google Earth Pro 高速道路上空を一定の速度で飛ぶツアー動画の作り方は?? 1 2022/06/01 15:10
- その他(IT・Webサービス) Yahooの地図の文字サイズ、googleの地図の画面分割 1 2022/05/21 12:31
- Windows 10 Windowsのアイコンの整列が変になりました 2 2022/06/24 00:02
- マウス・キーボード キーボード設定で困っています。長文です。 2 2022/12/10 12:44
- Word(ワード) Wordで図形などの全てのオブジェクトの位置を一括で固定する方法はありますか? 1 2022/04/19 14:29
- Windows 8 動画の再生とタイトルの変更方法を教えてください。 3 2022/08/01 14:51
- 地域研究 小論文の添削 5 2022/06/01 00:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ペンによる手書きの様に
-
レイヤー内のすべてのMCのX...
-
前の質問が消えてしまいました
-
3つ以上のインスタンスの移動
-
GetModuleFileName(他のアプリ,...
-
gotoAndPlay gotoAndStopについて
-
FlashのButtonコンポーネントに...
-
ムービークリップ内に配置した...
-
Flashの中に検索窓を入れたい!
-
_widthから数値を導き出したい
-
C#で、コントロールの受け渡し...
-
Win32 API ウィンドウ
-
FLASHでのアンケートフォーム
-
代入しない文字の連結方法
-
Matrix.b Matrix.c によるMCの傾斜
-
Flashの外部ファイルについて
-
画像のズームアウト処理を行う...
-
外部ファイルから取得したデー...
-
Flashのバージョンについて
-
フレーム上から書くfunctionに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6.0で、フォームから、別のフ...
-
クリックしたインスタンスを削...
-
【VB.NET】別Formのボタンが押...
-
DataTableの件数を取得したい
-
onRollOverの使い方が分かりま...
-
flash画像の再生・ボタンによる...
-
一番深度が深いインスタンス名...
-
【ActionScript】コンボボック...
-
ラベルでの移動でテキストの受...
-
チェックボックスの制御(onCli...
-
as3 getChildByNameに変数を利...
-
フォームの生成と破棄
-
VB6.0のHideのバグ?
-
Python でシャットダウンのコマ...
-
gotoAndPlayでのインスタンス指...
-
インスタンスとポインタ
-
携帯Lite1.1用のプログラム
-
DLL(非MFC)からのDialogBox関数...
-
外部テキストが読み込めません
-
プログラミング、アーキテクチ...
おすすめ情報