我正在使用ActionScript 3编写一款Photoshop插件。
我在使用app.activeDocument时遇到了非常混乱和令人沮丧的问题。我的代码在Windows上的Photoshop中运行得很完美,但在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上的测试面板中也可以运行,但在我的主要项目中无法运行。
正如我所说,在测试中,它可以完美地工作。以下是测试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似乎根本看不到打开的文档。
欢迎提出任何建议,但我希望最好的情况是,有人之前已经遇到过这种情况,并且有一个精确的解决方案。
非常感谢您花时间查看这个问题。