Pythonista 3 中的标签节点计时器



我想制作一个带有大重置按钮的计时器,但我不知道如何让标签节点显示计时器的当前值 (n)。

我试图找到答案,但无济于事,任何帮助将不胜感激。

    from scene import *
    import sound
    import random
    import math
    import time
    A = Action
    class MyScene (Scene):
      def setup(self):
       n = 20
       Scene.background_color = 1.0, 1.0, 1.0
       self.button = SpriteNode('IMG_4056.PNG')
       self.button.position = (512, 400)
       self.add_child(self.button)
       self.time = LabelNode(str(n), font = ('courier', 50))
       self.time.position = (512, 100)
       self.add_child(self.time)
       self.life = LabelNode("Life", font = ('courier', 50))
       self.life.position = (512, 700)
       self.add_child(self.life)
       pass

def did_change_size(self):
    pass
def update(self):
    pass
def touch_began(self, touch):
    if touch.location in self.life.bbox:
        n = 20
        while (n >= 0):
            self.time.remove_from_parent()
            self.time = LabelNode(str(n - 1))
            self.add_child(self.time)
            time.sleep(1)
    pass
def touch_moved(self, touch):
    pass
def touch_ended(self, touch):
    pass
    if __name__ == '__main__':
      run(MyScene(), show_fps=True)

这是计时器的示例实现,希望对您有所帮助。

import scene
def custom_action(node, progress):
    ntime = node.parent.duration
    i = ntime - int(ntime*progress)
    if i >= 0:
        node.text = str(i)
class MyScene(scene.Scene):
    def setup(self):
        self.test_label = scene.LabelNode('0',
            position=self.size/2.0, parent=self)
        self.duration = 10
        self.activate_timer_label = scene.LabelNode('Activate Timer',
            position=(self.size[0]/2-100, self.size[1]/2-100),
            parent=self)
        self.stop_timer_label = scene.LabelNode('Stop Timer',
            position=(self.size[0]/2+100, self.size[1]/2-100),
            parent=self)
    def touch_began(self, touch):
        if touch.location in self.stop_timer_label.frame:
            animate_action = scene.Action.call(custom_action, self.duration)
            self.test_label.remove_action('timer_action')
            self.test_label.text = '0'
            return
        if touch.location in self.activate_timer_label.frame:
            timer_action = scene.Action.call(custom_action, self.duration)
            self.test_label.run_action(timer_action, 'timer_action')
scene.run(MyScene())

最新更新