Building a scene, object instantiation omitted
# a scene with 2 layers; the background would be seen behind the game layer because of z values scene.add( background_layer, z=0 ) scene.add( game_layer, z=1 ) # the layer with 1 bloody pacman sprite blody_pacman_sprite.position = (100, 100) game_layer.add( bloody_pacman_sprite ) # the bloody pacman has two daggers !!! sprite.add( dagger_far_sprite, z=-1 ) sprite.add( dagger_near_sprite, z=1 ) # the draw order is dagger_far, bloody_pacman, dagger_near # also they are zombie alien cowboys in the game, # so we add a bunch of them to the game_layer ...
A dagger has touched a zombie alien cowboy so it wants to spawn a nasty blotch of green blood. We could add the blotch_sprite to the zac_sprite, an then the blotch will follow the zombie:
zac_zprite.add(blotch_sprite, z = 1)
or we could add to the game_layer, and the blotch will not follow the zombie:
layer = zac_sprite.parent # should be game_layer, because our staggering
layer.add(blotch_sprite)
If for some ridiculous reason a dagger needs to grab a reference to the game_layer we could use 'get_ancestor'. Due to to way we staged the scene, we know game_layer is parent of bloody_pacman_sprite which is parent of the dagger. So:
layer = dagger_near.get_ancestor(Layer)
should produce game_layer.
A zombie is killed, we can retire from the scene with:
zac_sprite.kill()
or with:
game_layer.remove(zac_sprite)
or if we named it "T'chkss" when we added to the game_layer, like in:
game_layer.add(zac_sprite, name = "T'chkss", z=4)
then we can retire it with:
game_layer.remove("T'chkss")
Note that in current cocos if you add with name then you should remove by name, else the name will become unusable for new additions.
Example:
# place the sprite in 320,240
sprite.position = (320,240)
or by using actions. Example:
# move the sprite to 320,240 in 5 seconds
sprite.do( MoveTo( (320,240, duration=2 ) )
You can modify attributes to any CocosNode object. By example:
scene.do( ScaleTo(2, duration=2) ) layer.do( RotateBy(360, duration=3) ) sprite.do( Blink(5, duration=1 ) ) label.do( JumpBy( (100,100), 50, 5, duration=3) )