メイン とにかくFLASH【FLASHに関して全般】
100個のムービークリップに同じスクリプトを記述したい場合 | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| hirahira | Åê¹ÆNo.10965 投稿日時: 2004-9-19 17:33 |
新米 ![]() ![]() 居住地: 兵庫 投稿: 4
使用環境:
FLASHMX WinXP ![]() |
100個のムービークリップに同じスクリプトを記述したい場合 こんにちは。いきなり質問ですがよろしくお願いします。
例えばステージに木のインスタンスを100本配置するとして、その木一本一本すべてのクリップアクションに同じスクリプトを記述したい場合、 1.木一本一本すべてのクリップアクションにスクリプトを記述する 2.シンボルにスクリプトを記述したら配置したインスタンスすべてがスクリプトをもっている、というような他の何かいい方法 1.のしかただとすごく大変なので、2.の他の何かいい方法を探しているのですが、そんな方法はあるのでしょうか? |
| 旭日ゆうほ | Åê¹ÆNo.10968 投稿日時: 2004-9-19 23:00 |
Bak@Fla名人 ![]() ![]() 居住地: 心は岡山 投稿: 91
使用環境:
Windows Vista Home Premium Flash MX2004 v7.2Flex2 SDK Flex3 SDK FlashDevelop3.0.0 Beta7 |
Re: 100個のムービークリップに同じスクリプトを記述したい場合 こんにちは。
処理によっては「2の何か他の方法」は可能です。 木のムービークリップに、極端な例ですが、 のような処理を書いて、 さらにそのスクリプトを書いた木のムービークリップをシンボルに変換すれば、 配置するだけで書いた処理をしてくれると思います。 引用:
|
| capricorn | Åê¹ÆNo.10970 投稿日時: 2004-9-19 23:42 |
新米 ![]() ![]() 居住地: 投稿: 12
使用環境:
windows2000,FLASH MX2004, |
Re: 100個のムービークリップに同じスクリプトを記述したい場合 こんにちは、hirahiraさん。
2の方法に関して、私は以下の様な手を使っています。 もっとスマートな方法がある様な気がしますが。。。 1. 木のMC(MovieClip)を用意します。 2.木のMCをのせるための受け皿MCを用意します。 3.受け皿MCに木のMCを貼付けて、その木のインスタンスにスクリプトを記述します。 4.受け皿インスタンスをステージ上に必要な数だけ生成または貼付けます。 木のインスタンスは受け皿のインスタンス上にあるので動きなど気をつけなければならない点や、rootからのパスが長くなったりするなどあまり良い方法ではないかもしれませんがこれで大抵の動作はできると思います。 AS2.0ではもうちょっときれいにかけるんだろうか。。。 |
| 森 巧尚 | Åê¹ÆNo.10972 投稿日時: 2004-9-20 0:38 |
モデレータ ![]() ![]() 居住地: 宝塚 投稿: 650
使用環境:
.5/ CS4/Safari3 XP+2000/ /IE6 |
Re: 100個のムービークリップに同じスクリプトを記述したい場合 いろんな方法がありますね。まず、
の方法の応用ですが、 【先にスクリプトを書いておく】 という方法がありますね。さきにムービークリップアクションを 次に、旭日ゆうほさんやhirahiraさんの言われるように【ムービークリップをまるごと「受け皿」のムービークリップの中にいれる】という方法がありますね。階層が1つ深くなりますが、それに注意しさえすれば考え方はわかりやすいんじゃないでしょうか。増やす場合もライブラリからドラッグ&ドロップでできます。 それから【ムービークリップの中にイベントハンドラメソッドで書く】という方法があります。ムービークリップの上にonClipEventと書くのではなく、ムービークリップの中の1フレーム目のフレームアクションに また【ムービークリップの外からイベントハンドラメソッドで書く】という方法もあります。ムービークリップに「mc_1」「mc_2」「mc_3」などと通しのインスタンス名を付けておいて、メインタイムラインの1フレーム目のフレームアクションに そこで【ムービークリップを複製しながらイベントハンドラメソッドで書く】という方法もあります。1つだけ「mc_0」というムービークリップを作り、これはダミーなので画面の外などに配置します。そして、メインのタイムラインの1フレーム目に 方法はいろいろあります。使いやすさと自分の理解の度合いとのバランスをとりながら使うのが一番いいと思いますよ。
|
| Duke15 | Åê¹ÆNo.10979 投稿日時: 2004-9-20 8:59 |
常連 ![]() ![]() 居住地: 埼玉 投稿: 196
使用環境:
XPpro,2Kpro, MX2004prov7.2 FlashPro8 Flash9Preview α Player8r24 Player9.0.16 Player7r63 Firefox1.5.0.5 IE6,NB8.1en |
Re: 100個のムービークリップに同じスクリプトを記述したい場合 Tohgohです。
例えば、100個を全てアルファ値20にする場合として。 こういう方法もあります。 100個を置くベースMCを作り、その1フレーム目に for (var name in this) { this[name]._alpha = 20; } あとは、そのベース上に100個のMCを置けばいいだけ。 では。 引用:
|
| 野中文雄 | Åê¹ÆNo.10982 投稿日時: 2004-9-20 10:29 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 100個のムービークリップに同じスクリプトを記述したい場合 目的として、大きくふたつ考えられます。
[1]ひとつは、あるフレームに、スクリプトを設定したインスタンスが100個ほしいという場合です。 このときは、オーサリングあるいはスクリプトで、ひとつのインスタンスを必要な数だけ複製することが考えられます。森さんのご紹介された、最初と最後の方法がそれです。4番目の、インスタンスは予め配置して、スクリプトをスクリプトで設定するというのは、その中間の考え方でしょう。 [2]もうひとつは、シンボルとスクリプトを一体にして、[ライブラリ]に登録したい場合です。複数の異なった場所(フレームあるいはムービー)でシンボルを使い回したとき、スクリプトが設定された状態で使用したいということです。 このとき、まずフレームに記述したスクリプトは、シンボルとともに[ライブラリ]に登録されることが基本です。ところが、Flash 5では、フレームアクションにイベントハンドラを記述する方法がありませんでした。そこで、旭日ゆうほさんやcapricornさんがご紹介された、インスタンスを空のシンボルで包む(内包する)という方法が使われました。 MXでは、イベントハンドラメソッドが実装されましたので、これを利用されるのが便利だと思われます(森さんの3番目の方法)。 [3]ただ、イベントハンドラメソッドでも、異なったシンボルに同じスクリプトを設定したい場合には、スクリプトをコピーするしかありません。 このとき、MXではFlash 5の手法とイベントハンドラメソッドを、組合わせて対応することが考えられます。つまり、空のMovieClipシンボルのフレームアクションとして、_parentをターゲットに必要なスクリプトを記述します。 この空のMovieClipインスタンスを、スクリプトの設定が必要な他のMovieClipシンボルに放込めば、空MovieClipのフレームアクションはそれらのシンボルに共通のスクリプトとして設定できます。 Flash MX 2004のActionScript 2.0では、スクリプトをクラス定義として、外部ActionScriptファイルに記述できます。すると、シンボルのプロパティにActionScript 2.0クラスの指定をするだけで、複数のシンボルに同じActionScript 2.0クラスを設定することが可能です。 |
| hirahira | Åê¹ÆNo.10986 投稿日時: 2004-9-20 21:22 |
新米 ![]() ![]() 居住地: 兵庫 投稿: 4
使用環境:
FLASHMX WinXP ![]() |
ありがとうございます!! 旭日ゆうほさん、capricornさん、森さん、東郷さん、野中さん、わかりやすい解説ありがとうございました。
全部試してみました。こんなにいろいろな方法があるんですね。 私の理想は野中さんが書かれていた目的の”[2]シンボルとスクリプトを一体にして、[ライブラリ]に登録したい場合”だったので、森さんの3番目の方法が野中さんのおっしゃる通り使いよさそうです。 とっても勉強になりました。みなさんありがとうございました |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン





Flash MX2004 v7.2

.5/
CS4/Safari3
/IE6





