ADM的全称是Adobe Dialog Manager,是多个AI的UI体系,但是在CC中已经将这个技术体系移除掉了。虽然不能使用ADM了,但是CC的文档指出,开发者可以使用任何需要的UI框架,基于Flash和Flex组件的UI解决方案是推荐的。好吧,先从官方推荐的看起。
CreativeSuite extensions
为了使用Flash UI,必须分离程序逻辑和界面代码。前者放入C++插件中,后者放入一个Adobe Creative Suite extension中。它们是一系列的文件,以编译的Flash文件(swf)的方式传输。
用Adobe Creative SuiteSDK创建的基于ActionScript和Flash的extensions可以提供UI和程序逻辑来扩展CC。这样的extensions可以在应用程序间共享,通过宿主应用程序的脚本接口来和特定的应用程序以合适的方式进行交互。如果,你使用extensions仅仅是为了提供UI给C++插件,典型的方式是将逻辑代码放入C++插件中(其中你可以使用本地C++API,而不需要使用脚本)。
C++插件开发者:建议使用VisualStudio(Windows)和Xcode(Mac)。
Flash extension开发者:使用CreativeSuite Extension Builder(Adobe Creative Suite SDK的一部分)。
参考Flash UI具体的实现,可以用到的例子有:
SDK_root/samplecode/FreeGrid/
SDK_root/samplecode/FreeGridUI/
SDK_root/samplecode/StrokeFilter/
SDK_root/samplecode/StrokeFilterUI/
SDK_root/samplecode/MarkedObject/
SDK_root/samplecode/MarkedObjectUI/
SDK_root/samplecode/TwirlFilter/
SDK_root/samplecode/TwirlFilterUI/
SDK_root/samplecode/DrawArt/
SDK_root/samplecode/DrawArtUI/
SDK_root/samplecode/ScriptMessage/
SDK_root/samplecode/ScriptMessageUI/
SDK_root/samplecode/SnippetRunner/
SDK_root/samplecode/SnippetRunnerUI/
SDK_root/samplecode/TransformButtons/
SDK_root/samplecode/TransformButtonsUI/
SDK_root/samplecode/Webter/
SDK_root/samplecode/WebterUI/
SDK_root/samplecode/Tutorial/
SDK_root/samplecode/TutorialUI/
关于AdobeCreative Suite SDK
Adobe Creative Suite extensions使用了Adobe Flex框架。在所有AdobeCreative Suite产品上Adobe Creative Suite extensions都以大致一样的方式的运行,为用户提供富交互和一致的使用体验。
插件和extensions间的通信
插件和扩展以CSXS事件方式进行通信,这是一种底层消息系统。插件加载和卸载扩展,它们可以分发和响应用户交互事件。
CSXS库(SWC)是一个ActionScript组件,提供API给扩展用来与C++插件交互。为了从扩展分发事件到插件,调用ActionScript库函数dispatchEvent().这个导致PlugPlug组件调用已为该事件类型注册的回调函数。
PlugPlug库是一个本地组件,直接集成到了寄主应用程序中(Illustrator CC)。C++插件使用它的API来与Flash extensions交互。为了从插件分发事件到extension,调用C++库函数PlugPlugDispatchEvent()。这会导致CSXS组件传递事件到extension中的所有注册了对这个事件类型感兴趣的事件监听者。
理论很复杂,实际操作两下了再来分享经验。
Creative Suite Extension Builder的地址 http://www.adobe.com/cn/devnet/creativesuite/cs-extension-builder.html