読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【cocos2d】scheduleOnceで失敗。本当に1回しか呼べない

cocos2d

今日のハマりポイント第2弾はscheduleOnceです。
セレクターをscheduleOnceでスケジュールして、そのセレクターの中で別の時間を設定してscheduleOnceを再スケジュールするというような使い方を考えていましたがダメでした。

例:

  • (id) init

{
....
[self scheduleOnce:@selector(func) delay:5.0];
}

  • (void)func

{
....
[self scheduleOnce:@selector(func) delay:newdelay];
}

funcは最初の1回だけ呼ばれますが、2度と呼ばれません。unscheduleで一旦止めてもダメでした。
scheduleOnceを使うのはあきらめてscheduleを使い、一旦unscheduleしてから別のinterval値をセットすることでで解決しました。

例:

  • (id) init

{
....
[self schedule:@selector(func) interval:5.0];
}

  • (void)func

{
....
[self unschedule:@selector(func);
[self schedule:@selector(func) interval:newdelay];
}