Patcher オブジェクトは、 Max パッチャーのJavascript 表現(Javascript で表される 「Max パッチャー」)です。パッチャー内のオブジェクト全体を通して、生成、修正、および繰り返し処理を行なうことができ、thispatcher オブジェクト等を使って行なうような、パッチャーへのメッセージ送信ができます。
現在、Patcher を得る方法は3つあります。その3つとは、コンストラクタを使う方法、jsthis の patcher プロパティにアクセスする方法(this.patcher という形でアクセスします)、Maxobj オブジェクトの subpatcher() メソッドを使う方法です。var p = new Patcher(left,top,bottom,right);
left、top、bottom、right は、それぞれ、パッチャーウィンドウのグローバルスクリーン座標の左、上、下 、右 を表します。var p = new Patcher();
デフォルトのウィンドウ座標として、100,100,400,400 を使います。box (Maxobj, get)
prev = 0; owner = this.patcher.box; while (owner) { prev = owner; owner = owner.patcher.box; } if (prev) post("top patcher is",prev.name);
count (Number, get)
filepath (String, get)
firstobject (Maxobj, get)
name (String, get/set)
locked (Boolean, get/set)
maxclass (String, get)
parentclass (String, get)
parentpatcher (Patcher, get)
scrolloffset (Array, get/set)
scrollorigin (Array, get/set)
wind (Wind, get)
Max から( thispatcher オブジェクトを介して)パッチャーへ送ることが可能な任意のメッセージを、js の中の Javascript から送信できます。
例:
p = this.patcher; p.fullscreen(1); // パッチャーをスクリーン全体に表示させます。 p.dirty(); // 編集可能なパッチャーを dirty (変更されていることを表します) // にします。
以下に示す Patcher メソッドは、やや使いやすいパッチャースクリプトの実装を提供します。上に示したように、Javascript の Patcher オブジェクトは、 thispatcher オブジェクトに送ることが可能な任意のメッセージを受信できるため、script メッセージを使ってパッチャーを書くこともできます。
newobject (classname,params)
例:
a = patcher.newobject("toggle",122,90,15,0);
newdefault (left,right,classname, 追加のアーギュメント)
例:
a = patcher.newdefault(122,90,"toggle");
newdefault() メソッドは、非ユーザインターフェイスオブジェクトを生成する場合、追加のアーギュメントを受け取ることができます。これは、生成されるオブジェクトのタイプイン・アーギュメントを表すものです。例:
a = patcher.newdefault(122,90,"pack", "rgb", 255, 128, 64);
connect (from_object, outlet, to_object, inlet)
例:
p = this.patcher; a = p.newobject("toggle",122,90,15,0); b = p.newobject("toggle",122,140,15,0); p.connect(a,0,b,0);
hiddenconnect (from_object, outlet, to_object, inlet)
disconnect (from_object, outlet, to_object, inlet)
例 (上記の connect() の例の場合):
p.disconnect(a,0,b,0);
apply (function)
function printobj(a) { post(a.maxclass); post(); return true; // iterfun は繰り返し処理を続けるために true をかえさなければ // なりません。そうでない場合は停止します} this.patcher.apply(printobj);
applydeep (function)
applyif (action_function, test_function)
applydeepif (action_function, test_function)
remove (object)
getnamed (name)
getlogical (function)
例:
// 左座標に負の値を持つオブジェクトを探索します。 function neg_left(a) { r = a.rect; // rect は配列として返されるプロパティです。 if (r[0] < 0) return 1; else return 0; } e = patcher.getlogical(neg_left); if (e) e.rect[0] = 0;
bringtofront (object)
sendtoback (object)