タイトルの通りです。
まずマウスでmc1をクリックと「クリックしている」と表示されるのですが、そのままクリックした状態でなにかのキーを押すと「クリックを離した」とでてしまうのです。
_root.mc1.onPress = function(){
trace("クリックをしている")
}
_root.mc1.onRelease = function(){
trace("クリックを離した")
}
クリックを押下し続けている間は「押し続けているのだ」という情報を得る方法はないのでしょうか?
No.1ベストアンサー
- 回答日時:
その現象はムービープレビューの時だけ起こるのではないでしょうか?
ムービープレビューで、「キーボードショートカットを無効」(プレビュー時の「制御」メニュー内にあります)にチェックを入れてプレビューしてみてください。
スタンドアロンプレイヤーやブラウザでは trace アクションが無効になるので、視覚的に分かりやすい例で実験してみるとしましょう。
ムービークリップシンボルを1つ、用意します。
シンボルのタイムラインのフレーム1に青い丸、フレーム2に赤い丸を描き、それぞれのフレームに stop(); を入れてください。
できたシンボルのインスタンスをステージに配置し、インスタンス名を付けます。ここでは仮に” mc1 ”とします。
下記のスクリプトをメインのタイムラインのフレームに書き、プレビューしてみてください。
mc1 をクリックすると、(ムービークリップの)フレーム2に描かれている赤い丸が表示され、そのマウスボタンを離すとフレーム1の絵である青い丸に戻り、←と→キーで左右に動く・・・という、単純な動作のスクリプトです。
(↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)
/*クリックで絵を切り替え、離した時に元に戻す*/
mc1.onPress = function()
{
this.gotoAndStop( 2 );
};
mc1.onRelease = function()
{
this.gotoAndStop( 1 );
};
/*方向キーで移動*/
mc1.onEnterFrame = function()
{
var spd = 5;
//← →キーで左右に移動
if( Key.isDown( Key.LEFT ) )
{
this._x -= spd;
}
if( Key.isDown( Key.RIGHT ) )
{
this._x += spd;
}
};
「キーボードショートカットを無効」にチェックを入れた時は、mc1 をクリックしながら←または→キーを押しても青(=フレーム1の絵)には戻らず、位置だけが変化します。
しかし、「キーボードショートカットを無効」のチェックが外れている時は、mc1 をクリックしている間に何かキーを押すと勝手に青に戻ってしまいます。
パブリッシュしてスタンドアロンプレイヤーかブラウザで見ると、ショートカットを無効にした時と同じ動作になります。
つまり、キーボード操作により release イベントが勝手に発生するのは、単にプレビュー時にキーボードショートカットが有効になっていることが原因と思われます。
上記の例はフレームを切り替える動作でしたが。
例えば、フラグを用意して、press イベント発生時に true 、release イベント発生時に false に書き換えるようにします。
あとはこのフラグの値を if 文で判別すれば、「マウスのボタンが押されている」という状態を検出できます。
---------------------------------------------------------------
press 等のボタンイベントを利用するムービークリップは、「選択できる、いわゆるボタン同様のオブジェクト」ということで、キーボードでも選択できるようになるなど様々な意味で特別な存在になります。
Flash で作るメニュー画面やリストなどでは、キーボードでもボタンを操作できた方が便利です。
しかし、ゲームのように操作方法を制限したい場合は、ムービークリップがボタンオブジェクトになっていると思わぬところで意図しないイベントが発生してしまい、妙な不具合の原因になることがあります。
単純にマウスボタンが押されているかどうかを判断したいだけなら、press と release よりも mouseDown と mouseUp イベントの方がオススメです。
mouseDown と mouseUp はボタンイベントではないので、これらを利用するムービークリップはボタンオブジェクト扱いにはなりません。
mouseDown と mouseUp はムービークリップのイベントですが、press とは違い、そのムービークリップの上でマウスのボタンが押されていなくても発生します。
Flash Player 6 以降であれば、_root.onMouseDown = function・・・という書き方で _root の mouseDown / Up イベントを借りることができますから、マウス操作を検出するためだけのムービークリップを隠しておく必要もなくなります。
他にも、マウス関連の処理を専門に担当する Mouse クラス( Flash MX ではオブジェクト)もあります。
ムービークリップと同様に onMouseDown や onMouseUp というイベントハンドラがあり、機能や使い方はよく似てます。
機会がありましたら研究してみてください。
・ Flash ドキュメンテーション: Mouse クラス
http://livedocs.adobe.com/flash/8_jp/main/000024 …
おお!そうだったんですか!
てっきりプログラムのエラーかと思っていたのですが、そういう仕様の問題だとは少しも考えていませんでした。
この回答をもらわなければ危うくあと何時間もこの問題に悩まされるところでした。
本当に感謝いたします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリック押下中にキーボードを...
-
「ボタンロールオーバー時のイ...
-
オブジェクトの重なり順の変更
-
failbit | badbit
-
VBAで改行の入ったデータの正規...
-
全てのテキストボックスをセル...
-
GlobalLock(HANDLE)をする時
-
static関数がmapファイルに載ら...
-
VBAユーザーホームテキストボッ...
-
python ボタンを押すと複数の関...
-
ADに参加していないPCからADサ...
-
pdfのテキスト全文コピー、テキ...
-
Excel VBA によるマウス操作
-
Simulinkのサブシステムの完全...
-
UWSCのBTN関数について。
-
jtextareaでの文字化け
-
else if文の順序を変えることに...
-
「Me」を「Form1」にするとエラ...
-
C言語でネットワーク範囲のIPア...
-
マウス自体の移動量の取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
arduino プログラムについて
-
マウスオーバーで色が薄くなる...
-
×ボタンを無効化したいのですが...
-
フラッシュ中に表示されるスク...
-
[Start]を押すと始まるFlas...
-
マウスを押している間繰り返す
-
こういう事をしたいのですが
-
ボタンから一つ上の階層のムー...
-
ボタンをクリックして画面遷移...
-
ボタンの上にカーソルを置いた...
-
VBAで改行の入ったデータの正規...
-
photoshopで書いた四角の枠の中...
-
python ボタンを押すと複数の関...
-
マウス自体の移動量の取得
-
VBScriptでMsgBoxのYesNoボック...
-
テキストボックスにセルの値を...
-
変数に256文字以上のテキストを...
-
テキストボックスの中身をリセ...
-
全てのテキストボックスをセル...
-
IP Address 入力フォームについて
おすすめ情報