我需要在applescript中设置两个自变量并检查它们是否都出现

时间:2012-06-07 21:30:39

标签: triggers controller applescript

我正在使用名为“MidiPipe”的程序来使用midi控制器触发我的Mac上的操作。

基本上我需要发生的是当我同时按下midi控制器上的两个键时,我需要一个动作才会发生,但是这些消息是分开进行的。我需要将一条消息设置为变量,然后将其设置为侧检查是否有其他消息,然后检查它们是否是正确的消息组合。如果是,我需要采取行动。这是我的Alist的图像,当我按下键21和24时,它基本上是我的midi控制器的输入。此外,这里是我目前没有的代码。

http://pastebin.com/sD7vxVpg

http://i.imgur.com/EQTB7.png

感谢您阅读

〜弗兰克

2 个答案:

答案 0 :(得分:0)

就像这样:

property lastSecondItemis21 : false --item 2 of last message 

on runme(message)
    if (item 1 of message = 144) and (item 2 of message = 21) and (item 3 of message > 0) then
        set lastSecondItemis21 to true
    else if lastSecondItemis21 then
        set lastSecondItemis21 to false
        if (item 1 of message = 144) and (item 2 of message = 24) and (item 3 of message > 0) then
            --<do action>
        end if
    end if
end runme

答案 1 :(得分:0)

这是给你的一个想法。我们将创建一个保持开放的AppleScript应用程序。此应用程序将一直运行。这个例子有两个你可以使用的变量,key1和key2。每当我要求应用程序“运行”时,它会告诉我两个变量的状态......在这种情况下,它们是否有值。

因此,要尝试此示例,您需要做的第一件事是将此代码保存为保持打开的应用程序。我打电话给我的应用程序“stayOpenApp”。

property key1 : missing value
property key2 : missing value

on run
    if key1 is not missing value and key2 is not missing value then
        set theMessage to "Both keys have values."
    else if key1 is not missing value then
        set theMessage to "Only key 1 has a value."
    else if key2 is not missing value then
        set theMessage to "Only key 2 has a value."
    else
        set theMessage to "Neither key has a value."
    end if

    tell me to activate
    display dialog theMessage
end run

on quit
    -- reset the variables before quitting
    set key1 to missing value
    set key2 to missing value
    continue quit
end quit

on runMe()
    tell me to run
end runMe

on setKey1(theValue)
    set key1 to theValue
end setKey1

on getKey1()
    return key1
end getKey1

on setKey2(theValue)
    set key2 to theValue
end setKey2

on getKey2()
    return key2
end getKey2

您会注意到它有2个变量作为属性。脚本的底部是每个变量的getter和setter。这允许外部AppleScript获取变量的值或设置变量的值。要按照此示例创建以下单独的AppleScript并运行它...

tell application "stayOpenApp" to launch

该代码将启动stayOpenApp。现在我们可以随时运行此代码以使stayOpenApp告诉我们变量的状态......

tell application "stayOpenApp" to runMe()

如果在某些时候我们想要改变变量的状态,我们可以使用它......

tell application "stayOpenApp" to setKey1(1)

现在,如果您再次使用runMe()检查变量的状态,您会注意到更改。

因此,使用这些技术,您可以使用一种方法将信息传递给正在运行的AppleScript的变量,并检查变量的状态。我希望这能为您提供一些如何解决问题的想法。祝你好运。