我在Win和Mac上为Photoshop CS5和CS6创建了一个flex面板和一个C ++插件。我的C ++插件捕获诸如图层选择更改,文档视图更改等事件以及将事件调度到flex的事件。在flex中,我注册这些事件并调用适当的函数。这一切都很完美。
例如,当用户从Photoshop的Layer Palette中选择另一个图层时,我的插件将调度一个事件。此事件在flex中捕获,并调用方法。在这个方法里面我需要禁用我的面板,做一些处理然后再次启用我的面板。这适用于Win XP和Photoshop CS5,但不适用于Mac和Win 7。 如果我在进行某些处理时在我的面板上执行了鼠标操作,那么我的面板将显示为禁用,否则它将显示为已启用。我使用以下代码:
在C ++中,调度图层选择更改事件。在flex中,它被捕获并调用函数“LayerChange”。
public function LayerChange(event:CSXSEvent):void
{
this.enabled = false;
CursorManager.setBusyCursor();
//do some processing
this.enabled = true;
CursorManager.removeBusyCursor();
}
有人可以告诉我为什么除非鼠标在面板上移动,否则面板不显示为禁用?
由于