首页 > 代码库 > Adobe Illustrator工程与C++工程消息传递

Adobe Illustrator工程与C++工程消息传递

   最近做项目,在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了。

我也是才接触,可能有很多表达问题,希望谅解。

Adobe Illustrator工程与C++工程消息传递