![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
noory | 投稿日時: 2005-8-13 5:18 |
新米 ![]() ![]() 登録日: 2005-8-13 居住地: 投稿: 1 |
ディスプレイの解像度を知る方法 はじめまして
スクイークは、可能性を感じさせるプログラム言語だと思います。そのため、何か面白い使い方はないかと思っているのですが、なかなかよいアイデアが浮かびません。が、ある日突然よいアイデアが浮かぶかもしれないので、あまりあせらずにおこうとは思います。 ![]() それはさておき、 今スクイークを実行しているディスプレイの解像度(たとえば、1024x764、であるとか、1280x1024、など)知る方法はあるのでしょうか? また、スクイークを実行しているウィンドウのサイズ(スクロールバーの幅は除いた縦横の解像度)を知る方法はありますでしょうか? ![]() |
minami | 投稿日時: 2005-8-13 13:25 |
常連 ![]() ![]() 登録日: 2004-11-16 居住地: 投稿: 51 |
Re: ディスプレイの解像度を知る方法 nooryさん、はじめまして。
引用: 今スクイークを実行しているディスプレイの解像度(たとえば、1024x764、であるとか、1280x1024、など)知る方法はあるのでしょうか? Windows環境であれば取得できます。下記のライブラリをご利用ください。 ちょうどSampleのところで縦横のディスプレイ解像度を取得しています。 >> Win32SystemMetrics for Squeak MacやUN*Xの場合はちょっと知らないのですが、どなたかご存知ありませんか? ![]() 引用: また、スクイークを実行しているウィンドウのサイズ(スクロールバーの幅は除いた縦横の解像度)を知る方法はありますでしょうか? 画面まわりを管理しているグローバル変数 Display(DisplayScreenクラスのインスタンス) から取得できます。 Display extent お試しください。 |
ゲスト | 投稿日時: 2005-8-13 20:04 |
Re: ディスプレイの解像度を知る方法 minamiさん
ありがとうございます。 ところで、Display extent の実行方法がわかりません。 この実行方法を勉強するにはどの本を読めばよろしいでしょうか? |
|
minami | 投稿日時: 2005-8-14 4:21 |
常連 ![]() ![]() 登録日: 2004-11-16 居住地: 投稿: 51 |
Re: ディスプレイの解像度を知る方法 書籍であれば『自由自在Squeakプログラミング』を強くお勧めします。
Squeak環境の基本的な利用方法(Squeak eToysを除く)はまず網羅されています。 また、現在のSqueakとは多少異なっているので戸惑われるかもしれませんが、式の実行方法を知るだけであれば、『Happy Squeaking!!』の二章までをご覧になると良いと思います。 ただし、eToysを用いてタイルスクリプティングを行う範囲では、ディスプレイの解像度の取得はできないものとお考えください。 (プログラミングを行って機能追加すれば可能ではありますが、多少敷居が高くなります) |
ゲスト | 投稿日時: 2005-8-14 10:24 |
Re: ディスプレイの解像度を知る方法 引用:
ありがとうございました。 eToysからスクイークにはいったのですが、基本的なことがどうも理解できてないように思ってましたのでこの本を勉強したいと思います。 引用:
このページも見せていただきます。 ![]() |
|
abee | 投稿日時: 2005-8-16 23:55 |
半人前 ![]() ![]() 登録日: 2004-11-21 居住地: 投稿: 28 |
Re: ディスプレイの解像度を知る方法 引用:
ちょっとトリッキーですが、描画領域(=ワールドの大きさ)の取得であれば以下の方法で可能です。 1. ビューワに「幾何」カテゴリを持つ任意のモーフ(たとえば四角形)を取り出す。 2. そのモーフのビューワを開き「幾何」カテゴリの「長さ」と「幅」をスクリプタの必要とする場所にドラッグする。 3. ワールドのハロを出し(背景をAlt+クリック)、左端の下から2番目にあるオレンジ色のアイコンをクリックし、出てきた[ワールド]タイルをスクリプタ上のモーフを表すタイル(この例では[四角形])の上にドラックして置き換える。 引用:
簡易な方法として、ユーザスクリプトの中身をSmalltalk言語で書いて(例えばDisplay extantを使って)、他のスクリプトからタイルとして使うことはできます。具体的にはスクリプタの左上にある[o]の右にある[□]をチェックすることで切り替わります。 # minamiさんの紹介された自由自在はSmalltalk言語とライブ # ラリ、開発環境の使い方を解説した本です。 |
minami | 投稿日時: 2005-8-18 12:55 |
常連 ![]() ![]() 登録日: 2004-11-16 居住地: 投稿: 51 |
Re: ディスプレイの解像度を知る方法 abeeさん、フォローありがとうございます。
ユーザスクリプトを書いて、追加定義した変数に代入することもできるんですね。 次のような手順でDisplayのサイズを取得することができました。 1.任意のMorphのビューワを開く 2.新しい変数を追加する 「高さ」「幅」 3. 空のスクリプトを引き出し、文字形式表示に切り替える 4. 文字形式表示のスクリプトを下記(※)のようにしてAlt-s(command-s)
5. 「!」でスクリプトを実行するか、「チクタク」で変数「高さ」「幅」に値が入る 6. eToyで利用できる他のタイルと同様に値を利用できる ※変数名がアルファベットの場合、setに続く変数名の先頭文字を大文字にする
abeeさん: 変数定義をせずに、ユーザスクリプトの中身をSmalltalkで書き、他スクリプトから利用する方法がちょっとわからなかったのですが、やり方はありますでしょうか? ハロを使ってスクリプトのタイル(「スクリプトエディタ」や「Method」と表示されたもの)を引き出した後、そこから式を評価した値がうまく取れないんです ![]() |
abee | 投稿日時: 2005-8-19 9:32 |
半人前 ![]() ![]() 登録日: 2004-11-21 居住地: 投稿: 28 |
Re: ディスプレイの解像度を知る方法 引用:
この変数はスコープが広すぎるので気持ち悪いですよね。 スクリプトを表すフレーズにはスロットとコマンドがあります。 スロットには代入のための←があり、コマンドには実行のための!が付いています。 スロットはテクニカルタームで言うところの属性へのアクセサ、コマンドは操作です。このうち、戻り値を返せるのはスロットだけで、ユーザが新しいスロットを作るには変数を定義するしかないようです。内部的にはコマンドも戻り値を持っていますが捨てられています。また、スロットはスクリプタを持たず、ゲッタとセッタ以外の操作を追加することができません。 このような仕様になっている理由ですが、スクリプタ中でフレーズをドロップできる箇所(緑色のマーカが出る場所)をスロットとコマンドではっきりと分けているためと思われます。 とはいえ、これらの違いはワークショップなどで最も説明しにくく、理解してもらいにくいことのひとつです。 |
minami | 投稿日時: 2005-8-19 17:05 |
常連 ![]() ![]() 登録日: 2004-11-16 居住地: 投稿: 51 |
Re: ディスプレイの解像度を知る方法 なるほど、ありがとうございます。
「基本」カテゴリであれば、 ・スロット 「x座標」「y座標」「向き」 ・コマンド 「が音を鳴らす」「を進める」「を回す」 ですね。 コマンドを実行した際の戻り値は捨てられていて、eToysのタイルスクリプティングでは利用できない、ということで理解しました。 {利用時|実装}の複雑さを抑えるのには有効な制限であるように思います。 きっとeToys創世期にはいろいろ議論があったんでしょうね。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |