- 締切済み
FLASHでドラッグしたり…
MacOS9.1でFlashMXを使っています。 今、フレーム1においてドラッグできるMCがあるのですが、1にあるボタンを押してフレーム2に移った時にそのMCのドラッグをさせなくするようにしたいのです。 どのようなスクリプトを書けば良いでしょうか? さっぱり分からないので、ヒントでも良いのでお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- DPE
- ベストアンサー率85% (666/776)
関連するQ&A
- FlashでドラッグしたMCをリセットして戻すには
今回もまたFlashのことで教えてください。 先日教えていただいた「ドラッグしたMCを常に上に表示&色の変化」がきちんと動作できて とても助かりましたが、また、新たな課題が出たので教えて下さい。(これまでできていたリセットボタンがうまく動作しなくなっちゃったのです。) 具体的に言うと、つまずいている課題は以下の通りです。 ドラッグして移動したMCを元の位置(フレーム上の最初にあった位置)に戻すために「リセットボタン」を配置しましたが、このボタンでリセットしてもなぜかドラッグして移動したMCもそのまま残った状態で表示されるのです。つまり、完全リセットされないのです。 ドラッグしたMCが元の位置に戻り、ドラッグする以前のフレームが表示されるようにしたいのでどうか教えてください。 私が書いたスクリプトとタイムラインを示しますので、どうぞよろしくお願いいたします。 バージョン Flash CS5.5 アクションスクリプト2.0 Flash Player 6 です。 フレーム1とフレーム2があり、フレーム1はフレーム2に進むためのボタンを配置。 フレーム2には赤の□2つ。白の□2つを配置。 フレーム2に書いたスクリプト(1)は以下の通り (ドラッグしたMCが常に上に表示&色の変化をさせるスクリプト) (赤の□のインスタンス名「R_mc1」「R_mc2」 白の□のインスタンス名「W_mc1」「W_mc2」 ) //--------------------------- //深度カウント用変数を用意 var dep_cnt:Number = 1; //変数 i に 1~2 を入れながらループ for (var i:Number = 1; i<=2; i++) { //★「R_mc○」内の再生を停止 this["R_mc"+i].stop(); //★「R_mc○」内の変数 target_mc に「W_mc○」の参照を代入 this["R_mc"+i].target_mc = this["W_mc"+i]; //「R_mc○」押下時に関数 dragMC を実行 this["R_mc"+i].onPress = dragMC; //「R_mc○」を放した時に関数 dropMC を実行 this["R_mc"+i].onRelease = dropMC; //「R_mc○」をMC外で放した時にも関数 dropMC を実行 this["R_mc"+i].onReleaseOutside = dropMC; } //関数 dragMC の定義 function dragMC():Void { //深度カウント用変数をカウントアップ dep_cnt++; //押下されたMCをその深度に移動 this.swapDepths(dep_cnt); //押下されたMCのドラッグを開始 this.startDrag(); //★マウスが動く度に関数 watchHitW_mc を実行 this.onMouseMove = watchHitW_mc; } //関数 dropMC の定義 function dropMC():Void { //放されたMCのドラッグを終了 this.stopDrag(); //★マウスが動く度に関数 watchHitW_mc を実行するのを解除 delete this.onMouseMove; } //★関数 watchHitW_mc の定義 function watchHitW_mc():Void { //★ドラッグ中のMCがそのMC内の変数 target_mc に // 代入したMCとヒットしていれば if (this.hitTest(this.target_mc)) { //★ドラッグ中のMC内をフレーム2で停止 this.gotoAndStop(2); } else { //★それ以外はドラッグ中のMC内をフレーム1で停止 this.gotoAndStop(1); } } //--------------------------- ドラッグしたMCを元の位置に戻すための「リセットボタン」に書いたスクリプト(2)は以下の通り。 (以前に以下のようなスクリプトで元の配置にリセットされたので同じく書いてみましたが、今回はドラッグしたMCが消えず、そのまま表示されてしまいました。 //--------------------------- on (release) { gotoAndPlay(1); } on (release) { gotoAndStop(2); } //---------------------------
- ベストアンサー
- Flash
- FlashのMCに複数の動作をつけるためには
ムービークリップに スクリプト(以下(1)(2))をつけたいのですが、 そのスクリプトを別々(フレームやムービークリップ)に設定しているためか、 思うような動きを出すことができません。 同じフレームにスクリプトを書くことができれば 解決できると思うのですがそれができなくて・・・。 私の考えるイメージは以下の通りです・・・。 (1)フレーム上に赤の四角□(R_mc1、R_mc2)と白の四角□(W_mc1、W_mc2)のムービークリップ(MC)があります。 (2)赤のMCはドラッグすることができ、ドラッグしたMCは他のMCに重なると常に上に表示される。 (3)ドラッグした赤のMCが白のMCにヒットすれば(重なれば)、赤から黄へと色が変わる。 (そのために、赤のMC内のタイムラインには、フレーム1に赤、フレーム2に白、フレーム3に黄色の四角□を置いて、ヒットすればMC内のフレーム3にいくようにする。) (4)赤の四角□をドラッグせずにクリックだけをした場合は、MC内のフレーム2に行き、赤から白に色が変わる。 (5)リセットボタンをクリックすると、赤や黄のMCが元の位置に戻る。(最初のMCに戻る) 環境は、Flash Professional CS5.5 Action Script 2.0 Flash Player10 です。 以下はフレームに書いたスクリプト(1)です。 //--------------------------- //深度カウント用変数を用意 var dep_cnt:Number = 1; //変数 i に 1~2を入れながらループ for (var i:Number = 1; i<=2; i++) { //★「R_mc○」内の再生を停止 this["R_mc"+i].stop(); //★「R_mc○」内の変数 target_mc に「W_mc○」の参照を代入 this["R_mc"+i].target_mc = this["W_mc"+i]; //「R_mc○」押下時に関数 dragMC を実行 this["R_mc"+i].onPress = dragMC; //「R_mc○」を放した時に関数 dropMC を実行 this["R_mc"+i].onRelease = dropMC; //「R_mc○」をMC外で放した時にも関数 dropMC を実行 this["R_mc"+i].onReleaseOutside = dropMC; } //関数 dragMC の定義 function dragMC():Void { //深度カウント用変数をカウントアップ dep_cnt++; //押下されたMCをその深度に移動 this.swapDepths(dep_cnt); //押下されたMCのドラッグを開始 this.startDrag(); //★マウスが動く度に関数 watchHitW_mc を実行 this.onMouseMove = watchHitW_mc; } //関数 dropMC の定義 function dropMC():Void { //放されたMCのドラッグを終了 this.stopDrag(); //★マウスが動く度に関数 watchHitW_mc を実行するのを解除 delete this.onMouseMove; } //★関数 watchHitW_mc の定義 function watchHitW_mc():Void { //★ドラッグ中のMCがそのMC内の変数 target_mc に // 代入したMCとヒットしていれば if (this.hitTest(this.target_mc)) { //★ドラッグ中のMC内をフレーム3で停止 this.gotoAndStop(3); } else { //★それ以外はドラッグ中のMC内をフレーム1で停止 this.gotoAndStop(1); } } //--------------------------- 以下はR_mc1とR_mc2自体に書いたスクリプト(2)です。 R_mcをクリックしたときに白色になるようにR_mc 内のフレーム2(白い四角□)に行くようにしてあります。 (本当は、上記に示したフレームに書くスクリプト(1)に加えて書かなければいけないのだと思うのですが、その書き方がわからないので、R_mc自体に書いています。) //--------------------------- on (release) { this.gotoAndPlay(2); } //--------------------------- 以上のようなスクリプト(1)(2)にすると、赤のMC(R_mc1、R_mc2)をドラッグすると、スクリプト(1)ではなく、スクリプト(2)が優先されて、赤から黄にしたいのに、白に変わってしまうのです。 上記の私の考えるイメージ(1)~(5)が実行できるようなフレームに書くスクリプトを教えてください。 どうぞよろしくお願いいたします。 補足 リセットボタンには以下のスクリプトを書いてあります。 リセットボタンは同じフレーム内にスクリプトを書かずに、リセットボタン自体に書いてもかまいません。 //------------------ on (release) { //変数 i に 1~2を入れながらループ for (i=1; i<=2; i++) { //「R_mc○」を削除 this["R_mc"+i].removeMovieClip(); } gotoAndStop(1); gotoAndStop(2); } //------------------
- ベストアンサー
- Flash
- Flashで、ドラッグしたMCを上に表示&色の変化
先日、Flashで、ドラッグしたムービークリップ(MC)を常に表示する方法を教えてもらい、 うまく表示することができましたが、今回は、このMCに色を変化させるスクリプトをつけ加えたいので 教えてください(色の変化は、別の質問者の回答を参考にしましたが、うまくいかないので・・・。) 私が作成したいイメージは以下の通り((1)~(3))です。 (1)赤の□のMCが2つ(インスタンス名:「R_mc1」「R_mc2」)と白の□のMCが2つ(インスタンス名:「W_mc1」 「W_mc2」)。 赤のMCはそれぞれMC内の2フレーム目に黄色の□を置いている。 (2)赤の□をドラッグして白の□にふれると、赤の□が黄色の□に変化する。 (R_mc1はW_mc1とふれたときにだけ黄色に変化。R_mc2はW_mc2とふれたときにだけ黄色に変化。) (3)赤の□は、どのMCに重なっても常に上に表示されるようにする。 以下にスクリプトを書いてあります。以下のスクリプトは赤や白のMCが置いてあるフレームに書いてみましたがうまくいきません。教えてgooでいただいた2種類のスクリプトを単純にくっつけただけなので、うまくいかないのは当然だと思いますが・・・。 すみませんが、わかりやすく教えてください。どうぞよろしくお願いいたします。 補足 Flashバージョン CS5.5 アクションスクリプト2.0 FlashPlayer6 です。 //------------------------------------ //深度カウント用変数を用意 var dep_cnt:Number = 1; //変数 i に 1~2 を入れながらループ for (var i:Number = 1; i<=2; i++) { //「R_mc○」押下時に関数 dragMC を実行 this["R_mc"+i].onPress = dragMC; //「R_mc○」を放した時に関数 dropMC を実行 this["R_mc"+i].onRelease = dropMC; //「R_mc○」をMC外で放した時にも関数 dropMC を実行 this["R_mc"+i].onReleaseOutside = dropMC; } //関数 dragMC の定義 function dragMC():Void { //深度カウント用変数をカウントアップ dep_cnt++; //押下されたMCをその深度に移動 this.swapDepths(dep_cnt); //押下されたMCのドラッグを開始 this.startDrag(); } //関数 dropMC の定義 function dropMC():Void { //放されたMCのドラッグを終了 this.stopDrag(); } //------------------------------------ //--------------------------- //「R_mc1」上でマウスダウン時に実行するメソッドを定義 R_mc1.onPress = function():Void { //「R_mc1」のドラッグを開始 R_mc1.startDrag(); //マウスが動く度に関数 watchHitW_mc1R_mc1を実行 this.onMouseMove = watchHitW_mc1R_mc1; }; //「R_mc1」上でマウスアップ時に実行するメソッドを定義 R_mc1.onRelease = R_mc1.onReleaseOutside = function():Void { //このMC(R_mc1)のドラッグを終了 this.stopDrag(); //マウスが動く度に関数 watchHitW_mc1R_mc1 を実行するのを解除 delete this.onMouseMove; } //関数 watchHitW_mc1R_mc1の定義 function watchHitW_mc1R_mc1():Void { //もし「R_mc1」が「W_mc1」にヒットしていれば if (R_mc1.hitTest(W_mc1)) { //「R_mc1」内の再生を フレーム2 で停止 R_mc1.gotoAndStop(2); } else { //ヒットしていなければ「R_mc1」内の再生を フレーム1 で停止 R_mc1.gotoAndStop(1); } } //--------------------------- //「R_mc2」上でマウスダウン時に実行するメソッドを定義 R_mc2.onPress = function():Void { //「R_mc2」のドラッグを開始 R_mc2.startDrag(); //マウスが動く度に関数 watchHitW_mc2R_mc2を実行 this.onMouseMove = watchHitW_mc2R_mc2; }; //「R_mc2」上でマウスアップ時に実行するメソッドを定義 R_mc2.onRelease = R_mc2.onReleaseOutside = function():Void { //このMC(R_mc2)のドラッグを終了 this.stopDrag(); //マウスが動く度に関数 watchHitW_mc2R_mc2 を実行するのを解除 delete this.onMouseMove; } //関数 watchHitW_mc2R_mc2の定義 function watchHitW_mc2R_mc2():Void { //もし「R_mc2」が「W_mc2」にヒットしていれば if (R_mc2.hitTest(W_mc2)) { //「R_mc2」内の再生を フレーム2 で停止 R_mc2.gotoAndStop(2); } else { //ヒットしていなければ「R_mc2」内の再生を フレーム1 で停止 R_mc2.gotoAndStop(1); } }
- ベストアンサー
- Flash
- flash ドラッグ&ドロップでフレーム移動
今晩は、質問させて下さい。 使用osはmac10.6.8/ソフトはFlashCS5.5/アクションスクリプト3.0です。 特定のインスタンス(maru)を別のインスタンス(shikaku)にドラッグ&ドロップした時、指定のフレーム(29フレーム目)に進むスクリプトを教えて頂きたいです。 どうぞご教授お願い申し上げます。
- 締切済み
- その他Adobe製品
- Flashのアクションスクリプトについて
gotoAndPlayをMCに書いても指定したフレームに飛びません。ボタンに書いた場合は飛びます。MCをクリックしてgotoAndPlayを実行させたい場合、どのようなスクリプトをMCに書けばよいか教えてください。また、イベントハンドラメソッドでメインフレームに記述する場合もどのようなスクリプトを書けばよいか教えてください。よろしくおねがいたします。
- 締切済み
- グラフィックソフト
- スクリプトの記述について
FlashMXでゲームを作成しています。 MCの、例えば5フレーム目が表示されているときに、メインタイムラインのクローズボタンをクリックするとその5フレーム目の画像が消えるというような スクリプトはどう書けばいいのでしょうか。 クローズボタン(インスタンス名close_btn)に、 on(release){ if(○○○○){ ~のようなものになると思うのですが。 MCはメインタイムラインに配置されていて、ダブルクリックすると MC独自のライムラインになったときの5フレーム目です。 ゲームはいわゆる脱出系で、この部分だけがわからずにいます。 MCのインスタンス名はabout1としています。
- ベストアンサー
- Flash
- ジャバスクリプトのように別ウインドウを開くのをフラッシュで
たびたびお世話になっております。 FlashMXで、メニューボタンを作っています。 左のフレーム(フレーム名=menu)にFlashで作ったボタンを配置し 右のフレーム(フレーム名=main)に開くというスクリプトは 以下なのですが on (press) { getURL("main.htm", "main"); } サイズやツールバーの有無などを指定した別ウインドウを開くには、どう書けばいいのでしょうか? HTMLだとジャバスクリプトを使いますよね。 それをアクションスクリプトと連携させるやり方があるのでしょうか。 よろしくお願いします m(_)m
- ベストアンサー
- Flash
- FLASHでの深度についての質問
FLASHでの深度についての質問 こんにちは、よろしくおねがいします。 作業環境は MacOS10.6.2でADOBE FLASH CS4 PROFESSIONAL です。 http://suzupara.iinaa.net/gac/dandan/で紹介されている クロスフェードで切り替わる画像ギャラリーのしくみを参考にして もう少し細かいものを作ろうと思っているのですが行き詰まってしまいました…。 作業工程としては (1)上記サイトの内容を1つのムービークリップa_mcにまとめて、1フレーム目に配置。 (2)同じ構造の別のムービークリップb_mcをつくって、2フレーム目に配置。 (3)別レイヤーの1、2フレームそれぞれにstop();を記述 (4)1フレーム目には2フレーム目にジャンプするボタンA、2フレーム目は1フレーム目にジャンプするボタンBを作成。 ようするにAボタンとBボタンでジャンル分けしたクロスフェード切り替えの画像ギャラリーが作りたいのですが、これを動かしてしばらくすると「ムービー内のスクリプトが原因でFlash Playerの実行速度が遅くなっています…」というメッセージが出て動作が止まってしまいます。いろいろなサイトを調べた結果ムービークリップが増殖しているのが原因なのではないかと思うのですが、どこに、どのようにスクリプトを記述すればこの問題が解消するのかが分かりません。お詳しい方、よろしくおねがいします。
- ベストアンサー
- グラフィックソフト
- スライダをドラッグして変数を吐き出させる方法
MacOSX FlashMX2004環境です。 オリジナルのスクロールバーを製作して、 そのドラック位置によって変数を吐き出させる仕組みを作りたいのですが、迷宮入りしてしまい質問させていただきました。 よろしくお願いいたします。 恥ずかしながら、オリジナルのスクロールバーの作り方もわかっていません。原理はなんとなく頭に浮かぶのですが、どう書けばいいのか困っています。 内容は、 小さなMC(最初は左端)[以下スライダ]を右にドラッグするとドラックした分だけ、 上にある別のMCが動くという仕組みです。 スライダを右にドラッグした分の数字が変数 pNum に吐き出され、 スライダを左にドラッグした分の数字も変数 pNum に吐き出される。 吐き出したい変数は1から150です。 一番左端の時は1、右端の時は150としたいです。 スライダは左端~右端まで130pxのみ動かしたい。 スライダを使わずに上にある別のMCが動いてもスライダが動いて欲しい。(上にある別のMCとスライダを連動させたい) お時間よろしい方がおられましたら、 助けていただけませんか? お願いいたします。
- ベストアンサー
- Flash
- Flashボタンのリンクについて
今回初めてHPを作っているんですがどうしてもわからないので質問させていただきます。 FlashMXでボタンを作ってリンク(gotoURL)を貼って、Dreamweaverにて縦に割ったフレームの左側に設置しました。 ボタンをクリックして右側のフレームに指定のドキュメントを表示させたいんですがどうしてもうまくいきません。 作ったボタンにはgetURL("指定ドキュメト","_self");とアクションスクリプトを設定して"_self"の部分は_parent,_blnk,_top,mainframe等記述してひと通り試してみたのですがどうしても右側のフレームに表示されません。 色々調べてみたのですがどうしてもわからずほとほと困り果てています。。初心者の質問で申し訳ありませんがおわかりの方どうぞご指導よろしくお願いします。
- ベストアンサー
- ホームページ作成ソフト
- brother DCP-J928NでJPG画像をスキャンして保存する方法を教えてください。Windows11を使用し、USBケーブルで接続しています。
- 関連するソフトとしてBrother iPrint&Scanを使用しています。ひかり回線を使用しています。
- brother DCP-J928Nでは、Windows11を使用し、USBケーブルで接続している場合、Brother iPrint&Scanを使用してJPG画像をスキャンして保存することができます。ひかり回線を使用している場合も同様に利用可能です。
補足
詳しい回答をありがとうございます。 別件で忙しくなってしまいましたので、後日検証してまたお礼なり再度質問なりさせていただきます。 せっかく回答して下さったのにごめんなさい。