AS3マウスダウンを押したままにして速度/パワーを上げます
-
29-10-2019 - |
質問
これが私が達成しようとしていることです;
ムービークリップ(cannon_mc)をクリックすると ショットが発射されています(ball_mc)
マウスを下に置く時間が長いほど、ボールが発射される速度が速くなります。 あなたへの私の質問は;
これを達成するための最も効率的な方法は何ですか? タイマーかこのようなもので; ジェネラコディセタグプレ
解決
MOUSE_DOWNイベントは1回だけ発生します。必要な効果を得るには、MOUSE_DOWNイベントハンドラーとMOUSE_UPイベントハンドラーの組み合わせが必要です。
MOUSE_DOWNイベントで、flash.utils.getTimer()
からの現在のタイムスタンプとともに変数をtrueに設定できます
次に、MOUSE_UPで、MOUSE_DOWNに設定した変数がtrueの場合、経過時間を計算し、それに応じて電力を設定します。
例: ジェネラコディセタグプレ
ENTER_FRAMEイベントを追加して、視覚効果のためにパワーゲージなどをアニメーション化することもできます
更新
The_asManが指摘しているように、マウスをステージの外にドラッグして離しても、MOUSE_UP
イベントは発生しません。このケースを処理するには、buttonReleased関数のコピーとしてコールバックを使用して、MOUSE_LEAVE
イベントのイベントリスナーを追加しますが、これはEventオブジェクトを取ります:
ジェネラコディセタグプレ
他のヒント
(非常に短い擬似コードで)
いくつかのイベントハンドラーを作成します:
- onMouseDown:フラグ
_mouseDown
を設定し、power
をゼロに設定します - onFrame:
if (_mouseDown) power++;
- onMouseUp:フラグ
_mouseDown
をクリアし、蓄積されたpower
でボールを発射しますフレームレートに依存しないバージョン:
- onMouseDown:
_loadStart = getTimer(); _mouseDown = true; _power = 0;
- onFrame:
if (_mouseDown) delta = getTimer() - _loadStart; _power += delta;
- onMouseUp:
_power
、_mouseDown = false;
でボールを撃った
- onMouseDown:
所属していません StackOverflow