与 Photoshop UI 布尔语法混淆

Confusion with Photoshop UI boolean syntax

我可以用

创建一个简单的 Photoshop UI
var dlg = new Window("dialog"); 

// add buttons
dlg.add ("button", undefined, "OK");
dlg.add ("button", undefined, "Cancel");

// show the dialog;
dlg.center();

var myReturn = dlg.show();

if (myReturn == true)
{
   var msg = myReturn;
   alert(msg);
}

我的问题是:为什么是

if (myReturn == true || myReturn == 1) { do something }' // okay button works fine

不一样

if (myReturn) { do something } // doesn't work (all buttons work, including cancel)

一般来说,if(bool)if (bool == true)是一样的 这是 Photoshop qwerk 吗?

Window.show() returns 是一个整数,不是布尔值。 Photoshop 知道几个关键字,如 OkCancel,以及带有这些词 return 硬编码值的按钮(1 用于 Ok2对于 Cancel)。您可以在 .onClick():

中设置自定义 returns
var dlg = new Window("dialog"); 

// add buttons
dlg.add ("button", undefined, "OK");
var al = dlg.add ("button", undefined, "Close with custom return value");
dlg.add ("button", undefined, "Cancel");

al.onClick = function () {
  dlg.close(10)
}

// show the dialog;
dlg.center();

var myReturn = dlg.show();

// Ok will alert 1
// Close with custom return value will alert 10
// Cancel will alert 2
alert(myReturn);