チェックボックスでのイベント処理について
- チェックボックスの左隅でクリックすると、イベント処理が行われるが、チェックが消えなかったり表示されないままになってしまうことがある。
- チェックボックスのイベント処理における対処法を教えていただけると幸いです。
- 開発環境はCS3 AS2.0です。
- ベストアンサー
チェックボックスについて
現在チェックボックスを使用した作品を作成しています。 チェックボックスの左隅(ボックスの左辺)に マウスが乗ってるか乗ってないか位の位置でクリックをすると イベント処理は行われるのですが、チェックが消えなかったり 逆にチェックが表示されないままになってしまいます。 何かいい対処法はあるのでしょうか? ご教授頂けたら幸いです。 開発環境:CS3 AS2.0 以下チェックボックスに記述しているスクリプトです。 onClipEvent(mouseUp){ if(this.hitTest(_root._xmouse, _root._ymouse, false)){ if(this.getState()){ //処理 } else{ //処理 } //処理 } } }
- gardens64
- お礼率85% (30/35)
- Flash
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
チェックボックスとはコンポーネントを利用しているのですか? もしそうなら、hitTestなど使わず下記のようにすればOKです。 on (click) { if (this.getState()) { } else { } } もし、上記が使えない状況、例えば、 チェックボックス等をまとめているMCコンテナなどがあり、 MCコンテナ -> onイベントハンドラでマウス操作 チェックボックス等 -> mouseup等でhittest判断によるマウス操作 というのならば、 MCコンテナ -> mouseup等でhittest判断によるマウス操作 チェックボックス等 -> onイベントハンドラでマウス操作 とすればよいです。 既にon (click)で動作したならここは新たに考慮する必要はありません。
関連するQ&A
- 揺れるスクリプトについて
こちらで教えていただいたサイトで揺れるスクリプト を勉強していたのですが、 ■をMCにして、 onClipEvent (load) { this._xscale = this._yscale = 0; function sMove(mScale,acc,conv) { theScale = theScale*acc+(mScale-this._yscale)*conv; this._xscale = this._yscale += theScale; } } onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse,_root._ymouse,1)) { sMove(130,0.8,0.2); } else { sMove(100,0.8,0.2); } } と書いたのですがプレビューすると真っ白なままなにも 表示されません。 なぜなのでしょうか?
- ベストアンサー
- Flash
- マウス 追従 範囲外
マウスを追いかけるMCを以下のように設定しましたが、 MCが動いている範囲外にマウスがいるときは追いかけるのを やめにしたい場合どのように記述すればよろしいでしょうか。 onClipEvent (mouseMove) { if (_root._xmouse >左 && _root._xmouse <右) { this._x = _root._xmouse; } if (_root._ymouse >上&& _root._ymouse <下) { this._y = _root._ymouse; } } 範囲外にマウスがいるときは定位置にmcを表示させるか、 表示を消したいです。 ちなみにmcが動く範囲の指定方法はネット上から探してきました。 別の方法でもっと適した記述があれば教えてください。
- 締切済み
- Flash
- ムービークリップの領域をシェイプの形状にしたい
よろしくお願い致します。 ムービークリップにマウスオーバーするとムービークリップが再生し、マウスアウトすると逆再生するというものを作っています。 ここで、ムービークリップのマウスオーバーする領域を矩形ではなく、見たままの形(シェイプの形状)だけに指定するにはどうすれば良いでしょうか? 現在の状況は、マウスオーバーさせるムービークリップに onClipEvent (load) { this.stop(); } onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse, _root._ymouse, false)) { this.nextFrame(); } else { this.prevFrame(); } } のアクションを書いています。 自分なりに調べたところ、「shapeFlag?というものを使うらしい?」というのは分かったのですが、どう使えば良いのかさっぱり分かりません・・ どなたかご指導頂けないでしょうか。 どうぞよろしくお願い致します。
- ベストアンサー
- Flash
- 良いソースの書き方について(複数のインスタンスをまとめてヒットテストする方法)
■例文: ---------------------------------------------------------------- onClipEvent (enterFrame) { if ( this.hitTest(_root.char1)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char2)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char3)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char4)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char5)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char6)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char7)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char8)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char9)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char10)) { _parent.nextFrame(); } else if ( this.hitTest(_root.char11)) { _parent.nextFrame(); } } ---------------------------------------------------------------- 上記は、_root.char1 から_root.char11までインタンス名をつけたムービークリップとのヒット確認をするアクションスクリプトです。 こういう動作をしたい場合。 for文を駆使する等で、ソースを短くまとめる方法はありませんでしょうか。 いい案がありましたら、是非ご教授の程宜しくお願い致します。
- ベストアンサー
- Flash
- hitTest(_root._xmouse, _root._ymouse, true)が有効になりません
WinXP,Flash8pro,photoshopCS2,IllustratorCSで オーサリングしています。 フォトショとイラレでPNG画像を作成し、 Flash8Proに読み込んでステージに配置し、 MCに変換してから hitTestスクリプトで hitTest(_root._xmouse, _root._ymouse, true)としようとしていますが、 hitTest(_root._xmouse, _root._ymouse, false)で 処理されてしまいます。 FireWorksで作成したFireWorksPNG形式だと 正常にTrueで動作します。 フォトショやイラレのPNGでは透過部分を判別し、True判定できないのでしょうか? また、どのようにしたらフォトショやイラレのPNGを Trueで処理できるのでしょうか。 どうぞ宜しくお願い致します。
- ベストアンサー
- Flash
- 下からスライドしてくるメッセージ
こんにちは。 フラッシュ初心者です。画面下に、タブを出しておいてマウスオーバーすると上にスライドしてメッセージが出るというものを作っているんですが、位置の指定がうまくいきません。 もともと横にスライドするサンプルを見つけまして、縦に動くようにカスタマイズしているのですが…。 最初の位置の指定はできました。動きも縦になったのですが上に行き過ぎてしまうのです…。 メッセージ枠の幅だけ上に上がるようにするか、または上から○pxのところまで上がるように指定したいのですが、この場合どうすればよいのでしょうか? ↓今、こんな感じで作ってます。ステージはw400px×H200pxです。 onClipEvent (load) { this._y = 180; } onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse,_root._ymouse,1)) { this._y -= (this._height-this._y)/_root.speed; } else { this._y += (180-this._y)/_root.speed; } }
- ベストアンサー
- Flash
- FLASHメニューからHTMLを指定フレームに表示させることについて
質問させて頂きます。 題名の通りなのですが、FLASHでメニューを作り、 それをcolsでフレーム分けしたHTMLの左フレームに 持っていき、右フレームにメニューから指示された コンテンツを表示させるということをしたいのですが うまくいきません。 右フレームには"main"と名前を付けておきます。 FLASHのボタンシンボルに対して on (press) { getURL("××.html", "main"); } とアクションを付け、更にすべてのメニューを1つの ムービークリップシンボルとして、 onClipEvent (mouseUp) { if (this.hitTest(_root._xMouse, _root._yMouse)) { menuno = math.ceil(this._ymouse/(this._height/_root.contents)); _root.move(menuno); } } とアクションを付けました。 技術的なことはよくわからず、FLASH本に載っていたものを 真似してみたものです。 本についていたCD-ROMでまず動作確認をしてみたときから うまくいってませんでした。 どうやったらうまくいくのか教えて下さい。 環境 winXP FLASHMX IE ver.6 よろしくお願いします。
- ベストアンサー
- Flash
- 入れ子になっているMCのクリック判定について
Flash ver9 AS2.0 使用です。 親MCの中に子MCがいる構造です。 親MCはロールオーバーで移動、ロールアウトで元の位置へ戻るボタンアクション(onRollOver、onRollOut)を付けています。 その中にいる子MCにもロールオーバーで拡大するというアクションを付けていますが、 こちらにはonClipEventで接触判定(hitTestメソッド)で拡大するかどうかを判断しています。 分からないのは、この子MCをクリックした時に他のシーンへ移動させたいのですが、苦し紛れで onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse, _root._ymouse, true)) { //拡大処理 } onClipEvent(mouseDown){ //シーン移動処理 } としても、シーン移動が出来ませんでした。(当たり前ですよね…) hitTestメソッドのクリック判定バージョンがあれば良いのですが、 検索不足か本当に無いのか見つけられませんでした。 分かり難い説明かとは思いますが、シーン移動のさせ方、またはクリック判定の仕方を教えていただきたいです。
- ベストアンサー
- Flash
- ポップアップを一定時間、またはマウスが乗っている間表示させておく
スクリプトに詳しくないので、教えていただきたいです。 画面上のあるエリアにマウスをのせるとポップアップウィンドウのようなものが表示され、 その中にあるボタンをクリックすると外部swfを読み込むという仕組みを 作りたいと思っています。 下に書いてあるスクリプトでポップアップが出てくるようにしたのですが、 その次がわからなくて困っています。 (1)マウスがエリアから外れても、一定時間(例えば1秒とか)ポップアップを 表示したままにしたい (2)ポップアップにマウスがのっている間は表示させておきたい (1)はエリア部分とポップアップが離れている場合(といってもほんの少しです)を 考えてのことです。 いい方法がありましたらぜひ教えてください。 どうぞよろしくお願いいたします。 エリア部分に書いたActionScript --------------------------------------------------------------- onClipEvent (load) { _root.popup._visible = false; } onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse,_root._ymouse,1)) { _root.popup._visible = true; } else { _root.popup._visible = false; } } ---------------------------------------------------------------
- ベストアンサー
- Flash
- 外部swfを読み込んだときだけMouse.hide();させたい。
よろしくお願いします。 ドキュメント上に空のムービークリップを作り、その中の入れ子のボタンを押すと外部swfを表示するflashを作ったのですが、その外部swf、仮にhoge.swfを読みこんで、そのときだけマウスを隠して(ムービークリップをマウス代わりに)、ボタンで違う外部swf、仮にogeをよみこんだときはマウスを表示させることは可能でしょうか? onClipEvent (enterFrame) { this._x=_root._xmouse; this._y=_root._ymouse; Mouse.hide(); } 上記のスクリプトでマウスを消すと、ogeを読み込んでもマウスが消えっぱなしです。 多分if文を使って if (hogeを読み込んだら){ this._x = _root._xmouse; this._y = _root._ymouse; Mouse.hide(); } //そうでなかったら、 else { Mouse.show(); } みたいな感じなのでしょうが、うまく機能しません・・・。 ご教授お願い致します。
- ベストアンサー
- Flash
お礼
ご解答ありがとうございます。 ご教授頂いた通り、on (click)でできました。 hitTestやmouseUpの当たり判定で不具合が発生していた様です。 上記のソースの基本はAdobeの公式に掲載されていたものなんですけどね・・・ 大変勉強になりました。 ありがとうございました。