AS初心者で、基礎的な部分を勉強しています。
それで、ムービークリップに次のようなプログラムを書いていて、短縮出来ないものかと思い、こちらで相談させていただきました。
直接回答を頂くのがありがたいのですが、この様な事に触れているサイト、書籍、などの情報も大変助かります。
//プログラム
on(rollOver){
this.gotoAndStop(2);
}
on(press){
this.gotoAndStop(3);
}
on(release){
this.gotoAndStop(2);
}
on(rollOut){
this.gotoAndStop(1);
}
on(dragOut){
this.gotoAndStop(1);
}
No.2ベストアンサー
- 回答日時:
#1です。
すみません,見落としていた行がありました。
this.gotoAndStop(2);
は 2回 登場するのですね。
その他,細かい点も合わせて再び書き直します。
ほとんど変わりませんが,ややこしいので,#1の回答は無視してください。
///////////////////////////////////////////////////
on○○ するムービークリップが1つの場合,
ほとんど簡略不可能です。
せいぜいここまでです↓。
-------------------------------------
//プログラム
on (release, rollOver) {
this.gotoAndStop(2);
}
on (press) {
this.gotoAndStop(3);
}
on (rollOut, dragOut) {
this.gotoAndStop(1);
}
-------------------------------------
onイベントハンドラの () 内には複数のイベントのパラメータを「,」で区切って記入可能です。
on○○ するムービークリップが多数ある場合であるのなら,もっと簡略化できます。
手始めとして,
その,on○○ を書いたムービークリップのスクリプトを全て削除します。
そして,
on○○ を書いたムービークリップをダブルクリックして,
そのムービークリップ内の編集に入り,
フレーム1 に次のように書きます(場合によっては書き加えます)。
-------------------------------------
//プログラム
this.onRollOver = function() {
this.gotoAndStop(2);
};
this.onPress = function() {
this.gotoAndStop(3);
};
this.onRollOut = function() {
this.gotoAndStop(1);
};
this.onRelease = this.onRollOver;
this.onDragOut = this.onRollOut;
-------------------------------------
これは onイベントハンドラ ではなく,onイベントハンドラメソッドです。
一見,ぜんぜん簡略化されていませんね。
むしろこの回答で最初に書いたスクリプトの方が簡略化されています。
しかし,こちらを使うと,ムービークリップが "複数ある場合に限って" 簡略化できます。
===================
上で書いた,ムービークリップ内フレーム1の onイベントハンドラメソッド を全て消します。
そして,ドキュメントの編集でメインムービー(_root)の編集に戻ります。
そして,
ステージ上にある,最初に on○○ を書いたムービークリップをコピペでたくさん増やします。
仮にコピペを 9 回して, ムービークリップを 10個 にしたとしておきますか。
ステージ上に 10個あるムービークリップ にそれぞれ違ったンスタンス名を付けます。
インスタンス名は半角英字(アルファベット)から始まっていて全て半角英数字であれば何でも良いのですが,
簡略化する場合,半角英字+半角連番数字 の方が良いです。
この説明の場合は,
「my_mc0」~「my_mc9」までのインスタンス名を付けたとしておきます。
そして,
_root の 「my_mc0」~「my_mc9」までのムービークリップが存在する フレーム のキーフレームに,
次のように書きます。
-------------------------------------
//プログラム
for (i=0; i<=9; i++) {
this["my_mc"+i].onRollOver = function() {
this.gotoAndStop(2);
};
this["my_mc"+i].onPress = function() {
this.gotoAndStop(3);
};
this["my_mc"+i].onRollOut = function() {
this.gotoAndStop(1);
};
this["my_mc"+i].onRelease = this["my_mc"+i].onRollOver;
this["my_mc"+i].onDragOut = this["my_mc"+i].onRollOut;
}
-------------------------------------
こうすることによって,やっと簡略化と呼べるように思います。
「my_mc0」~「my_mc999」まで,1000個のムービークリップがあったとしても,
for (i=0; i<=9; i++) {
を
for (i=0; i<=999; i++) {
に書き替えれば良いだけです。
インスタンス名の後に付ける番号も 0 からではなく,1 からでもかまいません。
1 からでもかまいませが,
インスタンス名を 1 ではなく 0 から始めている理由は...,
言葉や理屈ではなかなか説明できませんね。
色々やっていると 0 から始める理由が体感でわかってきます。
配列変数などを利用した場合,
その要素番号は 0 から始まるとか。
曜日や月の番号も 0 から始まるとか,
様々なものが 0 番から始まるので,
インスタンス名 や 変数名 のみの連番を 1 から始めると,
そこだけ仲間はずれになって,いろいろ厄介なことになるからです。
(頭の中がゴチャゴチャになって,人間の頭の中の方が簡略化されなくなるためです。)
複数のイベントを書けること、大変参考になりました!
また、for文による多数のMCの操作、今後に生かしていきたいと思います。
ありがとうございました!
No.1
- 回答日時:
on○○ するムービークリップが1つの場合,
ほとんど簡略不可能です。
せいぜいここまでです↓。
-------------------------------------
//プログラム
on (rollOver) {
this.gotoAndStop(2);
}
on (press) {
this.gotoAndStop(3);
}
on (release) {
this.gotoAndStop(2);
}
on (rollOut, dragOut) {
this.gotoAndStop(1);
}
-------------------------------------
onイベントハンドラの () 内には複数のイベントパラメータを記入可能です。
on○○ するムービークリップが多数ある場合なら,もっと簡略化できます。
手始めとして,
その,on○○ を書いたムービークリップのスクリプトを全て削除します。
そして,
on○○ を書いたムービークリップをダブルクリックして,
そのムービークリップ内の編集に入り,
フレーム1 に次のように書きます(場合によっては書き加えます)。
-------------------------------------
//プログラム
this.onRollOver = function() {
this.gotoAndStop(2);
};
this.onPress = function() {
this.gotoAndStop(3);
};
this.onRelease = function() {
this.gotoAndStop(2);
};
this.onRollOut = function() {
this.gotoAndStop(1);
};
this.onDragOut = this.onRollOut;
-------------------------------------
これは onイベントハンドラ ではなく,onイベントハンドラメソッドです。
一見,ぜんぜん簡略化されていませんね。
むしろこの回答で最初に書いたスクリプトの方が簡略化されています。
しかし,こちらを使うと,ムービークリップが "複数ある場合に限って" 簡略化できます。
===================
上で書いた,ムービークリップ内フレーム1の onイベントハンドラメソッド を全て消します。
そして,ドキュメントの編集でメインムービー(_root)の編集に戻ります。
そして,
ステージ上にある,最初に on○○ を書いたムービークリップをコピペでたくさん増やします。
仮にコピペを 9 回して, ムービークリップを 10個 にしたとしておきますか。
ステージ上に 10個あるムービークリップ にそれぞれ違ったンスタンス名を付けます。
インスタンス名は半角英字(アルファベット)から始まっていて全て半角英数字であれば何でも良いのですが,
簡略化する場合,半角英字+半角連番数字 の方が良いです。
この説明の場合は,
「my_mc0」~「my_mc9」までのインスタンス名を付けたとしておきます。
そして,
_root の 「my_mc0」~「my_mc9」までのムービークリップが存在する フレーム のキーフレームに,
次のように書きます。
-------------------------------------
//プログラム
for (i=0; i<=9; i++) {
this["my_mc"+i].onRollOver = function() {
this.gotoAndStop(2);
};
this["my_mc"+i].onPress = function() {
this.gotoAndStop(3);
};
this["my_mc"+i].onRelease = function() {
this.gotoAndStop(2);
};
this["my_mc"+i].onRollOut = function() {
this.gotoAndStop(1);
};
this["my_mc"+i].onDragOut = this["my_mc"+i].onRollOut;
}
-------------------------------------
こうすれば,やっと簡略化と呼べると思います。
「my_mc0」~「my_mc1000」までのムービークリップがあったとしても,
for (i=0; i<=9; i++) {
を
for (i=0; i<=999; i++) {
に書き替えれば良いだけです。
インスタンス名の後に付ける番号も 0 からではなく,1 からでもかまいません。
インスタンス名を 1 ではなく 0 から始めている理由は...,
言葉や理屈では言えません。
色々やっていると 0 から始める理由が体感でわかってきます。
配列変数などを利用した場合,
その要素番号は 0 から始まるとか。
曜日や月の番号も 0 から始まるので,
インスタンス名 や 変数名 の連番を 1 から始めると,
そこだけ仲間はずれになって,いろいろ厄介なことになるからです。
(頭の中がゴチャゴチャになって,人間の頭の中の方が簡略化されなくなるためです。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- 英語 Statistically significant differences (p < 0.05), 5 2022/05/03 01:09
- TOEFL・TOEIC・英語検定 英語 文法 1 2023/02/27 14:01
- その他(SNS・コミュニケーションサービス) 爆サイやっていたら、下のような文字が出ました! これは何なのでしょうか? nginx error! 1 2023/06/09 12:27
- VPN 何これ 1 2022/04/19 01:32
- 英語 下記はなんていってますか? こんにちは以降、訳していただけたら助かります。 Hello, We’re 1 2023/01/14 00:09
- YouTube youtubeからの著作権メールについて 2 2023/02/14 16:12
- 英語 英語の問題でどう解いたらよいか分からないものがあります。教えていただけませんか?接続詞の単元です。 2 2023/06/18 15:45
- 英語 This is best accomplished by elevating the membran 1 2023/03/13 18:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ActionScript】Listコンポー...
-
photoshopで書いた四角の枠の中...
-
YOASOBI
-
【Photoshop】レイヤー効果の境...
-
ドラッグ&ドロップからの取得
-
VS2008 C# ボタンのテキストを...
-
テキストボックスの中身をリセ...
-
PythonのTkinterイベントについて
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
五芒星は、悪魔崇拝とどういう...
-
変数に256文字以上のテキストを...
-
キープレスとボタンクリックの...
-
パーセントで配置したフラッシ...
-
×ボタンを無効化したいのですが...
-
【VB.NET】別Formのボタンが押...
-
VBAで改行の入ったデータの正規...
-
テキストボックスにセルの値を...
-
斜めに移動
-
ダブルクリックと2回クリックの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ipconfig /releaseって何ですか?
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
webページ上、TABフォーカス出...
-
プログラミング、アーキテクチ...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
YOASOBI
-
RPG(AS400)の本、サイトってあ...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
ホームぺージ制作で間違って重...
-
五芒星は、悪魔崇拝とどういう...
-
else if文の順序を変えることに...
-
【VB.NET】別Formのボタンが押...
-
テキストボックスにセルの値を...
-
UWSCのBTN関数について。
-
【Photoshop】レイヤー効果の境...
-
四乗根を英語で言うと・・・
-
static関数がmapファイルに載ら...
おすすめ情報