• ベストアンサー

Flash でのダブルクリック禁止

Flash MX Macintoshを使用しています。 あるボタンをクリック-->on (release)すると、 指定したURLへ飛ぶ-->getURL()ようにしています。 パブリッシュしてみると特に問題ないのですが、 あるパソコン初心者に使用してもらったところ、 なんとダブルクリックするじゃありませんか。 ダブルクリックすると、ブラウザが2個起動しました。そしてフリーズしました。 なんとかしてダブルクリックをさせないような スクリプトはあるのでしょうか? マウスのイベントの中にダブルクリックは無いようです。

  • megane
  • お礼率74% (125/168)

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

  • ベストアンサー
  • hokuto_ds
  • ベストアンサー率45% (106/233)
回答No.2

ボタンのMC化のやりかたですが、つくったボタンを画面に配置しますよね。そうしたら、そのボタンを選んだまま、「シンボル化」すると、MCになります。べつにボタンの編集画面にする必要はありません。 逆に、なにもえらばず「新規シンボル」を選択し、適当な名前を付けるとシンボル編集画面になりますので、その中にボタンを配置しても同じものが出来ます。ためしにやってみればすぐわかると思います。 「ヒット」などの4フレームは「ボタンの内部」の編集画面ですので、ちがいます。「ボタンをMC化する」というのは、「MCのなかにボタンを置く」ということです。「ボタンのフレームを増やす」ということではありません。 で、MCとボタンのちがいですが、MCにはフレームがあるということと、ボタンにはハンドラアクション (on( )) がある、というのが大きなちがいになりますかね。ほかにもいろいろちがうんですが、ちょっとここでふれるには煩雑になるので。ヘルプを見ていただくのがいいかも。  >MCにもアクションでgetURL();が利く これは誤解なさってるかも‥‥;。前回の回答に書いたことは、「MCの中に置いたボタン」がon(release){getURL‥‥}で反応して、親のMCに命令を出す、ということです。MCにはon( )の命令はないので、今回の場合、すべてMCでつくるのはかなり難しいと思います。 親MC>ボタン という構造になっていても、ボタンはボタンとして作動するんですよ。MCの中にはいっちゃったからボタンがボタンとしての特性を失うわけではないです。MCの中にボタンが置かれているだけです(説明が下手ですみません‥;解説サイトを探してみようとはしたんですが‥) あと、ここから先は今回の目的とは関係のない説明になりますが、 getURLの命令自体はMCにも使えます。ただ、on(release)という命令がMCにはないので、もしMCだけで今回の処理をしたい場合、MCのonClipEventに onClipEvent(mouseDown){ if(this.hitTest(_root._xmouse,_root._ymouse,true)){ getURL("ターゲットhtml"); } } と書いておけば、ボタンの時と同じようにマウスクリックでgetURLを行います。でも面倒ですよ;;マウスがおりたときに画像を変化させたい場合は、またさらにスクリプトをかかなければならないですし(ボタンならdownフレームの絵を変化させるだけで出来ますよね)。 「クリックで何かをさせる」にはボタンが最適で、「複数のフレームを持つ」にはMCが最適です。その両方をあわせ持たせるために、よく「ボタンをMC化」して、クリックに対する命令はボタンに、それ以外の動作についてはMCに書き込んで処理させることがあります。 そうそう、でも#1の回答でも書きましたが、べつにスクリプトをいじらなくても、たぶん今回の問題は、ブラウザから見ればそのままで解決してるんじゃないかと思いますよ?

その他の回答 (2)

回答No.3

こんばんわ,RedCycloneです. 私が使用しているのはFlash5Jですが, MXでも同様かと思いますのでチョットだけアドバイスを. 記事を読んでの推測ですが, meganeさんのFlash構造はBBSやLink,または他のサイトへの移動を 新しいWindowを開いて表示する感じではないでしょうか. 「新しいWindowを開く」こと事態はmeganeさんの思惑通りで, 問題点は”ボタンを押す度に窓が開いてしまうこと”ですね. 結果的なご質問は「ダブルクリックの禁止」のようですが, 本質的には何度クリックしても1つしか新規Windowが開かなければ良いんですよね. ダブルクリックを禁止する方向でこの問題を解決しようとすると難しいです. 何故かと言うと,2つ以上Windowを開かないようにするには, 新しいWindowが開いているかをボタンを押す度に確認しなければならないからです. また,getURL()でウィンドウの名前を指定しても, やはりボタンを押す度に新規Windowが開いてしまいます. さて,問題の解決方法ですが, Javaスクリプトとfscommandを併用するのが一般的かと思います. Javaスクリプトを使用して新しいWindowを開く方法に関しては, 下記サイト「JavaScriptとの連携サンプル」-「Flashのボタンからツールバーのないウィンドウを開く」を参考にして下さい. window.open("URL", "ウィンドウの名前","ウィンドウのプロパティ"); Flashのボタンからこのスクリプトを呼ぶことで, ”ウィンドウの名前”で指定したWindowが無ければ新しくWindowを作成し, あればそのWindowへURLで指定したページを表示します. 上記サイトでは,"ウィンドウの名前"を指定していないので次々にWindowが開きますが, 適当に指定すれば1つしか開かなくなります. わからない部分があれば補足致しますので, その旨ご質問下さい.

