メインメニュー
検索
ログイン
ユーザ名:

パスワード:


パスワードを忘れた

新規登録
Squeak関連書籍
Smalltalk関連書籍
メイン
   Squeak eToys(SqueakToys)
     ディスプレイの解像度を知る方法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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: ディスプレイの解像度を知る方法
引用:

minamiさんは書きました:
書籍であれば『自由自在Squeakプログラミング』を強くお勧めします。
Squeak環境の基本的な利用方法(Squeak eToysを除く)はまず網羅されています。

ありがとうございました。
eToysからスクイークにはいったのですが、基本的なことがどうも理解できてないように思ってましたのでこの本を勉強したいと思います。

引用:

また、現在のSqueakとは多少異なっているので戸惑われるかもしれませんが、式の実行方法を知るだけであれば、『Happy Squeaking!!』の二章までをご覧になると良いと思います。

ただし、eToysを用いてタイルスクリプティングを行う範囲では、ディスプレイの解像度の取得はできないものとお考えください。
(プログラミングを行って機能追加すれば可能ではありますが、多少敷居が高くなります)

このページも見せていただきます。

abee
投稿日時: 2005-8-16 23:55
半人前
登録日: 2004-11-21
居住地:
投稿: 28
Re: ディスプレイの解像度を知る方法
引用:

minamiさんは書きました:
ただし、eToysを用いてタイルスクリプティングを行う範囲では、ディスプレイの解像度の取得はできないものとお考えください。


ちょっとトリッキーですが、描画領域(=ワールドの大きさ)の取得であれば以下の方法で可能です。

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)
スクリプトXX
    self set高さ: Display height.
    self set幅: Display width.

5. 「!」でスクリプトを実行するか、「チクタク」で変数「高さ」「幅」に値が入る
6. eToyで利用できる他のタイルと同様に値を利用できる

※変数名がアルファベットの場合、setに続く変数名の先頭文字を大文字にする
ex) 変数名sampleVariableに、数値100をセットする場合
 self setSampleVariable: 100.




abeeさん:
変数定義をせずに、ユーザスクリプトの中身をSmalltalkで書き、他スクリプトから利用する方法がちょっとわからなかったのですが、やり方はありますでしょうか?
ハロを使ってスクリプトのタイル(「スクリプトエディタ」や「Method」と表示されたもの)を引き出した後、そこから式を評価した値がうまく取れないんです
abee
投稿日時: 2005-8-19 9:32
半人前
登録日: 2004-11-21
居住地:
投稿: 28
Re: ディスプレイの解像度を知る方法
引用:

minamiさんは書きました:
変数定義をせずに、ユーザスクリプトの中身をSmalltalkで書き、他スクリプトから利用する方法がちょっとわからなかったのですが、やり方はありますでしょうか?
ハロを使ってスクリプトのタイル(「スクリプトエディタ」や「Method」と表示されたもの)を引き出した後、そこから式を評価した値がうまく取れないんです


この変数はスコープが広すぎるので気持ち悪いですよね。

スクリプトを表すフレーズにはスロットとコマンドがあります。
スロットには代入のための←があり、コマンドには実行のための!が付いています。
スロットはテクニカルタームで言うところの属性へのアクセサ、コマンドは操作です。このうち、戻り値を返せるのはスロットだけで、ユーザが新しいスロットを作るには変数を定義するしかないようです。内部的にはコマンドも戻り値を持っていますが捨てられています。また、スロットはスクリプタを持たず、ゲッタとセッタ以外の操作を追加することができません。

このような仕様になっている理由ですが、スクリプタ中でフレーズをドロップできる箇所(緑色のマーカが出る場所)をスロットとコマンドではっきりと分けているためと思われます。
とはいえ、これらの違いはワークショップなどで最も説明しにくく、理解してもらいにくいことのひとつです。
minami
投稿日時: 2005-8-19 17:05
常連
登録日: 2004-11-16
居住地:
投稿: 51
Re: ディスプレイの解像度を知る方法
なるほど、ありがとうございます。

「基本」カテゴリであれば、
 ・スロット
  「x座標」「y座標」「向き」
 ・コマンド
  「が音を鳴らす」「を進める」「を回す」
ですね。
コマンドを実行した際の戻り値は捨てられていて、eToysのタイルスクリプティングでは利用できない、ということで理解しました。

{利用時|実装}の複雑さを抑えるのには有効な制限であるように思います。
きっとeToys創世期にはいろいろ議論があったんでしょうね。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Google
新着リンク