可変数のパラメーターを関数に渡す際に問題が発生しました。
-(void)addCharacterToScene:(NSString *)name withFrames:(CCSpriteFrame*)frames,... {
va_list args;
va_start(args, frames);
id arg = va_arg(args,CCSpriteFrame*);
int i=1;
while (arg) {
NSString *frame_name = [NSString stringWithFormat:@"%@_%i",name,i];
NSLog(@"%@ \n%@",frame_name, arg);
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFrame:arg name:frame_name];
arg = va_arg(args,CCSpriteFrame*);
i++;
}
va_end(args);
}
問題は、関数が最初の引数をスキップすることです。関数の呼び出しは次のようになります。
[self addCharacterToScene:@"wiz" withFrames:wizardFrame1,wizardFrame2,wizardFrame3,nil];
最初の位置にダミーオブジェクトを渡すことができ、それによって目的の結果が得られますが、より良い解決策が必要です。ありがとう!