参考URL:
http://www.game3rd.com/flash/scripter/
  • hokuto_ds
  • ベストアンサー率45% (106/233)
回答No.1

それきっついですね;;ダブルクリックですか‥‥怖い話です。 マウスハンドラにはダブルクリックの仕様はないですね。(そう言えば、あってもおもしろいのに‥) パブリッシュしたファイルは、実際使用する時って言うのは、まあふつうブラウザから見ますよね(ネットにあげるのが目的だ、という前提で話をさせていただきますが)。その場合、すでにブラウザから見ているので、「あらためてブラウザが起動する」ということはないように思います。 ただ、開くウィンドウを_brankに指定しておくとクリックした数だけウィンドウが開きかねませんので、そこは注意がいるかもしれません。(まあ自分でとじてもらえばいいことですが‥。getURL("ターゲットのファイル","フレームに付けたい名前")で回避できるかな) パブリッシュのswfファイル単独ではなく、ブラウズして、もういちどためしてみることをおすすめします。たぶん大丈夫じゃないんでしょうか。 もし別の理由で「絶対にダブルクリックを防止したい」場合、ボタンをさらにMC(ムービークリップ)化し、1フレーム目はボタンが存在し、2フレーム目にはボタンが存在しない(もしくは、ボタンはあるがon(release)アクションは書いてない)MCにします。1フレに、「this.stop();」を記述しておきます。 で、ボタンのon(release)ハンドラの中に、getURLのほかに this.gotoAndStop(_currentFrame+1)を記述すれば、最初のクリックで次のフレームにすすむため、次のクリックは無効になります。 ただし、このやりかただとこのボタンは二度と作動しなくなりますので、ボタンのアクションに on(rollOut){this.gotoAndStop(1);}を記述するなり、もしくはボタンの親MCの方にタイマーをセットして10秒くらいでもとのフレームにもどすなどの手を打っておきます。まぁタイマーになると、なにもそこまで、って感じもしますが;

megane
質問者

お礼

解答ありがとうございます。 なるほど考えようによっては何でもできますね。 >ボタンをさらにMC化し… ボタンを同じ位置で編集すると、“アップ”“オーバー”“ダウン”“ヒット”の4フレームでてきますが、“ヒット”状態でMCにして、同じ位置で編集し、1・2フレームを使うといった感じでしょうか? 今気づいたことなのですが、 ボタンとMCの違いがはっきりわかりません。 MCにもアクションでgetURL();が利くということは、 全てMCで作ってもよいということですよね。

関連するQ&A

  • flashのボタンクリックで他のサイトにジャンプするには?

    flash professional 8 を使っています。ボタンを作って、それをクリックしたときに他のサイトにジャンプするようにしたいのですが、on (release) {getURL("○×○×");}と入力しても、「マウスイベントはボタンインスタンスでのみ使用できます。」というエラーが出ます。 ボタンは完璧に作れましたが、ジャンプがうまくいきません。アドバイスお願いします。

    • ベストアンサー
    • Flash
  • FLASH クリック連打で違う操作はできますか?

    flash初心者で、説明不足だったら、すみません。よろしくお願いします。 バージョンは、FLASH2004 MX 使用です。 雪だるま(ボタン)をクリックすると、雪の画像(yuki_1)がクルクルまわりながら、天から降ってくるという雪景色を作成しています。 アクションスクリプトは、雪だるまボタンに対して on (release) { _root.yuki_1.play(); } これをダブルクリックなど、連打すると雪がもっと大量に降るなどという FLASHの作成は、可能なのでしょうか。クリックと、ダブルクリックを区別し、クリックは、雪少量、ダブルクリックは雪大量などと・・・ ボタンにした場合だと、やはり、ワンクリックしかできないのかなぁとも思っていますので、もし、他の方法で、できるのでしたら、お知恵をお借り出来たらと。よろしくお願いします。

  • Flash Playerでのリンク

    Flash MX2004を使用してます。 同じパソコン上で、 a.swfとb.swfというFlashファイルを作って、 a.flaの「ボタン」のアクションから on (release) { getURL ("b.swf", "_self"); } と入力してパブリッシュ後、a.swfから実行すると IE(ブラウザ)が立ち上がってbのリンクへ飛びますが、これをFlash Playerのみを使って(ブラウザを使わずに)リンクさせることはできますか。

  • Flash の action script が動きません

    初歩的な質問で失礼します。 Flash MXを使用しています。 ボタンを押したらURLに飛ぶ、というものを作りたいのですが ボタンに、 on (release) { getURL("http://www.*****.html"); } を指定したくても、ボタンシンボルのアップ/オーバー/ダウン...の中では「この場所には指定できません」というようなエラーメッセージがアクションパネルに表示され、書くことができません。 調べたところ、「ASを 2.0に指定すれば直る」と書いてあるページが多かったのですが、ver.MXにはそれを指定できる所が見当たりませんでした。 かといってタイムライン上に書くと「マウスイベントはボタンインスタンスでのみ使用できます。」と出てしまい、URLに飛んでくれません。 一体どうしたら良いでしょうか? どうかよろしくお願いします。

  • FlashのActionScriptでjavascript?

    質問するカテゴリーがここであっているのかよくわかりませんが、よろしくお願いします。 Flashの短い動きがあった後、一部をクリックすると新しいウィンドウが開くようになっています。 今回、そのリンク先を変えてくれとの依頼がきました。 そのクリックする部分のActionScriptをみたところ、 on (release){ getUrl("javascript:OpenNewWindow(3)"); } となっていました。 これはジャバスクリプトを読んでいるということなのでしょうか? もしそうなら、そのジャバスクリプト自体にはどうすればたどりつけますか?

    • ベストアンサー
    • Flash
  • フラッシュ画像、再生終了後に別ベージへジャンプする

    FLASH MXを使ってます。 一番最後のフレームを指定して on (release) { getURL("http://www.****/le.htm"); } とアクションクスリプトに記述しましたが、飛びません。

  • FLASHのマウスオーバーとスタートに関する質問です。

    FLASHのマウスオーバーとスタートに関する質問です。 はじめまして。 FlashCS3を使用して作成しているのですが、質問があります。 ボタンを作成して、マウスオーバーで画像を変えるものを2点作成し、 どちらかをクリックするとイベントが始まるように仕掛けたいのですが、どうもうまくいきません。 別々にはできたのですが、  this.stop();  play_btn.gotoAndStop(1);         と  on (release) { gotoAndPlay(2); } 上記2つのスクリプトでイベントスタートさせますと、 マウスオーバーが作動しないのですが、対策は何かありませんでしょうか? わかりにくくて申し訳ございませんがよろしくお願い致します。

    • ベストアンサー
    • Flash
  • flashでcgiなどからflashのtextboxにデータを入力したいとき。

    こんにちは, 現在FLASH MXを使用してFLASHを学習しています。 たとえば,flashの中のtextboxからサーバースクリプトにデータを送るときは,getURLを使用すると送ることができます。 逆にサーバースクリプトからflashのtextboxに文字を送りたいときは,どのようにすればいいでしょうか。 詳しい方,よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASH MX でGETURLが実行されません・・・。教えてください。

    FLASH MXでGETURLを指定しています。 ボタンを選択して、そのボタンに記述していますが 実行されません。反応が何も無い状態です。 パブリッシュ設定でも、バージョン6に設定しています。 下記でヤフーに飛ぶようにしたいのですがなぜ動かないのでしょうか? わかるかた教えてください・・・ on (release) { getURL("http://www.yahoo.co.jp"); } 環境はWindows XPです。

  • FLASH MX でGETURLが実行されません・・・。教えてください。

    FLASH MXでGETURLを指定しています。 ボタンを選択して、そのボタンに記述していますが 実行されません。反応が何も無い状態です。 パブリッシュ設定でも、バージョン6に設定しています。 下記でヤフーに飛ぶようにしたいのですがなぜ動かないのでしょうか? わかるかた教えてください・・・ on (release) { getURL("​http://www.yahoo.co.jp");​ } 環境はWindows XPです。

    • ベストアンサー
    • Flash