終了

UIダイアログ(palette)の挙動が安定しない

参加者 ,
Jul 17, 2025 Jul 17, 2025

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) {
});
};
キーワード
Mac , スクリプティング
176
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

Community Expert , Jul 17, 2025 Jul 17, 2025

UIがリアルタイムにオブジェクトを認識しないのでredrawを噛ませる必要がありますし、BridgeTalk経由でないとまともに動かなかったりするのは仕方がないかな。
本格的にフローティングパネルがほしいのであればCEPに行くべきでしょうね。

翻訳
Community Expert ,
Jul 17, 2025 Jul 17, 2025

UIがリアルタイムにオブジェクトを認識しないのでredrawを噛ませる必要がありますし、BridgeTalk経由でないとまともに動かなかったりするのは仕方がないかな。
本格的にフローティングパネルがほしいのであればCEPに行くべきでしょうね。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
参加者 ,
Jul 17, 2025 Jul 17, 2025

ありがとうございます。やはりそういう事なのですね。

CEPは随分前に試しましたが、社内で配布しにくいので使っていませんでした。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Jul 17, 2025 Jul 17, 2025
配布は面倒ですね。
社内で他の野良エクステンションをインストールしない前提なら全てにPlayerDebugModeを設定してしまっても良いと思います。
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
参加者 ,
Jul 17, 2025 Jul 17, 2025
最新

ありがとうございます。

もうすっかりCEP忘れてますが、試してみます。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines