|
最近アプリケーションを開いた時、スプラッシュウインドウなどで切り抜きのウインドウが出ることよくがありますが、それをRev で作ってみます。
これはスクリプトで操作というより、イメージをうまく作れるかなどがより重要になります。形が決まったら、透明 PING が作れるプログラム(Illustrator や PhotoShop など)で、PNG-24 透明ファイルを作ります。この 003.rev で使ったイメージをJPEG にしたのが下図です。左と上部分のグレーのチェックパターンが、PING 原稿の透明部分です。つまりそれ以外の部分がウインドウの形ですね。(この型録は MacOSX とWindows XP を主に考えて作っています、Mac Classic では切り抜きウインドウにならないかもしれません)

このPING 原稿は、400 x 400 で作っていますから、そのサイズのメインスタックを開いている上にメニューの File > Import As Control > Image File... で、透明 PING ファイルをインポ−トします。(または透明GIF でも可)インポートしたら、イメージのプロパティーインスペクターで ID を確認してください。下の図では 1003 がこのイメージのID です。
注:イメージファイルまでの途中に、日本語フォルダー名があるとインポートできません。


次に、このスタックのプロパティインスペクターの Shape を、上で確認した ID の 1003 にすると、PING イメージの透明部分が切り抜きとなって、ウインドウのシェイプが現れます。直線で形を作るのはさほど難しくはないのですが、カーブのラインをきれいに切り抜こうとするのは、ちょっとしたコツが必要です。実は私自身まだあまり深く、そのあたりの経験は積んでいないのですが、PhotoShop で透明部分をアンチエイリアスで作ったりすると、かなり汚くなります。普通アンチアイリアスの中間トーンは、バックの白地にとけ込んできれいに見えるはずですが、そのあいまいなトーンもすべてウインドウの形になって現れてくるためです。そのあたりの注意をしながら、透明イメージを作らなければいけないですね。
もうひとつ大事なポイントがあります。
切り抜きウインドウを作ると、ウインドウのタイトルバーがなくなるなので、必要に応じてどこかにウインドウを動かすハンドルを付けなくてはいけません。003.rev では、ウインドウのどこででもマウスで動かせるように、下記のスクリプトを全体を覆っているイメージ内に書き込んでいます。
local は、ローカル(そのオブジェクトのスクリプトエディター内と解釈しています)の、すべてのハンドラーで共通に使える variable を宣言します。
local allowDrag
on mouseDown
put mouseH() & "," & mouseV() into allowDrag
end mouseDown
on mouseMove x,y
if allowDrag is empty then exit mouseMove
set topLeft of this stack to \
globalLoc(x-item 1 of allowDrag & "," & y-item 2 of allowDrag)
end mouseMove
on mouseUp
put empty into allowDrag
end mouseUp
on mouseRelease
mouseUp
end mouseRelease
003 付録: answer や ask でカスタムアイコンを出す
これから書く事は Mac OSX でのみ有効です。
answer やask で自分の好みのアイコンを出すには、まず 64 x 64 のイメージをスタックにインポートします。インポートはイメージシェイプと同じように、File > Import As Control > Image File... です。このイメージも ID を確認してください。 003.rev のサンプルスタックでは、1008 になっています。 Stack Script にグローバルで gRevAppIcon を宣言して、以下のスクリプトを書き込みます。
on startUp
global gRevAppIcon
put "1008" into gRevAppIcon
end startUp
answer , ask は普通のXTalk のマナーで書いてください。特にアイコン指定の必要はありません。もし Mac OSX のウインドウのトップから下りてくるダイアログにしたい場合は、
answer "something" with "Cancel" or "OK" as sheet
のように最後に「as sheet」を付けます。

開発環境では、このアイコンが反映されないことがあります(今の処、原因不明)。スタンドアロンにしたスタックをダウンロード (RCH003OXS.sit) できます。
|