Pythonista中Node.remove_action用法及停止节点指定动作的实现方法
Node.remove_action 正确使用方法
核心逻辑:要移除单个指定动作,必须在调用run_action()执行动作时为该动作绑定唯一标识key,后续通过key匹配移除对应动作。
报错原因说明
- 你调用的
remove_actions()方法不存在,Node节点移除全部动作的API是remove_all_actions(),方法名拼写错误触发了属性不存在的报错 - 移除单个动作的API是
remove_action(key),必须传入动作绑定的key参数才能生效
停止指定动作的实现方案
- 执行动作时指定唯一key
# 给移动动作绑定key为"move_action" self.node.run_action(A.move_to(0,0,10), key="move_action")
- 需要停止时传入对应key调用移除方法
self.node.remove_action("move_action")
修改后的完整测试代码
import sound import random import math A = Action class MyScene (Scene): def setup(self): self.node = SpriteNode('emj:Alien',parent=self,position=(self.size.w,self.size.h)) # 运行动作时指定唯一key self.node.run_action(A.move_to(0,0,10), key="alien_move") def did_change_size(self): pass def update(self): pass def touch_began(self, touch): # 传入对应key停止指定动作 self.node.remove_action("alien_move") def touch_moved(self, touch): pass def touch_ended(self, touch): pass if __name__ == '__main__': run(MyScene(), show_fps=False)
补充说明
- 同一个key如果绑定新动作,会自动覆盖旧的同key动作,旧动作会直接停止
- 如果传入的key没有对应正在运行的动作,调用
remove_action()不会产生任何效果,也不会报错
内容的提问来源于stack exchange,提问作者Rog Kil
相关产品推荐
相关产品推荐

