- enter the lock password
- lock this page after save
タイトル:
最終更新情報: 10:59:33 pm on 22 July 2005 by 192.168.1.2
NetMorph は eToy 対応しているので、 普通は自分でSmalltalkのプログラムを書く必要はありません。このページは開発者用に書かれました。 _ !!最初の例 NetMorph 0.2 にはリモートからモーフを操作するための、整理された API が提供されています。 簡単なコード例です。別のイメージの ip と portが #('192.168.1.2' 37459)であると考えてください。 <pre> "ローカルでモーフを開く" morph _ Morph new openInWorld. "別のイメージにモーフを移動。プロキシを残していく" proxy _ morph leaveProxyDo: [morph warp: '192.168.1.2' port: 37459]. "モーフの位置をリモートコントロール" proxy position: 100@100. "モーフの色をリモートから変える" proxy color: Color random. "ちょっとした視覚効果" proxy poofIn. "リモートでマーカーモーフを開く" "マーカーモーフは後でモーフを引っ張り戻すのに使う" proxy leaveMarkerMorph. proxy showBalloon: 'こんにちは! このタイルを僕を呼ぶときに使ってね!'. "リモートのワールドの色を3回変える(悪戯)" oldColor _ proxy world color. 3 timesRepeat: [proxy world color: Color random. (Delay forSeconds: 1) wait]. proxy world color: oldColor. "家に帰る" proxy warpToHome. </pre> この旅の後で、帰ってきたモーフをインスペクトして、 #path メッセージを送ってみましょう。モーフがどこを訪れたかがわかります。 _ !!Callback Morphのサブクラスを定義して、移動時の振る舞いをカスタマイズできます。 -Morph>>onBeforeWarp は、ローカルを立ち去る直前に呼ばれます。 -Morph>>onAfterWarp は、リモートに着いた直後に呼ばれます。 _ !!遠隔 Perform NetMorphでは, すべてのモーフにidがあります。idがわかっていれば、そのモーフのメソッドをリモートから呼び出せます。 -Morph>>perform: selector of: identifier --などなど... _ !!Morph Proxy 移動前にメソッドを後で呼び出すためにidを取っておくのは面倒でしょう。 そこで簡単な操作で、モーフの抜け殻(プロキシ)を得ることができるようになっています。 -Morph>>leaveProxyDo: ["移動のフレーズ"]. で抜け殻が帰ります。この抜け殻にメッセージを送るとリモートの本物に届きます。 プロキシに渡せる引数、返値には制限があります。Block, thisContextなどは渡せません。モーフが別のモーフを返すようになっていた場合、呼び出し側は自動的に、そのモーフのプロキシを得られるようになっています。 例, <pre> worldProxy _ proxy world. </pre> で、リモートのWorldのプロキシが返ります。 _ !!Morph>>stepのオーバーライド Morph>>stepをオーバーライドすると、モーフが自ら動けるようになります。ということは、ネットワークエージェントも簡単に書けると言うことです。 例えば、ネット上をランダムに放浪するモーフを書きたい場合、#stepは以下のようになるでしょう。: <pre> step self warpTo: (self worldMap allWorldNames atRandom). </pre> #step内では、下記のようなメソッドが役立ちます。 - Morph>>worldMap で WorldMap が返ります。接続している全てのイメージの情報を得られます。 - Morph>>address で、 WorldMap上の自分の現在位置がわかります。 - Morph>>path で、今までの行程を知ることができます。 _ !!MarkerMorphの使い方 MarkerMorph は、モーフに対する「見えるポインタ」です。 これを使うとリモートからのモーフの操作が容易になります。いつもは自分で動くモーフに、外部から指令を送るような時に使えます。 MarkerMorph は普通のモーフなので、#stepをオーバーライドできます。例えば時折、放浪しているモーフを呼び戻したい場合、#step を以下のように書けるでしょう。: <pre> step self morph warpToHome. </pre> Morph>>leaveMarkerMorph でそのモーフを指す新たな MarkerMorph が返ります。(最初のコードに例があります)。 _ [:masashi | ^umezawa]
次回保存時にアラートメールを送信するメールアドレス一覧: