インデザインスクリプトの勉強の為、ドキュメントの固定位置にボタン一つで移動させるコントローラー(パレット)を現在作成中なのですが…今書いているものだとボタンを押した瞬間に移動のアクションを行わずパレットを閉じてしまいます。
期待する動きとしては、パレットはずっと表示されたまま、ボタンを押すとアイテムが移動。
おそらく原因は【.onClick】のfunctionに【.close】となっているから…だとは思うのですが、この【.close】の代替になる単語はあるのでしょうか。
//paletteを正しく表示する為に必要
#targetengine 'ObjMove'
//パレット表示
var palWin = new Window ("palette", "移動場所", [0,0,260,180]);
//タイトル
palWin.add("statictext", [20,10,260,40], "ボックスを動かす位置を選択してください");
//グループ化
var objGrp01= palWin.add("group", [0, 40, 260, 200]);
palWin["L1"] = objGrp01.add("button", [20, 20, 60, 60], "左1");
palWin["L2"] = objGrp01.add("button", [80, 20, 120, 60], "左2");
palWin["L3"] = objGrp01.add("button", [140, 20, 180, 60], "左3");
palWin["L4"] = objGrp01.add("button", [200, 20, 240, 60], "左4");
//終了ボタン
palWin["esc"] = palWin.add("button", [260-60, 180-40, 260-20, 180-20], "終了", {name:"esc"});
//イベント起点
palWin["L1"].onClick = function(){palWin.close(0);}
palWin["L2"].onClick = function(){palWin.close(1);}
palWin["L3"].onClick = function(){palWin.close(2);}
palWin["L4"].onClick = function(){palWin.close(3);}
palWin["esc"].onClick = function(){palWin.close(-1);}
//ウィンドウ表示
palWin.center ();
palWin.show ();
//動かす
function (){
var doc = app.activeDocument;
var Mobj = doc.selection[0];
var actMove = palWin.show ();
switch (actMove){
case 0:Mobj.move([17.15, -87.867]);break;//左1
case 1:Mobj.move([27.15, -87.867]);break;//左2
case 2:Mobj.move([37.15, -87.867]);break;//左3
case 3:Mobj.move([47.15, -87.867]);break;//左4
}
}
【.close】が解決されても、【switch(actMove)】を押した瞬間にパレットが表示されると同時に【case 0】が発動してしまう可能性を考慮すると…問題は【var actMove = palWin.show ();】に…?
よろしければ知恵をお貸しください
[20785] 柴犬 (2022/01/19 Wed 18:44)