周期的に実行させる
sheduleTaskを使用して、周期的に実行させることが可能。
sheduleTask(function , time ,bool);
となっているので、最後の引数をtrueとすると、time毎にfunctionを実行してくれる。
この繰り返しを中断するには、sheduleTask実行の返り値を取っておいて、cancelTaskの引数として渡す。
ただし、sheduleTaskは実行毎(functionの実行毎ではない)に、通し番号を返すので以下のようにすると
doFunctionボタンを2回以上クリックすると、最新のsheduleTaskの返り値しかcancelTaskに渡していないので
それ以前のtaskが終了しない。
(function (){//scheduleTaskの返り値の保存用var taskID = 0;//実行させる関数var myFunc = function (){ app.project.items.addFolder('hoge ' + taskID); }//実行ボタンをクリックした時の関数var doFunc = function (){ taskID = app.scheduleTask('myFunc()', 500, true); }//キャンセルした時の関数var doCancel = function (){ app.cancelTask(taskID); }var w = new Window('palette', 'hoge' , [100,100, 330,150]);var btn_do = w.add('button' ,[10,10,100,40], 'do Function');var btn_cancel = w.add('button', [120,10,220,40], 'cancel'); btn_do.onClick = doFunc; btn_cancel.onClick = doCancel; w.center(); w.show();}())
なので以下のように配列にするか、sheduleTaskの返り値が整数のようなので
1から最新の値の数値までをcancelTaskに繰り返し与えるといいかも
(function (){
//scheduleTaskの返り値の保存用var taskID = [];//実行させる関数var myFunc = function (taskID_number){ app.project.items.addFolder('hoge ' + taskID_number); }//実行ボタンをクリックした時の関数var doFunc = function (){ taskID.push(app.scheduleTask('myFunc(' +taskID.length +')', 500, true)); }//キャンセルした時の関数var doCancel = function (){ for(var i=0;i<taskID.length;i++){ app.cancelTask(taskID[i]); } taskID = []; }var w = new Window('palette', 'hoge' , [100,100, 330,150]);var btn_do = w.add('button' ,[10,10,100,40], 'do Function');var btn_cancel = w.add('button', [120,10,220,40], 'cancel'); btn_do.onClick = doFunc; btn_cancel.onClick = doCancel; w.center(); w.show();}());