2016-11-07 5 views
0

Здравствуйте, я пытаюсь заставить этот код работать, но после того, как Blurb исполнен, он говорит, что не знает Blob. Поэтому я подумал, что мне просто нужно было положить Blob в начале, но Blob не знает Blurb и так далее. Закажите, если все ответы верны, это Blob, Blurb, Blirb, Blorb, Blarb и финиш.Как это сделать? (applescript)

script finish 
set dialogResult to display dialog ¬ 
    "Can you escape?" buttons "Cool!" 
end script 

script Blarb 
set dialogResult to display dialog ¬ 
    "Can you escape?" buttons {"No", "Yes"} 
if button returned of dialogResult = "Yes" then 
    run script Blob 
end if 
end script 

script Blorb 
set dialogResult to display dialog ¬ 
    "Can you escape?" buttons {"No", "Yes"} 
if button returned of dialogResult = "No" then 
    run script Blob 
else if button returned of dialogResult = "Yes" then 
    run script Blarb 
end if 
end script 

script Blirb 
set dialogResult to display dialog ¬ 
    "Can you escape?" buttons {"No", "Yes"} 
if button returned of dialogResult = "No" then 
    run script Blob 
else if button returned of dialogResult = "Yes" then 
    run script Blorb 
end if 
end script 

script Blurb 
set dialogResult to display dialog ¬ 
    "Can you escape?" buttons {"No", "Yes"} 
if button returned of dialogResult = "Yes" then 
    run script Blob 
else if button returned of dialogResult = "No" then 
    run script Blirb 
end if 
end script 

script Blob 
set Variable to "No" 
repeat while Variable = "No" 
    set dialogResult to display dialog ¬ 
     "Can you escape" buttons {"No", "Yes"} 
    set Variable to button returned of dialogResult 
    if button returned of dialogResult = "Yes" then 
     run script Blurb 
    end if 
end repeat 
end script 



run script Blob --Order if all answers are correct is Blob, Blurb, Blirb, Blorb, Blarb, and finish. 

ответ

0
  1. Общие рекомендации: не используйте run script NAME; run NAME достаточно здесь. (run script создает целый новый экземпляр интерпретатора AS и отправляет скрипт для запуска в нем.) Он также позволит вам увидеть, где именно происходит ошибка.

  2. Проблема заключается в том, что компилятор AppleScript является частью дерьма. Статические имена переменных должны быть объявлены до кода, который их использует, иначе компилятор слишком тупой, чтобы найти и связать их правильно. Если это практично, измените порядок своих объектов сценария, чтобы они были объявлены выше кода, который их использует. Это не сработает, если у вас есть круглые ссылки, где сценарий A означает, что сценарий B и B относится к A. Вставляя ключевое слово my перед тем, как имя переменной заставляет AS искать эту переменную динамически вместо этого, избегая этой конкретной проблемы. (Звонки в подпрограммы AS всегда динамически связаны, поэтому вам не нужно беспокоиться об этом.)

  3. Не размещайте пример кода, который требует от людей принудительного закрытия редактора сценариев, чтобы выйти из него. Это раздражает и не сделает вас друзьями.

+0

ОК, извините, я ноб для applescript, поэтому я буду искать, как использовать «мое» ключевое слово. – JulesTheGodOfMC

+0

Измените все команды 'запускать скрипт Blob', чтобы« запустить мой Blob »,« запустить скрипт Blirb' для запуска моего Blirb »и т. Д. – foo

+0

Оу, и научитесь использовать AppleScript для хорошего, а не зла. Честно говоря, это достаточно злобно, как есть. – foo