이 코드를 사용하여 5 개의 벽돌 행 위에 스폰합니다. 첫 번째 줄은 완벽하고, 위치가 적절하며 적절하게 움직입니다. 그러나 performSelector 액션으로 생성되는 행은 제대로 배치되지 않습니다. 스폰되는 행의 위치는 화면에서 중간에 떨어져 5 개의 벽돌을 산란하는 대신 두 번째로 25를 생성하고 세 번째로 125 개의 벽돌을 생성합니다. 이 프로젝트에서 모든 문제와 조치를 취하기 전에 모든 작업과 방법을 사용했습니다.스프라이트가 올바르게 생성되지 않습니다.
이 코드는 initWithSize 이외의 장면에서 가지고있는 유일한 코드이며 아무런 문제가 발생하지 않습니다.
-(void) addBricks:(CGSize)size {
for (int i = 0; i < 5; i++) {
//create brick sprite from image
SKSpriteNode *brick = [SKSpriteNode spriteNodeWithImageNamed:@"brick"];
//resize bricks
brick.size = CGSizeMake(60, 30);
//psoition bricks
int xPos = size.height/7.5 * (i+.5);
int yPos = 450;
brick.position = CGPointMake(xPos, yPos);
//add move action
SKAction *wait = [SKAction waitForDuration:3];
SKAction *move = [SKAction moveByX:0 y:-36.9 duration:1];
SKAction *sequence = [SKAction sequence:@[wait, move]];
SKAction *repeatMove = [SKAction repeatActionForever:sequence];
//add action to spawn bricks
SKAction *spawn = [SKAction performSelector:@selector(addBricks:) onTarget:(self)];
SKAction *delay = [SKAction waitForDuration:6];
SKAction *delayThenSpawn = [SKAction sequence:@[delay, spawn]];
[self runAction:delayThenSpawn];
[brick runAction:repeatMove];
[self addChild:brick];
}
}
모든 도움을 주시면 감사하겠습니다.
당신은 매개 변수를 전달 할 수 없기 때문에 매개 변수를 사용 선택기로 performSelector 수 없습니다. 액션이 selector를 호출하면 size 매개 변수는 정의되지 않습니다. 운이 좋으면 0,0이지만 그렇지 않다면 쓰레기가 들어 있습니다. 다행히도 매개 변수를 사용하지 않는 것 같습니다. 그러나 일치하지 않는 서명으로 Selector를 수행하는 것은 합법적이지 않습니다. – LearnCocos2D
크기 매개 변수와 y 위치는 전달하지만 x 위치는 전달하지 않습니다. 아마도 정수가 아니기 때문일 수 있습니다. addBricks 메소드 밖에 x 위치를 정의하면 도움이 될까요? @ LearnCocos2D –