我正在脚本文件中创建我的第一个AppleScript库,并希望通过use
语句(I followed these instructions)使用该文件中的处理程序。所以我试着:
use script "My Library"
create_new_track(10, 2, 2)
在我的"My Library.scpt“文件中,有一个名为"create_new_track”的处理程序。但是当我试图在use语句之后调用它时,我得到了这个错误:
error "«script» doesn’t understand the “create_new_track” message." number -1708 from «script»
使用下面的代码片段,我可以让处理程序运行:
tell script "My Library"
create_new_track(10, 2, 2)
end tell
尽管如此,我还是希望能够避免在我的脚本中出现大量的tell块。有人知道哪里出问题了吗?
发布于 2018-09-21 00:48:59
指出一些有用的信息…如果选择使用属性定义脚本库以便能够调用要在其他脚本中使用的处理程序和脚本对象的路径,请务必记住,如果对脚本库文件…进行了任何更改并重新编译和保存,这些更改将不会传递到您创建的脚本,这些脚本调用库文件中的脚本对象和处理程序。简而言之,您需要打开、重新编译并保存创建的每个脚本,这些脚本调用库文件中的脚本对象和处理程序。如果您有数十个甚至数百个脚本,这可能会成为一场噩梦。
使用来自其他答案之一的以下示例…脚本库在编译时存储,并将保留其值,直到重新编译脚本为止。对原始库文件的任何更新或更改都不会反映在调用它们的脚本中,直到重新编译并保存这些脚本
property mylib : script "My Library"
...
mylib's do_this()
mylib's do_that()
etc.
在我看来,更有利的选择是在运行时加载脚本库。这样,依赖于该库文件的任何脚本在运行…时都会自动更新在更改和保存脚本库文件之后。
这是我用来在运行时加载库的代码
property myLib : missing value
property theLibrary : missing value
on loadLibraries()
set theLibrary to (path to home folder as text) & "Library:Script Libraries:My Library.scpt"
set myLib to load script alias theLibrary
end loadLibraries
loadLibraries()
myLib's do_this()
myLib's do_that()
发布于 2015-05-05 20:28:09
我想我会试试:
use mylib : script "My Library"
mylib's create_new_track(10, 2, 2)
如果我没弄错的话,你只能像上面那样使用use语句,以便使用应用程序中的术语。-But,我可能弄错了。
https://stackoverflow.com/questions/30048844
复制相似问题