iphone - studio - cocos2d python
Cómo dibujar una línea con Cocos2d-iPhone (3)
Estoy tratando de familiarizarme con Cocos2d tratando de lograr cosas simples. En este punto, tengo una escena, esa escena tiene un sprite de fondo y una capa. Estoy tratando de dibujar en la capa usando drawLine. Aquí está mi intento actual.
@implementation MyLayer
-(id)init{
self = [super init];
if(self != nil){
glColor4f(0.8, 1.0, 0.76, 1.0);
glLineWidth(2.0f);
CocosNode *line = drawLine(10.0f, 100.0f,400.0f,27.0f);
[self addChild:line z:1];
}
return self;
}
@end
Lo que genera el error "no se ignora el valor nulo como debería ser". Así que obviamente lo estoy haciendo mal, pero espero que puedas ver mi razonamiento.
También he intentado esto
-(id)init{
self = [super init];
if(self != nil){
glColor4f(0.8, 1.0, 0.76, 1.0);
glLineWidth(2.0f);
drawLine(10.0f, 100.0f,400.0f,27.0f);
}
return self;
}
Lo que no me da un error, pero tampoco funciona. Me doy cuenta de que no estoy entendiendo algo fundamental, pero ¿puede alguien dirigirme en la dirección correcta?
Desde el cocos2d drawPrimitivesTest.m :
- (void)draw {
// ...
// draw a simple line
// The default state is:
// Line Width: 1
// color: 255,255,255,255 (white, non-transparent)
// Anti-Aliased
glEnable(GL_LINE_SMOOTH);
ccDrawLine( ccp(0, 0), ccp(s.width, s.height) );
// ...
}
Ok, lo descubrí para cualquiera que esté interesado. Aquí está el código con el comentario que explica qué hacer.
@implementation GameLayer
-(id)init{
self = [super init];
if(self != nil){
// init stuff here
}
return self;
}
// You have to over-ride this method
-(void)draw{
glColor4f(0.8, 1.0, 0.76, 1.0);
glLineWidth(2.0f);
drawLine(10,100,50,79);
}
@end
Así que supongo, el método de dibujo se llama en cada fotograma.
También puede usar la clase CCRibbon para dibujar una línea con su textura. Aquí hay un ejemplo:
Primero crea un CCRibbon con los parámetros de ancho, imagen, longitud, color y fundido
ccColor4B myColor = ccc4(255, 255, 255, 150);
CCRibbon *ribbon = [CCRibbon ribbonWithWidth:10 image:@"green.png" length:10.0 color:myColor fade:0.7f];
Luego lo agregamos de niño:
[self addChild:ribbon z:8];
Si ejecuta la aplicación ahora, no verá nada porque aún no agregó ningún punto al CCRibbon, así que agregue 2 puntos
[ribbon addPointAt:ccp(10,10) width:10];
[ribbon addPointAt:ccp(15,15) width:10];
No puede eliminar puntos individuales, pero puede eliminar el CCRibbon de su padre
[self removeChild:ribbon cleanup:YES];
Código fuente de: http://www.ccsprite.com/cocos2d/using-ccribbon-example.html