HyperCardスタックのアイコン

 RunRev は HyperCard のスタックを読み込むことが出来、そのまま RunRev のスタックとして保存することが出来ます。この歳、ボタンのアイコンがちゃんと再現され、カーソル情報もコンバートされます。

 しかしそのシクミを知らないと、うまく活用出来ません。ここではコンバートのシクミと、その活用方法を説明します。


 RunRev のカスタムアイコン

 HyperCard ではアイコンデータはリソースフォークに持っていますが、RunRev はマルチプラットフォームに対応するためにリソースフォークを使いません。 RunRev ではカスタムアイコンのデータを imageオブジェクトとしてスタックに持たせます。 image の ID や名前をボタンにセットする( set the icon of btn AAA to "myIcon" )と、その画像がアイコンとして表示されるわけです。 この時 imageオブジェクト自体はただの画像格納オブジェクトですから、不要であれば Hide しておきます。(削除するとアイコンデータが無くなります)


 RunRev のカスタムカーソル

 カーソルもほぼ同様ですが、画像サイズは 16*16 に制限されます。また必ず ID で呼ばなければなりません。( set the cursor to "myCursor" は無効です) HyperCard のスタックをコンバートしたときにカーソルが再現されない場合は、カーソルの指定を名前ではなく ID に変えてみて下さい。コンバート元のスタックのリソースフォークを ResEdit などで開いて、そのリソースの ID がいくつであったかを調べ、set the cursor to 5001 のようにすれば HyperCard で使っていたカーソルがそのまま使えるようになります。


 コンバートされたアイコン

 HyperCard のスタックを RunRev で保存すると、そのスタックで使われていたアイコンとカーソルが全て imageオブジェクトに変換されて取り込まれます。 これらのイメージは「HC Icons」「HC cursors」というグループになっており、通常は Hidden になっているので見えません。

 このグループを「見える」ようにする一番簡単な方法は、カードを一枚作り、そこに「プレース」する事です。( Object メニューの Place Group から「HC Icons」「HC cursors」を選ぶ) お馴染みのカーソルが(貧相な白黒で)表示されたでしょう。

 グループ内のオブジェクトを編集するには2種類の方法があります。

1)グループを選択して Edit Group ボタンをクリック(または Object メニューから Edit Group を実行)する。 HyperCard のBGモードと同じように、そのグループ内のオブジェクトだけが表示されるようになり、グループ内オブジェクトの編集が可能になる。

