İyi günler,Neden() içinde bir Eylem çalıştırılıyor() uygulamayı çöker?
senaryo bu, ben 3 sprite var ve güncelleme() içinde dizisini kullanarak onlara eylemleri yürütmek istiyoruz. Hareketlendiricinin yine de eylemi yürütmesi durumunda yeni bir işlem gerçekleşmez, ancak eylemi yürütürse, yeni bir eylem oluşturur ve sonra yürütür.
Kontrol için .isDone() kullanıyorum. okunabilir olması için
-Legend: Burada
sözde kodu SampleSprite - Bu sprites dizi olduğunu varsayarak. isStillOnAction - boolean, true şu anda eylem gerçekleştiriyorsa, yanlış eğer değilse. - 2-5 DAN RASTGELE SAYI 5.
for(int ctr = 0; ctr < 3; ctr++){
if(!SpriteSample[ctr].isStillOnAction) // not currently executing action, so we can now assign an action
{
SampleSprite[ctr].isStillOnAction = true; // the isStillOnAction boolean is changed to true
if(SampleSprite[ctr].facingDirection == 1)
{
SampleSprite[ctr].moveAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(0, 100));
SampleSprite[ctr].stoppingAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(10, 0));
}
else if(SampleSprite[ctr].facingDirection == 2)
{
SampleSprite[ctr].moveAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(0, -100));
SampleSprite[ctr].stoppingAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(10, 0));
}
else if(SampleSprite[ctr].facingDirection == 3)
{
SampleSprite[ctr].moveAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(-100, 0));
SampleSprite[ctr].stoppingAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(0,10));
}
else if(SampleSprite[ctr].facingDirection == 4)
{
SampleSprite[ctr].moveAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(100, 0));
SampleSprite[ctr].stoppingAction = cocos2d::MoveBy::create(RANDOM NUMBER FROM 2-5, cocos2d::Vec2(0, 10));
}
SampleSprite[ctr].moveStopAction = cocos2d::Sequence::create(SampleSprite[ctr].moveAction, SampleSprite[ctr].stoppingAction, nullptr);
SampleSprite[ctr].characterSprite->runAction(SampleSprite[ctr].moveStopAction);
}
else // currently executing action
{
if(SampleSprite[ctr].moveStopAction->isDone()) // check if done executing action
{
SampleSprite[ctr].isStillOnAction = false;
}
}}
Sonuç 2'den rastgele bir sayıdır: Bu dizi eylem çalışır ancak sonra çöker donar sonra .
Gözardı ettiğim olası sorun nedir?
app çökme olmaz planlanmış bir işlevi içinde
Teşekkür? – nightrobin
'Action :: setCallbackFunc'? @nightrobin – Zen