On Mon, Jul 6, 2009 at 2:22 PM, portaldev <[email protected]> wrote:

>
> Hi,
>  I am trying to move a sprite around the screen using the cursor
> keys, my code is below (its very basic)
>
> Is there a better way than using "self.sprite.stop()" to stop the
> sprite moving?
>
> I tried a few ways mentioned on this forum but I cannot get them to
> work, such as:
>
>   self.sprite.remove_action( self.action )
>
> I am very new to python programming so any advice appreciated
>
> Thanks.
>
>
>
> #!/usr/bin/python
>
> import sys
> import os
> import cocos
> from cocos.actions import *
>
> class CarScene(cocos.layer.ColorLayer):
>
>        KEY_UP = 65362
>        KEY_DOWN = 65364
>        KEY_LEFT = 65361
>        KEY_RIGHT = 65363
>        KEY_LEFT_CTRL = 65507
>
>        is_event_handler = True
>
>        def __init__(self):
>                # background color
>                super( CarScene, self ).__init__(64,64,224,255)
>
>                # show car
>                self.sprite = cocos.sprite.Sprite('car.png')
>                self.sprite.position = 320, 240
>                self.add( self.sprite )
>
>
>        def on_key_press (self, key, modifiers):
>
>                if key == self.KEY_LEFT:
>                        print( "move left" )
>                        self.action = Repeat( MoveBy( (-1, 0), 0.01) )
>
>                elif key == self.KEY_RIGHT:
>                        print( "move right" )
>                        self.action = Repeat( MoveBy( (+1, 0), 0.01) )
>
>                elif key == self.KEY_UP:
>                        print( "move up" )
>                        self.action = Repeat( MoveBy( (0, +1), 0.01) )
>
>                elif key == self.KEY_DOWN:
>                        print( "move down" )
>                        self.action = Repeat( MoveBy( (0, -1), 0.01) )
>
>                elif key == self.KEY_LEFT_CTRL:
>                        print( "start fire" )
>
>                else:
>                        print( "key_press = " + str(key) )
>
>                self.sprite.do( self.action )
>
>
>
>        def on_key_release (self, key, modifiers):
>
>                if key == self.KEY_LEFT:
>                        print( "stop moving left" )
>
>                elif key == self.KEY_RIGHT:
>                        print( "stop moving right" )
>
>                elif key == self.KEY_UP:
>                        print( "stop moving up" )
>
>                elif key == self.KEY_DOWN:
>                        print( "stop moving down" )
>
>                elif key == self.KEY_LEFT_CTRL:
>                        print( "stop fire" )
>
>                else:
>                        print( "key_press = " + str(key) )
>
>                self.sprite.stop()
>
>
> if __name__ == "__main__":
>        cocos.director.director.init()
>        cocos.director.director.run( cocos.scene.Scene( CarScene() ) )
>

 I would use actions only for things with zero interaction, like decorative
birds flying in the sky.

For player ( control interaction, colision interaction), monsters ( IA
controls, collision interactions ), my preference goes with having an
.update(self,dt) method in each actor.

The atachement shows something similar, albeit for brevity I left the update
in the layer, not in the actor ( sorry for not posting directly, gmail will
eat indentation in cut and paste).

Take note that at the moment .remove_action(action) is broken.

--
Claudio

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"cocos2d discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cocos-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Attachment: bad_move2.py
Description: Binary data

Reply via email to