变量结果未定义AppleScript

时间:2014-05-07 13:44:52

标签: macos applescript

我正在处理我在第一个问题中提到的相同应用。我已经走得更远了,但是当我试着玩#34; 2048" AppleScript第一次给我错误:

"The variable result is not defined"

我将跳过应用程序的主要庞大的主体并带着问题到达该区域:

display dialog "What would you like to do?
    Sleep = Go to sleep
    Finder = Open Finder
    Time = Display current time and date
    2048 = play 2048
    Quit = Quit application" default answer "" with title "Control panel"
if the text returned of the result is "Sleep" then
    tell application "System Events" to sleep
    display dialog "Hello, welcome back!" buttons {"Thank you!"} default button 1
    return
else if the text returned of the result is "Finder" then
    tell application "Finder" to make new Finder window
else if the text returned of the result is "Time" then
    set a to (current date) as list
    set AppleScript's text item delimiters to linefeed
    set a to a as text
    display dialog a buttons {"OK"} default button 1
else if the text returned of the result is "Quit" then
    return
else if the text returned of the result is "2048" then
    tell application "Terminal"
            do script "/Users/student/Documents/2048.sh"
            activate
    end tell
else
    display dialog "Invalid response" with title "Invalid response" buttons {"Go back", "Quit"} default button 1
end if
if the button returned of the result is "Go back" then
    display dialog "What would you like to do?
    Sleep = Go to sleep
    Finder = Open Finder
    Time = Display current time and date
    2048 = play 2048
    Quit = Quit application" default answer "" with title "Control panel"
else
    return
end if
if the text returned of the result is "Sleep" then
    tell application "System Events" to sleep
    display dialog "Hello, welcome back!" buttons {"Thank you!"} default button 1
    return
else if the text returned of the result is "Finder" then
    tell application "Finder" to make new Finder window
else if the text returned of the result is "Time" then
    set a to (current date) as list
    set AppleScript's text item delimiters to linefeed
    set a to a as text
    display dialog a buttons {"OK"} default button 1
else if the text returned of the result is "Quit" then
    return
else if the text returned of the result is "2048" then
    tell application "Terminal"
            do script "/Users/student/Documents/2048.sh"
            activate
    end tell
end if

1 个答案:

答案 0 :(得分:0)

只需将显示对话框的结果设置为变量并使用该变量即可。使用"结果"它很棘手就像你在很多if语句中一样。其中一个必然会导致问题,因为"结果"会在某些时候改变。

在显示对话框声明后立即执行此类操作...

set {buttonReturned, textReturned} to {button returned of result, text returned of result}

然后在你的if语句中使用buttonReturned或textReturned。