2010-09-11 30 views
1

這又是一個Cocos2D問題。 :-DNSObject中的Cocos2d調度方法

我將我即將開始的遊戲的主要角色創建爲NSObject的子類。這個類有一個Sprite,Spritesheet和所有東西的屬性。但是現在我有以下問題。

我想安排一個動畫精靈的方法。應該每秒安排一次的行動。但是因爲我使用NSObject的子類來保存所有數據,所以我不能使用[self schedule:@selector(action:) interval:1.0]。有另一種方法嗎?我不想使用NSTimer,因爲我不能再用CCDirector來打破遊戲。 如果你能幫助我,那真的很有幫助。 :-D

桑德羅·邁耶

回答

3

很多方法來皮膚貓,但這裏有幾個:

  • 子類CCNode而不是NSObject的,並調用[yourClass時間表:間隔:]
  • 公開內部調用[self.sprite schedule:interval:]的簡化選擇器
  • 外部調用[yourClass.sprite調度:間隔:]
  • 內部調用[self.sprite調度:i nterval:]
+0

非常感謝你。我以第一種方式做到了。但是你的第3和第4種方法不起作用,因爲我想要調度的方法不在CCSprite中。它們在我的NSObject子類中。 ;-) – 2010-09-11 15:42:01

+0

嗯,這只是一個指導原則,因爲我不知道你實際上想要安排什麼。很高興它解決了。 – jtalarico 2010-09-12 05:59:40

+0

好的。不管怎樣,謝謝你。 :-D – 2010-09-12 10:09:41

1
//SomeObject.h 
@interface SomeObject : NSObject 
{ 
} 
-(void) initObject; 
@end  

//SomeObject.m 
#import "cocos2d.h" 
#import "SomeObject.h" 
@implementation SomeObject 

-(id) init 
{ 
    return [super init]; 
} 

-(void) initObject 
{ 
    [[CCScheduler sharedScheduler] scheduleUpdateForTarget:self priority:0 paused:NO]; 
} 

-(void) update:(ccTime) dt 
{ 
} 

-(void) dealloc 
{ 
    [[CCScheduler sharedScheduler] unscheduleUpdateForTarget:self]; 
    [super dealloc]; 
} 
@end 

也期待在這個

[[CCScheduler sharedScheduler] scheduleSelector:@selector(ping) forTarget:self interval:2.f paused:NO]; 

-(void) ping 
{ 
} 
+0

格式化這個。請。 – 2013-07-22 17:25:08

+0

謝謝你的回答。我不再需要它了。但我認爲這裏有這個答案是很好的。 – 2013-08-01 13:52:52