• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムの簡略化)

プログラムの簡略化

このQ&Aのポイント
  • AS初心者のために、ムービークリップのプログラムを簡略化する方法について相談します。
  • プログラムの簡略化方法について、直接回答をいただけるだけでなく、関連する情報も教えていただきたいです。
  • ムービークリップのプログラムを短縮する方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答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 から始めると, そこだけ仲間はずれになって,いろいろ厄介なことになるからです。 (頭の中がゴチャゴチャになって,人間の頭の中の方が簡略化されなくなるためです。)

noname#77303
質問者

お礼

複数のイベントを書けること、大変参考になりました! また、for文による多数のMCの操作、今後に生かしていきたいと思います。 ありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#35109
noname#35109
回答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

  • Flash5でうまく動きません

    今Flash5で何種類かのボタンがあり、それぞれの上にカーソルを持っていくと、 ボタンに応じてそれぞれ違ったムービークリップが、同じ場所に表示される というのを作りたくて,とりあえず一番上のボタンには on (rollOver, dragOver) { setProperty ("ターゲット名", _visible, 1); } on (releaseOutside, rollOut, dragOut) { setProperty ("ターゲット名", _visible, 0); } をつけたら思うように動いたのですが,そのすぐ下のボタンに同じように そのボタン用にターゲット名を書き換えてみると、下のボタンは ムービークリップを表示してくれません。あと7個もボタンあるのに…(-_-;) どうしたら思う通りに動くようになるのか、どうか教えてください。

  • Flashvars getURLの書き方

    AS2の質問です。 flashvarsでhtmlからの指定でURLを引用したいと思っています。 作りたいのは画像・URLは全て外部(html)から引用した画像リンクです。 画像はマウスオーバーでアルファを変えます。 古い記憶からgetURLで指定すればよかったような気がし、 ムービークリップに指定しましたが「undefined」と表示されました。 (ボタンだと上手くいくのですが、今度はアルファがうまくきかず……) 下記のようなスクリプトを書いています。 ---------------------------------------------------- onClipEvent(load){ this._alpha=50; } on(rollOver){ _root.******._alpha=100; } on(rollOut){ _root.******._alpha=50; } on(release){ getURL(++++++); } ------------------------------------- *******がムービークリップのインスタンス名 ++++++が引数となります。 こちらは動画の最後に表示するものとして作っています。 よろしくお願いします

    • ベストアンサー
    • Flash
  • アニメーションするナビゲーションを作りたい

    http://toyota.jp/ このTOPページの様にナビゲーションに触るとアニメーションし、離すとアニメーションして、さらにアニメーションしながらコンテンツが出てきて、離すとまたアニメーションしながら閉じるというナビゲーションを作りたいです。各ボタンをムービークリップに変換して on(rollOver){ this.play(); } on(rollOut){ this.gotoAndPlay("end"); } on(release){ getURL("ファイル名.html"); } をオブジェクトに入れるまではわかったのですが。アニメーションしながら出てくるコンテンツの方はどうすればいいかわかりません。 FLASHのいろいろなサイトや本で同じ事をやっているものを探しましたが、同じものは見つかりませんでした。よくあるナビゲーションだけに誰か作ったことのある方はおられないでしょうか。お教え下さい。

  • flash:ムービークリップの制御

    誠に不勉強の段お許しください。 Flashで知人のサイトを製作しているのですが、どうしてもうまくいかず投稿させて頂きました。使用してる環境;ソフトはMacOS10.4.11:Flash8.0です。 (1)動かしたい内容は、-rootにムービークリップのスプレー缶があって、それにロールオーバーすると少し上がり指が現れ、そこで止まる。(ムービークリップ10フレーム目で停止) (2)ロールアウトすると逆戻りで元の位置に戻る。 (3)(1)の止まった状態でプレスすると10フレーム目から進み(スプレーされるアクションが入り)指定アドレスに飛ぶ。(ムービークリップ15フレーム目でgetURL) この様な、動きをさせたいのですが 様々解らないなりに調べて、何とか15フレーム目までいって止まり、その逆戻りまでは出来たんですが、10フレーム目で一旦止める事が出来ません...。 onClipEvent (load) { nMove = 0; } onClipEvent (enterFrame) { if (nMove != 0) { nNextFrame = this._currentframe+nMove; if (1<=nNextFrame && nNextFrame<=this._totalframes) { this.gotoAndStop(nNextFrame); } else { nMove = 0; } } } on (rollOver) { nMove = 1;} on (rollOut) { nMove = -1; } 大変恐縮ですが、 なにとぞご教授いただけましたら幸に存じます。

    • ベストアンサー
    • Flash
  • rollOverで動きながら出現し、rollOutで逆再生で消えていくメニュー

    rollOverで動きながら出現し、rollOutで逆再生で消えていくメニューを作っています。 MCに下記スクリプトを記述することで再生・逆再生は実現できたのですが、 MC内に複数配置したリンクボタンが機能しません。 リンクはHTMLファイルへのリンクです。 どうすればよろしいでしょうか? 記: onClipEvent (load) { nMove = 0; } onClipEvent (enterFrame) { if (nMove != 0) { nNextFrame = this._currentframe+nMove; if (1<=nNextFrame && nNextFrame<=this._totalframes) { this.gotoAndStop(nNextFrame); } else { nMove = 0; } } } on (rollOver) { nMove = 1; } on (rollOut) { nMove = -1; } MC内に配置しているボタンからは on(release){ getURL("aaa.html"); } といった記述をしています。

    • ベストアンサー
    • Flash
  • FLASHのボタンの動作(他のボタンにロールオーバーしたら…)

    AというボタンとBというボタンがあります。 Aには on (rollover) { this.gotoAndPlay(2); } on(rollout){ this.gotoandplay(6); } というアクションがついていますが、 「rollout」ではなくて、「Bのボタンにrolloverしたら」というように変えたいのですが、 どのように記述したらよろしいでしょうか? よろしくお願いします。

  • ムービークリッププロパティの変更

    こんにちは。 ムービークリップA_mcをロールオーバーした時にムービークリップB_mcを表示ロールアウトした時にムービークリップB_mcを非表示にしたいのです。 まずはムービークリップB_mcの_alphaを100にするスクリプトを記述しようとしています。 B_mcはアニメーションですでに_alpha=0でステージにおかれています。 A_mcに on(rollOver){ _root.B_mc._alpha=100; } on(rollOut){ _root.B_mc._alpha=0; } と記述したのですが、表示されませんでした。 試しにと on(rollOver){ _root.B_mc._visible=true; } on(rollOut){ _root.B_mc._visible=false; } としてもだめでした・・・ すみません。原因がよくわからず対処方法もわかりません・・・何方かご教授頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ステージ外へカーソルが出た事を感知させるには

    宜しくお願いします。 FlashMX2004 MacOS:tiger AS1.0 Player6 ステージサイズ100x100ピクセルの上に、80x80ピクセルのMCが配置してあります。 上下左右に10ピクセルの余白がある状態です。 カーソルがステージ外へ出た事を感知したいのですが、カーソルを素早く動かすと、rollOutを感知してくれません。 MCには以下のscriptが書いてあります。 on(rollOver){ trace("over"); } on(rollOut, releaseOutside, dragOut) { trace("out"); } 宜しくお願いします。

  • ボタンから一つ上の階層のムービークリックを徐々にアルファ値を上げたり下げたりする。

    はじめまして、jpncan15といいます。 初めて質問させていただきます。 階層がややこしい状態ですが、ボタンから一つ上の階層のムービークリップのアルファ値を徐々に上げたり下げたりしたいのですが、なかなかうまく行かず昨晩から悩み中です。 もし、ご存じの方がいればご教授お願いいたします!! ○状況 シーン1  mc1(ムービークリップ)   mc2(ムービークリップ:インスタンス名:image)   mc3(ムービークリップ) buttan(ボタン:ボタン名:b1) ○buttan(ボタン:ボタン名:b1)のスクリプト ※触っていると、アルファ値が0→70%に変わって行く。 ボタンをはなすとアルファ値が70→0%変わって行く。 ※このスクリプトだと、徐々に変わって行くのではなくいきなり、アルファ値が「5」変わるだけなのです。。。 on (rollOver) { if (this._parent.image._alpha < 70){ this.common_b._alpha += 5; } } on (rollOut) { if (this._parent.image._alpha > 70){ this.common_b._alpha -= 5; } }

    • ベストアンサー
    • Flash
  • マウスポインタを変化させない方法

    50も半ば過ぎの初心者です。 Flash8で、jpg画像の上にムービークリップ及びボタンを配置、   on (rollOver) { gotoAndPlay("s1"); } on (releaseOutside, rollOut) { gotoAndPlay("s2"); } で、画像へのマウスポインタの乗り降りでムービークリップの制御をしました。 このとき、画像にマウスポインタが乗ると形状がデフォルトの"矢印"から"手"に変りますが、これをデフォルトのまま変化させない方法を教えてください。 on (rollOver) { Mouse.hide(); gotoAndPlay("s1"); } on (releaseOutside, rollOut) { Mouse.show(); gotoAndPlay("s2"); } で、画像にマウスポインタが乗ると消えるようにはできたのですが、クリックしても何も起こらない"ボタン"なので、"矢印"のままにしておきたいのです。 よろしくご指導ください。

    • ベストアンサー
    • Flash
氏名の外字入力について
このQ&Aのポイント
  • 氏名の外字入力に関するお悩みについて、解決方法をご紹介します。
  • IMEに保存されている氏名外字を使用してカード入力し、宛名に反映する方法を教えます。
  • ご利用の製品はバージョン33で、パソコンのOSはWindows11です。
回答を見る

専門家に質問してみよう