Objective-C의 새로운 기능은 없지만이 문제를 파악할 수는 없습니다. 내가 만든 CCSprite의 하위 클래스의 인스턴스를 만들려고하지만 항상 (0,0)에 인스턴스를 만들고 이동하지 못합니다. 레벨 정보를 입력하는 .txt 파일을 구문 분석하도록 코드를 설정 한 다음 해당 정보를 기반으로 스프라이트를 만듭니다. 여기 CCSprite의 서브 클래스 인스턴스를 배치 할 수 없습니다.
스프라이트 초기화 코드이다 :-(void)initLevel{
NSLog(@"Level %i is of length %i", lvlNum, [FileReader getLengthOfLevel:[FileReader getStartOfLevel:lvlNum atPath:lvlPack] atPath:lvlPack]);
CCSprite *spriteToMake;
int start = [FileReader getStartOfLevel:lvlNum atPath:lvlPack];
int length = [FileReader getLengthOfLevel:start atPath:lvlPack];
NSString *tmp = [FileReader getLineFromFile:lvlPack byIndex:start];
NSArray *tmpArray = [tmp componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSMutableArray *tmpArray2 = [tmpArray mutableCopy];
[tmpArray2 removeObject:@""];
requiredLinks = [(NSString*)[tmpArray2 objectAtIndex:2] intValue];
[tmpArray2 release];
for(int i = start + 1; i <= start + length; i++){
NSString *line = [FileReader getLineFromFile:lvlPack byIndex:i];
int x = 0;
int y = 0;
NSArray *temp = [line componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSMutableArray *temp2 = [temp mutableCopy];
[temp2 removeObject:@""];
//Determine the type of sprite
if([(NSString*)[temp2 objectAtIndex:0] isEqualToString:@"Basic_Sprite"]){
spriteToMake = [BasicLink sprite];
}else if([(NSString*)[temp2 objectAtIndex:0] isEqualToString:@"Big_Sprite"]){
spriteToMake = [BasicLink spriteWithFile:@"Big_Link.png"];
}else{
spriteToMake = nil;
}
//Create the sprite
if(spriteToMake != nil){
x = [(NSString*)[temp2 objectAtIndex:1] intValue];
y = [(NSString*)[temp2 objectAtIndex:2] intValue];
spriteToMake.position = ccp(x, y);
NSLog(@"%@", spriteToMake);
[self addChild:spriteToMake];
[spriteToMake setUpdate];
}else{
NSLog(@"Sprite set to NULL");
}
NSLog(@"%i, %i, %i", x, y, [temp2 count]);
[temp2 release];
}
}
을 그리고 여기에 서브 클래스 '헤더입니다 :
@interface BasicLink : CCSprite{
CGPoint position;
CGPoint movement;
int explosionRadius, width, height;
CCScene *sceneIn;
}
@property (assign)CGPoint pos, movement;
@property (assign)int explosionRadius, width, height;
@property (assign)CCScene* sceneIn;
+(CCSprite*)sprite;
+(CCSprite*)spriteAtX:(int)x atY: (int)y;
-(void)die;
-(void)explode;
-(void)updateSprite;
-(CGRect)getBounds;
-(void)setUpdate;
-(void)move:(int)x, int(y);
@end
그리고 여기에 스프라이트 초기화 서브 클래스의 부분 :
@implementation BasicLink
@synthesize position, movement, explosionRadius, sceneIn, width, height;
+(CCSprite*)sprite{
return [BasicLink spriteWithFile:@"Basic_Link.png"];
}
을
도움을 주시면 감사하겠습니다. C에서
-(void)move:(int)x, int(y);
"int (y)"는 오타였습니다. – sciguy1121