2)Select Grouped ボタンをクリックしてハイライトさせる(または Edit メニューから Select Grouped Controls にチェックを入れる)。このモードではグループ化されているかどうかに関係なく個々のコントロールが選択可能になるので、編集したいオブジェクトをクリックする。


 グループを操作する場合の注意

 グループはカードに属するものではなく、スタックに属するものです。グループを選択して Delete キーを押したら、そのグループが「スタックから」削除されます。当該カードからグループを取り除きたい時は、Object メニューの Remove Group を使って下さい。またカード上にグループを置きたい場合は、同じく Object メニューの Place Group を使います。グループをコピーペーストしてしまうと、同じ内容のグループが2つ出来てしまいます。


 アイコンデータの編集−ヘルパーアプリを使う

 アイコンの編集は、すなわち imageオブジェクト内の画像の編集ということになります。 image をダブルクリックして、出てきたインスペクタでエンピツアイコンをクリックすると、画像編集用のヘルパーアプリが立ち上がります。(ヘルパーアプリは Edit メニューの Preferances の General で設定します。設定されていない場合は、エンピツアイコンクリックの時にアプリ選択画面が出ます) このアプリでアイコン画像を編集したあと、RunRev の Update ボタンを押すと、アイコンデータが書き換えられます。 Cancel を押した場合は変更されません。

 ただ、うち( OS9/RunRev2.1.2 )ではうまく行きませんでした。 Graphic Converter をヘルパーアプリにするとアイコンが真っ黒になってしまうし、PhotoShop4 では何やら警告ダイアログが出ます。また日本語版アプリが英語モードで起動してしまうのも困りもの。どなたかこの機能使えてる方いませんか。


 アイコンデータを作る−RunRevのペイントツール

 編集できないならゼロから作るしかありません。まずアイコン用にカードを一枚用意し、そこに imageオブジェクトを作ります。このカードはユーザーには見せません。もしそういう構造が嫌なら、メインのカード上に imageオブジェクト(や、それらのオブジェクトをまとめたグループ)を作り、ユーザーに見えないように Hide する必要があります。 Hide したオブジェクトは Tools メニューの Application Browser で開くブラウザで操作するか、View メニューの Show Invisible Objects で見える状態にしないといじれません。私はその管理が面倒なので、別途カードを作ってしまいます。

 imageオブジェクトを作ったらダブルクリックして、インスペクタから縦横のサイズを設定しておきます。絵を描いてから imageオブジェクトの大きさを変えると、それに合わせてイメージが拡大縮小されてしまうからです。また imageオブジェクトの Border はオンにしておきます。こうしないとお絵描き中に imageオブジェクトの位置や大きさが分からなくなるからです。ついでに名前も付けておきましょう。

 Tools メニューの Paint Tool にチェックを入れてペイントパレットを出し、ペイントツールで imageオブジェクト内にテキトーにお絵描きします。 Commandキー(マック:Window と Linux では Control キー)を押しながらペンツールでイメージをクリックすると、magnify(拡大)モードになり、ドット単位の編集が出来るようになります。ただしこの時、慎重にアイコンの黒い部分をクリックする必要があります。余白部分をクリックすると、既存のイメージを編集するのではなく、新規に作られた(カードいっぱいの大きさの)イメージを編集することになってしまいます。

 他のグラフィックツールで編集したパターンを imageオブジェクト内にペーストする場合は注意が必要です。何故か必ず「一番手前の」 imageオブジェクトにペーストされてしまいます。またイメージを選択せずにいきなりペイントツールを使うと、新しい imageオブジェクトが(カードいっぱいの大きさで)作られてしまいます。カラーはフルカラーから選択できますが、スポイトツールやカラーパレットが無いために、色の選択が面倒です。いずれにしろペイントツールの操作性はイマイチですね。アイコン専用のツールが欲しいところです。

 ペイントツール使用中もツールパレットはブラウズツールやポインタツールの表示のままになっていて、今どのツールを使っているか分からなくなることがあります。ペイントを終える時はブラウザツールかポインタツールを選択し直します。


 アイコンデータの編集−RunRevのペイントツール

 コンバート時に自動で取り込まれたものをペイントツールで修正することも出来ます。この時気を付けなければならないのは、グループのままでは( Select Grouped Object オンでも) imageオブジェクト内をペイントツールで編集出来ないことです。だからといってグループを解除してしまうのはリスクが高いのでやめた方がいいでしょう。 Edit Group ボタンをクリック(または Object メニューから Edit Group を実行)してグループ編集モードに入れば、個々の imageオブジェクトをペイントツールで編集出来るようになります。


 アイコンデータを作る−ファイルの取り込み

 どうせ他のアプリを使うなら、一旦ファイルとして保存した方が後の修正が楽な場合があります。グラフィックアプリケーションでアイコンをデザインし、一旦 JPEG か GIF か PNG ファイルとして保存します。( PICT でもいいのですが、取り込み時に PNG に変換されます) File メニューの Import As Control の Image File... でそのファイルを選択すると、その画像を imageオブジェクトとしてスタックに取り込むことが出来ます。あとの扱いはペイントツールでお絵描きした場合と同じです。ユーザーから見えない場所に imageオブジェクトを置くか、Hide しておきましょう。

 保守性や操作性を考えるとこの方法がベストのように思えますが、取り込んだ画像の大きさそのままの image が出来てしまうという欠点があります。それのどこが欠点かと言うと、例えば周りを透明に抜いた、「アイコンの形そのままのアイコン」が作れないことです。 GIF や PNG の透明機能を使えば可能なようですが、あいにく私の手元にはそれが出来るアプリがありません。いい方法があったら教えて下さい。


 アイコンデータを作る−他のスタックからの取り込み

 他のスタックで使われているアイコンが欲しい場合があります。 HyperCard 同士ならボタンのコピーでアイコンまでコピーされるのですが、RunRev ではそうは行きません。他の HyperCard のスタックで使われているアイコンを RunRev にコピーするには、まずスタックを RunRev に変換してから、「 HC Icons 」グループ内の imageオブジェクトを RunRevスタックにコピーします。これ以外にも、スタックのリソースフォークを開き、アイコンをコピーして RunRev の imageオブジェクトにペーストすると言う手もありますが、余白部分が白になった(四角い)アイコンになってしまいます。


 アイコンデータの表示

 先に触れたように、ボタンにアイコンを表示させるのは set the icon ... で出来ますが、もう少し面白い使い方も出来ます。imageオブジェクトのインスペクタに表示される visible や Show Border は「 imageオブジェクト」のプロパティですが、 Blend はイメージそのものの設定です。つまり「ちょっと薄いアイコン」が作れるのです。アイコンを表示するボタンを透明に設定すれば、「ちょっと薄くて後が透けるアイコン」になります。 imageオブジェクトの Blend プロパティはスクリプトで設定可能ですから、ちょっとした画面効果を作れるかも知れません。アニメーションGIFを使えば動くアイコンも可能です。

 imageオブジェクトはサイズを変えるとイメージまで変形しますが、そのイメージをアイコンとして表示しているボタンは、大きさを変えても(見える範囲が変わるだけで)イメージそのものは変わりません。 imageオブジェクトをそのまま使うか、ボタンのアイコンとして使うかは、このへんが分かれ道かも知れません。


2004.06.02
2004.06.04
UDI

inserted by FC2 system