我正在用 ActionScript 3 编写一个 Photoshop 插件。
我对 app.activeDocument 有一个非常令人困惑和令人沮丧的问题。我的代码与 Photoshop for Windows 完美配合,但在 Mac 上我得到“一般 Photoshop 错误。此功能在此版本的 Photoshop 中可能不可用。” 错误。
为了尝试找到问题的根源,我编写了一个类来获取文档引用并从测试面板中调用它。课堂通话效果很好。然后,我在我的主面板项目中包含了相同的类,它中断了。
这是我的课:-
package DocRefGetter
{
import com.adobe.csawlib.photoshop.Photoshop;
import com.adobe.photoshop.*;
public class DocRefPhotoshop
{
public static function getDocRef():Document
{
var app:Application = Photoshop.app;
var thisDoc:Document = app.activeDocument;
//var thisDoc:Document = app.documents.index(0); //Tried this method too
return thisDoc;
}
}
}
出于发帖的目的,我稍微简化了一些事情,即我删除了诸如“try, catch”语句之类的内容,但本质上这是在我的面板上下文中不起作用的代码。我还尝试了对 JSX 代码的等效调用,结果完全相同,在 Windows 上完美运行,在 Mac 上的测试面板中工作,在 Mac 上的主项目中不起作用。
正如我所说,在测试中,这非常有效。这是测试 mxml 代码: -
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" historyManagementEnabled="false">
<mx:Script>
<![CDATA[
import DocRefGetter.DocRefPhotoshop;
import com.adobe.photoshop.Document;
[Bindable]
private var hostName:String = HostObject.mainExtension;
protected function button1_clickHandler(event:MouseEvent):void
{
var thisDocRef:Document = DocRefPhotoshop.getDocRef();
testLabel.text = String(thisDocRef);
}
]]>
</mx:Script>
<mx:VBox height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Button label="Run PS code" click="button1_clickHandler(event)" />
<mx:Label id="testLabel" width="182" text="Label"/>
</mx:VBox>
</mx:Application>
我不能发布它不能工作的主要应用程序,因为它非常大而且非常复杂,所以我要问的是有没有人遇到过这种情况,在这种情况下,某些东西与这种类型的文档参考有冲突?一个多星期以来,我一直在努力解决这个问题。我尝试了许多不同的解决方案,但没有任何效果。Mac Photoshop 只是不想看到打开的文档。
欢迎提出任何建议,但我最希望有人以前遇到过这种确切的情况并有一个精确的解决方案。
非常感谢您不厌其烦地看看这个。