あまつぶ

2.27 1:00 【ZenmaiStudioIIとTelnet】

 iMacパズル(QuickTime 3が必要)、やった? 別に解けたらなにかがもらえるとかいうわけじゃないけど、「QuickTimeってこんなことができるんだ」ってのを見てみるだけでも価値があるかも。単なるムービー再生ツールじゃないんだよってことを。
 ZenmaiStudioIIを手に入れたのでちょっといじってみている。といってもムービーにする前の素材がないから、適当にこれまでに描いたものを物色。まずは自転車のページにあるGIFアニメの元絵からほぼ同じ動きをするムービーを作成してみた。前に作ったアニメーションはIconPartyで絵を描いておいてそれをクラリスワークス上で重ね合わせて40コマくらいのセルをすべて手動で作り、それらを1つ1つコピーしてGifBuilderでGIFに……というとんでもなく面倒な作業で作ったものだった。本当はもっと長いものを作りたかったのだけど、そこまでやる気力が起こらない(^^;;
 同じようなものをZenmaiStudioIIで作ってみると、まず背景を最初のタップに読み込み、アニメーションをずるーっとドラッグして2秒間同じ絵を使うようにする。次にカメラ&タップ表示に切り替え、横移動を設定。前で動く自転車の方は3つ絵を切り替えているからフォルダで指定して最初の3フレームの絵を設定、あとは内容をコピーしていく(また、白を透明にする)。絵の位置はずっと変わらないから最初の位置を指定したらおしまい。プレビューを見ていい感じになっていればムービーで保存すれば完成。
 普通のムービーとして保存するのとは別に、スプライトトラックとして保存することもできる。この方法だとそれぞれの絵がスプライトとして保存されるのでコマ数が増えても容量がほとんど変わらないというメリットがありそうだ(今回作ったものについては普通に保存したものの方が軽かったが)。
 こんな簡単にできていいの? とちょっと思ったが、考えてみればこれがふつうなのかも知れない。前にやった作業がめんどくさすぎたというだけで。作業が楽になったら、あとはなにを作るかが問題かな。もう少し練習して使い方に慣れてきたらなんか作ってみたいな。
 作ったムービーをGIFに変換するのは、GifBuilderで簡単にできるみたい。あんまり大きなものを作ると時間がかかって大変だけど、大きなものを作るならわざわざGIFにする必要もないか。QTのプラグインがどのくらい普及しているのかわからないけど、今なら結構いけそうな気がするし。OS8.5にQT3ProがバンドルされていたからQT3以降が必要でもokって人が多そうだし。

 例の枠の件もメモリリークの件も未だ解決せず。というか、手をつけていなかったともいう(^^;;
 TCPのテスト用スタックでルータに手動でつないで適当にいじっていたら最初はなんだかわからない読めない文字が送られてきていたのに突然「Password:」とパスワードを要求してきた。パスワードを入力してみると、なんとログイン成功。なんと日本語もなんの問題もなく表示され、コマンド入力もちゃんと受け付けてくれた。
 Telnetってなんだか難しそうな気がしていたのだけど、最初の接続部分さえクリアすればあとはなんとでもなるみたい。接続部分の細かいことはちゃんとRFCを読まないとまずいんだろうけど、ルータにログインするだけならとりあえずなんとかなりそうな感じ。例によってsentTCPを使い、ルータ専用のTelnetクライアントを作成。もう少しいじってやれば他のサーバにも接続できるものができそうだけど、、BetterTelnetとかを使う方がどう考えても便利か。それならルータ用のコマンドをメニューから呼び出せるように……という方が面白いかも知れない。
 ま、そういったソフトよりもっと機能を限定して「接続/切断」とかいくつか主要な機能の設定が変更できるものの方が使いやすいかな。複雑なことをさせようと思わなければアプリケーションで作ってもそれほど難しくはなさそうだし。ま、まずは接続/切断だけでもいいから試しにやってみようかな。どのくらい需要があるのかわかんないけど(そもそも同じルータを持っている人しか必要ないだろうし)。
 20:30【いろいろ解決】

 枠が出てしまう問題については、情報パレットをカレントポートにしてから呼び出すようにして無理やり解決。枠が表示される場所は結構右の方だから枠を表示しようとしても表示されないし、ダイアログを出す前にパレット自体を隠すようにしてあったので表示してしまっても問題ないと。あまり気持ちのいい方法ではないが、ちゃんとした方法が見つかるまでは仕方ないかな。ま、1行で解決できるんだからそれなりにいい方法かも知れないが。
 それから、Navigation Servicesを使った保存ダイアログでファイル名を変更する方法。ヘッダファイルをながめていたら「kNavCtlGetEditFileName」とか「kNavCtlSetEditFileName」とかいう定数を発見。横に注釈で「get save dlog's file name」と書いてあるし、やりたいと思っていることをするためのものかも知れない。ざっとヘッダ内のプロトタイプをチェックして「NavCustomControl」という関数がそれらしいとあたりをつける。使い方まではヘッダファイルを見てもわからないのでここはドキュメントをチェック。やはり思ったとおりで、イベントのコールバックルーチンでこの関数を使えばファイル名を変更したりできるらしい。
 そうとわかれば早速やってみるべし。引数の指定方法がよくわからなくて何度かデバッガに落ちたが、なんとかうまくいった。拡張子を変更した時には拡張子以外の部分を選択するようにしてみたが、この選択機能はNavigation Services 1.1以降でしかサポートされていないんだそうな。ま、8.0とか8.1でSDKをダウンロードしてインストールしているひと以外は問題ないんだろうけど(^^;;
 ソースをどう確認してみても原因がわからなかったメモリリークも解決した。RgnHandleを使っている場所をすべてチェックして(といっても数カ所だが)念のために注釈にしてチェックしてみたりしたが原因がわからず。アップデートでリークが生じているのだろうと思っていたのだがウィンドウを再描画させただけではなにも問題は起こらない。アプリケーションを切り替えれば確実に起こるし、、と調べていくと、原因は情報パレットの再描画だった。が、その部分のソースはコントロールを再描画させているだけだから関係ないはずだし……、、でも、コントロールをドラッグするとすごい勢いで10バイトのハンドルが増えていくのは見ていて恐い。
 いくらチェックしてもうちのソースには問題は見つからないし、もしやと思ってCDEFのソースもチェックしてみた。リージョンを使っているのは3ケ所で、どこも問題なさそうな感じだ。一体なにがまずいんだろう。自分でコンパイルしたわけじゃないから、このソースの内容とコンパイル済みのCDEFの内容が一致していないってこともあり得るのか??
 CDEFが入っているフォルダにはバージョン1.50と書いてある。確か1.51というバージョンがあったはずだよな……。そう思って1.51を探しに出かける。あっさりと見つかって展開してみると、中身はドキュメントとソース。そこまできて、やっと「あ、そういえばいくつかのCDEFにはメモリリークのバグがあって1.51で修正したと書いてあったのを読んだなぁ」と思い出した。その時はTab Panelだけしか必要なかったので他のCDEFは無視してたんだ。ソースが入っているだけだから使いたい時には自分でコンパイルしなおさないといけなかったと。
 プロジェクトをコンバートしてコンパイル……、若干のエラーはあったもののコンパイルはすぐできた。68kバージョン、ppcバージョンとも完成し、あとはFATバイナリにするだけ。方法はだいたいわかっているからすぐできるだろうと、INITをFATにするときに使ったソースをコピーしてきてFAT CDEFを作成。それで実行、、いきなりフリーズ(苦笑)。何ケ所か修正して、、と、フリーズはしなくなったがコントロールが表示されない。68kバージョン、ppcバージョンのみを試すと問題ないからFATにするところでなにかまずいらしい。
 しばらく悩んで、、procInfoが間違っていることに気付いたが、いくつに設定したらいいのかわからない。これも試行錯誤して、、結局はControls.hに書いてあった。それを入力して実行。フリーズも表示されないこともなく、ZoneRangerでチェックしてもメモリリークはなく、めでたく解決。ふー。なんかしょうもないことでいろいろ苦労したけど解決したからまあよかったかな。

 ルータのソフトの方は、まだ1行もプログラムを書いていないけどとりあえずクリエータコード申請だけしておいた。あと、プログラムの前にアイコンを描いた(めずらしい)。そこそこ気に入ったのでこのアイコンを使うためでもいいからプログラムを書こう(^^;; QT-Qの悩ましい問題が2つ一気に解決したから、取り消しルーチンを作って保存ルーチンの手直しをして、、とQT-Qの次のバージョンのリリースの方が先かもしれないけど。
 あ、あと、関係ないけどIconPartyでWin用の256色アイコンを書き出す機能を追加。なにに使うのかはともかく。しかし、、なんであんなわけのわからん保存方法なんだろう……。すぐできるかと思ったら意外と手間取ってしまった。ふむむ。
 長くなってインライン入力が異様に重たいので今日はこんなもんで。

to February 25, 1999 ↑ to February index → to February 28, 1999