libavg自定义事件手

2024-06-06 04:59:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个嵌入式串行输出中找到一种使用libavg事件处理程序的方法。我的理解是,我需要创建自己的发布程序,当我处理串行命令时,我会调用它。我只需要一种方法来创建10个不同的触发器,给定不同的串行输入。我试图做的一个类比是使用libavg的键盘处理来处理不同的键盘输入。在

我希望自定义发布者采取10个串行输出和传递一个事件.序列号参数对不同的订户类似于什么event.keystring事件做。在

这里有一些非功能代码,我认为这些代码有一些需要做的基本知识。在

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from libavg import avg, statemachine, player

class Test():
    PRESSED = avg.Publisher.genMessageID()
    RELEASED = avg.Publisher.genMessageID()
    def __init__(self, parent=None, **kwargs):
        self.registerInstance(self, parent)
        self.publish(self.PRESSED)
        self.publish(self.RELEASED)
    def isActive(self):
        self.notifySubscribers(Test.PRESSED, [])
    def isInactive(self):
        self.notifySubscribers(Test.RELEASED, [])


def onKeyDown(event):
    global node
    if event.serialid == '1':
        #serialid isn't implemented anywhere but this is what ideally I would like to have happen
        node.color = "FF8000"

def onKeyUp(event):
    global node
    node.color = "FFFFFF" 




player = avg.Player.get()

canvas = player.createMainCanvas(size=(640,480))
rootNode = player.getRootNode()
node = avg.WordsNode(pos=(10,10), font="arial", text="Hello World", parent=rootNode)
vbutton=Test()

node.subscribe(vbutton.PRESSED, onKeyDown)
node.subscribe(vbutton.RELEASED, onKeyUp)


player.play()

来自here的自定义发布服务器示例:

^{pr2}$

Tags: 方法代码testselfeventnodedef事件