Help us understand the problem. What is going on with this article?

jsからMaxのUI系のオブジェクトの値を直接取得する

More than 5 years have passed since last update.

たまに、jsから直接MaxのナンバーボックスやマルチスライダーなどのUI系のオブジェクトの値を取りたいと思うことがあります。

ドキュメントやExampleパッチを調べたり、ググったりしてもなかなか見つからなかったので、案外知らない人もいるんじゃないかと思ったので書きます。

Maxobj#getvaluof()
を使えばいけるようです。

こんなパッチのとき、

main.png

各UIオブジェクトにはインスペクタからScriptingNameを設定しておき、jsにてgetnamedメソッドでMaxobjを取得して使います。

autowatch = 1;


//flonum
var num = null;
//function
var func = null;
//matrix
var mat = null;
//multislider
var mult = null;

function loadbang () {
    num = patcher.getnamed("testnum");
    func = patcher.getnamed("testfunc");
    mat = patcher.getnamed("testmatrix");
    mult = patcher.getnamed("testmult");
}

function getnum () {
    var f = num.getvalueof();
    post(f, "\n");
}

function getfunc() {
    post("function value---------\n");
    var v = func.getvalueof();
    v.forEach(function (el) { post(el, "\n"); });
    post("end-------------------\n");
}

function getmult() {
    post("multislider value---------\n");
    var v = mult.getvalueof();
    post(v, "\n");
    v.forEach(function(el){ post(el, "\n") });
    post("end-------------------\n");
}

function getmatrix() {
    post("matrix value---------\n");
    var v = mat.getvalueof();
    post(v, "\n");
    v.forEach(function(el){ post(el, "\n") });
    post("end-------------------\n");   
}

全部のUIオブジェクトで試してないのでなんとも言えませんが、live系も含め主要なUI系のオブジェクトはできると思います。

ただ、やはりブラウザのUIのように、イベントリスナーを登録してUIをいじったタイミングでの値を取得したくなるのですが、そのような方法が今のところ見つからないので、使い勝手的には微妙で、それなら普通に直接インレットに繋げてつかうわ・・という感じです。

一応GitHubにもExampleをアップしておきました。

https://github.com/okupara/AdventCalendar1211Example

os10.10.1 Max7.0.1 64bit
os10.10.1 Max6.1.7 32bit
で確認してますが、
自分の環境でしか試したことがないので、何か問題などあればお知らせいただけると・・

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした