最近做项目,在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了。
我也是才接触,可能有很多表达问题,希望谅解。
时间: 2024-10-11 04:13:30