Mac M1 / OS 13.7.6 / AI2024
以下の様なDialog(palette)で処理をするスクリプトを作成しているのですが、
挙動が安定しません。たまに反応しなかったりする事があります。
色々と試して、setItem()のところにredraw()を入れるとちゃんと実行される様になりましたが
実際どのあたりが問題なのかわかる方がいらしたら教えてください。
これはテスト用に作成したものですが、
他の自作スクリプトでもDialog(palette)を使用しているものは挙動が安定しません。
#include "~/json2.js";
#target illustrator
#targetengine hogehoge
var Palette_test = new Window("palette");
Palette_test.text = "test";
Palette_test.orientation = "column";
Palette_test.alignChildren = ["center","top"];
Palette_test.spacing = 10;
Palette_test.margins = 16;
var apply = Palette_test.add("button", undefined, undefined, {name: "apply"});
apply.text = "apply";
var storage = Palette_test.add("statictext", undefined, undefined, {name: "storage"});
storage.preferredSize.width = 1;
storage.preferredSize.height = 1;
var display = Palette_test.add('edittext {properties: {name: "display"}}');
display.text = "none";
Palette_test.show();
function selfTalk(func, args, cb){
var bt = new BridgeTalk();
bt.target = BridgeTalk.appName;
args = (args !== undefined) ? args.toSource().toString().slice(1, -1) : "";
bt.body = func.toSource()+"("+ args +");";
bt.onResult = function(res){
if(cb !== undefined) cb(res.body);
};
bt.send();
};
function setItem() {
redraw();
var sel = [].slice.call(app.activeDocument.selection);
if (sel.length > 0) {
var ids = getIDs(sel);
return ids;
} else {
return error;
}
}
function getIDs(objs) {
var a = [];
for (var i = 0; i < objs.length; i++) {
a.push(objs[i].uuid);
}
return a;
}
apply.onClick = function () {
selfTalk(function () {
var idC = setItem();
var txt = JSON.stringify(idC);
display.text = idC[0];
storage.text = txt;
},
[],
function (body) {
});
};