2017-12-19 21 views
0

私は移動しているアイテムを持っているcocos2d-x-3.15.1のゲームを持っています。私は、アクションが完了したときに呼ばれるコールバックを取得したい。 これに対して、私は以下のコード構造を使用しました。ココス対象のアクションのコールバックを取得する方法

TargetedAction* const targetedAction = TargetedAction::create(item, action); 
    CallFunc* const dispatchEvent = CallFunc::create([this]() 
                  { 
                   _eventDispatcher->dispatchCustomEvent(EVENT); 
                  }); 
    auto itemsMoveAction = Sequence::createWithTwoActions(targetedAction, dispatchEvent); 
    runAction(itemsMoveAction); 

しかし、私のコードは、時々、正しい実行に失敗し、私はそれが完了するまでに失敗したこの https://github.com/cocos2d/cocos2d-x/issues/18046シーケンスのbecouseである疑いがあります。 #18046のバグ。 Sequenceを使用せずに同じ機能を実行するにはどうすればよいですか?

編集: 私はこの問題を回避する

ActionEase* const action = MoveTo::create(timeToStop, destinationPoint); 
item->runAction(action); 
CallFunc* const dispatchEvent = CallFunc::create([this]() 
                 { 
                  _eventDispatcher->dispatchCustomEvent(EVENT); 
                 }); 
auto delayAction = Sequence::createWithTwoActions(DelayTime::create(timeToStop), dispatchEvent); 
runAction(delayAction); 

を適用している私は完全にシーケンスを使用しないようにしたかったが、方法がないようです。私は完全にシーケンスを使用して避けたかった

答えて

0

//デモ

auto move = MoveBy::create(3, Vec2(VisibleRect::right().x-130,0)); 
auto move_back = move->reverse();  
auto delay = DelayTime::create(0.25f); 
auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); 
auto a2 = _grossini->runAction(RepeatForever::create(seq1)); 

a2->setTag(1); 
+0

。 –

関連する問題