Cocos2d-xの研究ノート(11.7)RepeatForeverを繰り返し

1.メンバ変数

繰り返す:

    符号なし整数_times; //パラメータを作成し
    、符号なし整数_Totalを; //実行の数
     フロート_nextDt、合計時間の// startWithTarget計算、現在の時間、すべてのアクションが実行割合、必要に応じて次のターンを繰り返しスケジュール 
     BOOL _actionInstantを。 //アクションかどうかを瞬時に決意作成
    FiniteTimeActionは //パラメータを作成し、* _innerAction

RepeatForever:

    ActionInterval * _innerAction; //パラメータを作成します。

2.作成

繰り返します::(FiniteTimeAction *アクション、未署名の作成int型回)
RepeatForeverを::(ActionInterval作成 *アクション)

繰り返す:

変数代入パラメータの2人のメンバーの後にアクションが瞬時動作であるかどうかを決定します。

ActionInterval :: initWithDuration(D)//動作周波数と長い操作* 
はdynamic_cast = <ActionInstant *>(アクション)の_actionInstant?trueにfalseに
_Total = 0;

RepeatForever:アクションパラメータセット変数。

ターゲット3.開始

繰り返す:

    = _Total 0 ; 
    _nextDt = _innerAction-> getDuration()/ _duration; //合計時間アクションの割合
    ActionInterval :: startWithTarget(ターゲット); 
    _innerAction - > startWithTarget(ターゲット)

RepeatForever:

    ActionInterval :: startWithTarget(ターゲット)。
    _innerAction - > startWithTarget(ターゲット)

4.更新

なし更新方法RepeatForever。各フレームは、RepeatForeverステップ方法は、アクションステップを呼び出します。

繰り返す:

現在の進行状況は、次の繰り返しにトリガを進行されていない場合は簡単に言えば、この未完成の更新を続けます。この繰り返しの実装を完了するために最初に次の繰り返しの進行状況を、トリガするには、次のアクションを初期化し、次の繰り返しで進展をトリガするように計算することです繰り返します。合計回数は、現在の動作を停止する場合、そうでなければアクションの更新を行います。

ボイド繰り返し::更新(フロートDT)
{ 
    IF(DT> = _nextDt)// 現在の進捗次繰り返しトリガ進行到達する
    {
         一方(DT> = _nextDt && _Total <_times)//の到着時刻を繰り返しトリガ進歩と実行回数ない循環を入力する必要が
        {
             IF((sendUpdateEventToScript(!1.0F 、_innerAction)))
                _innerAction - >アップデート(1.0F); // 実行アクション 
            _Total ++; // うまく行って、1の数

            _innerAction - > STOP() ; 
            _innerAction - > startWithTarget(_target); //再初期化アクション 
            _nextDt = _innerAction-> getDuration()/ * _ DURATION(_Total + 1。); // 繰り返しの新しいスケジュールを起動するように設定
        } 

// ...
 
        IF(!_ActionInstant)// 瞬間アクションすることはできません
        {
             IF(_Total _times ==)// 制約の総数に達し
            {
 
                _innerAction-> STOP(); 
            } 
            
            { 
                IF!((sendUpdateEventToScript(DT - (_nextDt - _innerAction-> getDuration()/ _duration)、_innerAction)))
                    _innerAction - >更新(DT - (_nextDt - _innerAction-> getDuration()/_duration)); //実行
            } 
        } 
    } 
     // 一度アクションのこの繰り返し実施し続けることを繰り返して、次のトリガに進まない
    {
         IF((sendUpdateEventToScript(fmodf(DT * _times ,! 1.0F )))、_innerActionを)
            _innerAction - >更新(fmodf(DT * _times、1.0F)); // 現在の繰り返しの進行のためのパラメータ
    } 
}

 

おすすめ

転載: www.cnblogs.com/deepcho/p/cocos2dx-action-repeatforever-repeat.html