【AI插件】Adobe Illustrator工程与C++工程消息传递

来源:互联网 发布:ubuntu 查看 主分区 编辑:程序博客网 时间:2024/05/17 06:00
   最近做项目,在C++平台下开发Adobe Illustrator的插件,设计界面UI要用到Flash Builder建立的Adobe Application Extension Project中的Adobe Illustrator平台下的工程。这篇文章介绍如何与C++工程进行消息交互。
   首先,根据我的上一篇文章介绍新建一个UI工程,切换到设计界面。在面板上拖入控件,如下图所示。
拖进去按钮之后,添加单击事件。如果拖入文本输入框,给一个ID号

切换到源代码模式,根据Adobe Illustrator开发提供的TutorialUI工程示例代码。在初始化方法中加入:
    CSInterface.instance.addEventListener(GET_PARAMS_REQ, respondToParams);    // Dispatch ready event    var event : CSXSEvent = new CSXSEvent(DIALOG_READY, CSXSEventScope.APPLICATION);    CSInterface.instance.dispatchEvent(event);

第一行表示接受C++工程传入的监听,后两行表示对话框启动分发给C++的消息事件。其中,
   // Events we dispatch   private static const DIALOG_READY : String = "com.lm.shpToAI.shpToAIDialogReady";        // Events we listen out for   private static const GET_PARAMS_REQ : String = "com.lm.shpToAI.shpToAIGetParamsReq";
respondToParams方法实现C++传入的消息后续的处理。

对于按钮分发事件,实现如下代码即可,将要传出的数据写入到一个payload XML对象中,然后利用CSInterface.instance.dispatch这个事件就可以了。

    var payload : XML = <payload>          <cancelled>{cancelled}</cancelled>          <editText>{editText.text}</editText>          <nextText>{nextText.text}</nextText>         </payload>;       var event : CSXSEvent = new CSXSEvent(GET_PARAMS_RESP, CSXSEventScope.APPLICATION, payload);    CSInterface.instance.dispatchEvent(event);

工程——属性——运行配置(调试配置)
运行即可在AI界面出现你的扩展UI了。

我也是才接触,可能有很多表达问题,希望谅解。
2 0
原创粉丝点击