On Mon, Jun 21, 2010 at 6:37 PM, karanveer singh <[email protected]>wrote:

> Ok, so I did the following :
>
> class Check(cocos.actions.Action):
>
>    def step(self, dt):
>        cell = test_layer.get_at_pixel(self.target.x, self.target.y)
>        if(len(cell.properties) is not 0):
>            if(cell.properties["block"] == True):
>                self._done = True
>
>    def stop(self):
>        print "stopped"
>
> and i call it using the following in the sprite class:
>
> action = JumpBy( (200,0), 300, 1, duration=3) | Check()
> self.do(action)
>
> However, although it prints "stopped" when the sprite collides with
> the cell, it doesnt stop the action. It just print "stopped" 5 times
> and continues with the whole jump.
>
>


 1) Your custom class Check should be calling the baseclass so that the
cocosnode.step can run detect the action Check terminates, something like:

def stop(self):
    print 'stopped'
    res = super(Check,self).stop()
    return res

2) With the actual code you will be stopping only the Check part; you want
to stop the composite action.
I'm in a hurry here, so I only will give some fast hints:

a) if you do
 action = JumpBy( (200,0), 300, 1, duration=3) | Check()
 worker_action = self.do(action)

then you can stop the composite by
sprite.remove_action(worker_action)

b) You can arrange your Check.stop to use a) to stop the action.

Yes, that is not elegant. The interesting thing probably being...
Sorry, must go.
Tomorrow late I will be online again.

--
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.

Reply via email to