スクリプトガイド > 表示ツリー > 独自のウィンドウの作成 > 作成した表示にメッセージを送る
公開日: 04/01/2021

作成した表示にメッセージを送る

作成したウィンドウに名前を割り当てると、その名前は、そのディスプレイボックスを所有するウィンドウへの参照になります。その後で、添え字を使って、そのウィンドウ内のディスプレイボックスにメッセージを送ることができます。

たとえば、次のスクリプトは、インタラクティブな正弦波を作成します。このスクリプトは、ウィンドウ内のフレームボックスにメッセージを送ることで、正弦波を自動的に変化させています。(スクリプトの途中でtfに割り当てています。)

amplitude = 1;
freq = 1;
phase = 0;
win = New Window( "揺れ動く波",
	Graph Box(
		Frame Size( 500, 300 ),
		X Scale( -5, 5 ),
		Y Scale( -5, 5 ),
		Y Function( amplitude * Sine( x / freq + phase ), x );
		Handle(
 

/* 四角いハンドルのフェーズおよび振幅位置の

現在値。

スクリプトは振幅(amplitude)の後のカンマの後始まる */

			phase,
			amplitude,
 

/* XとYはハンドルの位置に設定されたが、

最初の2つの引数で指定された値が更新されない限り

ハンドルは動かない */

			phase = x;
			amplitude = y;
		);
 

// Handleは同様に動作するが、yが0.5という点が異なる

		Handle( freq, .5, freq = x );
 
		Text( // グラフにテキストを表示する
			{3, 4},
			"振幅: ",
			Round( amplitude, 4 ), // 現在値を表示する
			{3, 3.5},
			"周波数: ",
			Round( freq, 4 ), // 現在値を表示する
			{3, 3},
			"位相: ",
			Round( phase, 4 ) // 現在値を表示する
		);
	)
);
tf = win[Frame Box( 1 )]; // Frame Box(グラフ)を取得
For( amplitude = -4, amplitude < 4, amplitude += .1,// 振幅のアニメーション
	tf << Reshow // グラフを強制的に更新
);
amplitude = 1; // ループに使用して複雑な動きをさせる
freq = 1;
phase = 0;
For( i = 0, i < 1000, i++,
	amplitude += (Random Uniform() - .5);
	amplitude = If(
		amplitude > 4, 4,
		amplitude < -4, -4,
		amplitude
	);
	freq += (Random Uniform() - .5) / 20;
	phase += (Random Uniform() - .5) / 10;
	tf << Reshow;
	Wait( .05 );
);
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).