Flashでゲームを作成した場合に、ヒットポイントを表示するゲージを扱うことがあるかと思います。
例えばダメージをうけた場合に特定の位置まで
gotoAndStop([フレーム番号]);
でも良いのですが、これだといきなり減ってしまい味気ない感じになってしまいます。
モーショントゥイーンしつつ指定の位置で停止出来ないものかと考えたのですが、_rootに停止位置フラグを置いて各フレームに、
if(_root.[停止位置の変数] == [フレーム番号]){
this.stop();
}
とするのも芸がありません。(100フレームあったとして全てに書くのもバカバカしいですしね)
こういった場合は次のようにするのが良いのではないでしょうか?(AS2.0です)
ステージ上に再生したいサンプルのムービークリップ (インスタンス名:test_mc )とテスト用の再生開始ボタン(インスタンス名:test_button)を配置します。test_mcの1フレーム目にはstop();を記述して再生はストップした状態です。
(ボタンをクリックした場合に25フレーム目まで再生して停止するサンプルスクリプト)
var test_mc_stop = 1;
test_button.onRelease = function(){
test_mc_stop = 25;
test_mc.play();
}
test_mc.onEnterFrame = function(){
if(this._currentframe == test_mc_stop){
this.stop();
}
}
onEnterFrameイベントで、毎フレーム呼び出されて currentframe で現在のフレーム位置をチェック。
予めボタンクリック時にセットされたtest_mc_stopと同じフレーム位置であれば再生を停止します。
AS3.0ではもう少しスマートな方法があるのかもしれませんが・・・・・
最近のコメント