質問

これが私が達成しようとしていることです;

ムービークリップ(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;でボールを撃った
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top