tutorial spritekit que ios sprite-kit skscene skview

ios - tutorial - spritekit que es



iPhone 5s SpriteKit dibujo rarezas (1)

Entiendo que el iPhone 5s tiene una resolución de píxel de 640 x 1136 y una resolución de punto de 320 x 568 (para compatibilidad con dispositivos que no son Retina).

El problema / confusión / rareza parece entrar cuando estoy trabajando con SpriteKit. Ejemplo:

Estoy dibujando una línea desde la esquina inferior izquierda (0, 0) hasta la esquina superior derecha (ancho, alto). El resultado fue que la línea se dibujó casi a la mitad. Y, de hecho, cuando imprimo el tamaño de la pantalla, debería ser de 320 x 568. Así que decidí dibujar desde (0, 0) a (ancho * 2, alto * 2). Y por supuesto, esto imprimió 640 x 1136.

Entonces la rareza es esta: aunque estoy dibujando desde lo que debería ser una línea diagonal de esquina a esquina, no es, en realidad, dibujado de esquina a esquina.

Notas:

- I''m getting the width & height values from self.value.frame.size. - The diagonal line seems to draw just fine using any of the iPad simulators.

Alguna idea de lo que está pasando aquí?


De todos modos aquí es cómo obtuve buenos resultados:

Simplemente abre un nuevo proyecto y prueba esto:

En su GameViewContrller en lugar de usar viewDidLoad use viewWillLayoutSubviews .

EDITAR: Aquí hay una buena explicación de Rob Mayoff sobre métodos como viewDidLoad y viewWillLayoutSubviews .

- (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; // Configure the view. SKView * skView = (SKView *)self.view; skView.showsFPS = YES; skView.showsNodeCount = YES; /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = YES; // Create and configure the scene. if(!skView.scene){ GameScene *scene = [GameScene sceneWithSize:skView.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill; // Present the scene. [skView presentScene:scene]; } }

Entonces, ahora en tu método didMoveToView en la clase de escena, solo dibuja una línea:

SKShapeNode *yourline = [SKShapeNode node]; CGMutablePathRef pathToDraw = CGPathCreateMutable(); CGPathMoveToPoint(pathToDraw, NULL, 0.0, 0.0); CGPathAddLineToPoint(pathToDraw, NULL, self.frame.size.width,self.frame.size.height); yourline.path = pathToDraw; [yourline setStrokeColor:[UIColor redColor]]; [self addChild:yourline]; CGPathRelease(pathToDraw);

Lea esto sobre init vs didMoveToView (lea los comentarios publicados por LearnCocos2D).

Así que esto es más o menos, y espero que ayude.