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.