美文网首页sketch
更多关于CocoaScript

更多关于CocoaScript

作者: iOSDevLog | 来源:发表于2018-03-21 12:05 被阅读0次

目录

  1. 入门

    1. 插件基础
    2. 您的第一个插件
    3. 开发环境
    4. 调试
    5. Action API
    6. 发布插件
  2. 高级

    1. 插件捆绑
    2. 插件,脚本和命令
    3. 插件位置
    4. 更多关于CocoaScript
    5. SketchTool

Sketch插件可以通过MochaCocoaScript实现,它允许您使用JavaScript编写的外部脚本使用Objective-C / Cocoa代码。该桥负责JavaScript和Cocoa之间的翻译,因此您可以专注于重要的部分(即使Sketch成为可怕的东西)。

来自CocoaScript的自述文件:

CocoaScript建立在Apple的JavaScriptCore之上,这是与Safari相同的JavaScript引擎。所以,当你在CocoaScript中编写代码时,你确实在编写JavaScript。

CocoaScript还包含一个桥梁,可让您通过JavaScript访问Apple的Cocoa框架。这意味着除了标准JavaScript库之外,您还可以使用许多精彩的类和函数。

JavaScript环境

您的插件脚本不会在浏览器中运行,但会在JavaScriptCore上下文中运行。因此它运行的JavaScript环境有点不常见。

  • JavaScript的标准库可用。
  • 其他的都不是。这意味着setTimeoutfetchconsole等都是不可用。
  • NodeJS核心模块不可用。

话虽这么说,如果你使用skpm,它会自动填充工具有些事情你:consolesetTimeoutsetIntervalfetch

访问Cocoa和Sketch API

您可以从CocoaScript访问所有Cocoa和Sketch API。

Objective-C属性的行为与在桥的JavaScript端应该一样。

Objective-C方法作为对象的不透明JavaScript代理的属性公开。

将选择器名称转换为JavaScript属性名称时采取以下步骤:

  • 所有冒号都转换为下划线(最新的下划线是可选的)。
  • 选择器的每个组件都连接成一个没有分隔的字符串。

这样,一个选择器如executeOperation:withObject:error:转换为函数名称executeOperation_withObject_error()

例如,如果你想打开一个File Picker面板,你可以使用NSOpenPanel类:

var openPanel = NSOpenPanel.openPanel()
openPanel.setCanChooseDirectories(false)
openPanel.setCanChooseFiles(true)
openPanel.setCanCreateDirectories(false)
openPanel.setDirectoryURL(NSURL.fileURLWithPath('~/Documents/'))

openPanel.setTitle('Choose a file')
openPanel.setPrompt('Choose')
openPanel.runModal()

如果您需要更多关于Cocoa的信息,请查看参考资料部分。

一些特定的全局变量

指针

对于某些Obj-C选择器,您可能需要传递一个指针。这在JavaScript中不存在,所以有一种全局方法来创建一个:

var ptr = MOPointer.alloc().init()
var ptrToSomething = MOPointer.alloc().initWithValue(something)

长时间运行脚本

如果您的脚本正在进行异步操作,我们需要告诉Sketch保留它并且不要垃圾收集它。

你可以通过访问COScript

COScript.currentCOScript().shouldKeepAround = true

脚本完成其工作后,不要忘记释放它:

COScript.currentCOScript().shouldKeepAround = false

下一步

有关这座桥如何运作的更多信息,请查看Mocha README,它确实是完整的(但需要一些Obj-C的概念)。

原文:https://developer.sketchapp.com/guides/cocoascript/

相关文章

  • 更多关于CocoaScript

    目录 入门插件基础您的第一个插件开发环境调试Action API发布插件 高级插件捆绑插件,脚本和命令插件位置更多...

  • [sketch plugin]如何写一个可交互的webView界

    作为一个不熟悉object-c的UI开发,原本以为有了cocoascript就完事大吉,然而在用oc写sketch...

  • Sketch使用CocoaScript改变图层颜色

    Sketch如何获取一个图层,并改变图层颜色

  • 关于【更多】功能

    更多功能按钮是因为直播房间内功能按钮比较多,收纳非常用非重点非即时性的功能的一个功能盒子,收纳后会让房间内更整洁更...

  • Kotlin起步

    更新Maven源 SpringBoot+Kotlin 关于SDKMAN更多介绍 可以参考SDKMAN 关于更多sp...

  • MySQL命令(二)

    myli 关于mycli更多介绍参考mycli Docs Data 关于test_db更多介绍参考test_db ...

  • 关于梦想——赚更多钱走更多路

    关于梦想,这个是一个比较沉重的话题! 今天,一直多年的来的好朋友,突然问了我一个我感觉很诧异的问题,"想着写文字,...

  • 成圣之路(982)疫情之下,我们要更多的体悟民生

    疫情之下,我们要更多的体悟民生,关于吃饭,关于就业,关于发展,关于生意。 2022.11.25

  • 关于更多的新想法

    今天我画了透视、人体速写。 不过还差得很远,我的服装确实要补,但不能像别人说的那样,画多了速写就搞不定深入细化了…...

  • 关于我们,及更多

    (这是某个系列之一,放上自己码字时最喜欢的音乐——平凡之路 ) 我大概已记不清两年前或是四年前的五一在做什么了,但...

网友评论

    本文标题:更多关于CocoaScript

    本文链接:https://www.haomeiwen.com/subject/lvwwqftx.html