アルファレイヤーのWindowsメッセージ割り込み指定
alalCallback p1,*label
(プラグイン / モジュール : a2d+AlphaLayer)
アルファレイヤー子ウィンドウにウィンドウメッセージが送られたときに割り込みジャンプするラベルを指定します。 この命令を使うと、アルファレイヤー子ウィンドウにコールバックをセットしてサブクラス化することができます。 割り込みによりジャンプを行なった後はシステム変数iparam、wparam、lparamがセットされます。 割り込みが発生したArtlet2D仮想イメージIDは、 ginfo(24)またはginfo_intidにより取得することができます。
割り込み要因 | iparam | wparam | lparam |
---|---|---|---|
SetCallbackAlphaLayer | メッセージID | wParam | lParam |
システム変数iparamには、送信されたメッセージIDが代入されます。 また、wparam,lparamはWindowsメッセージとして渡されたパラメータがそのまま格納されています。 statには割り込みが発生したArtlet2D仮想イメージIDが持つアルファレイヤー子ウィンドウのウィンドウハンドルが格納されています。 この機能を使うことで、アルファレイヤーがクリックされたりすることを検知できるようになります。 また、ラベル先ではstopをしないで、必ずreturnしてください。 waitもしてはダメです。 基本的に、コールバックで受け取ったメッセージは DefWindowProc を使ってスルーしています。 return -1 とすることで通常処理させることも可能です。(モジュール側でCallWindowProcします。) alalSetParent の第5引数でもメッセージ割り込みラベルの指定ができます。 コールバックを解除するには、p2を省略した alalCallback を実行してください。
マウスの通過でもラベルジャンプが行われ、wait/awaitの待機時間が無効化されてしまいます。 timer_waiton/timer_awaiton を併用してください。 (mod_TimerRepeat.hsp をインクルードすればwait/awaitの機能が上書きされます。)
#include "a2d+AlphaLayer.hsp" #include "mod_TimerRepeat.hsp" // キャラ素材ロード alCreateImageByFile 0, dir_tv+"tamadot.png" // キャラ alCreateImage 1, 64,64 ; 仮想イメージ(イメージID 1) alalSetParent 1,,, 100,380 alalCallback 1,*click mes "珠音ちゃんをクリックしてみよう!" // alCopyImageToImage と alalRedraw を繰り返す repeat alErase alCopyImageToImage 0,1, 0,0,64,64, 64*(4+cnt\4),0 ; 歩きモーション alalRedraw 1 wait 50 if dame>0 { while dame dame = 0 wait 100 wend } loop stop *click switch iparam case 0x0201 ;WM_LBUTTONDOWN mes "痛っ!" dame=1 alCopyImageToImage 0,1, 0,0,64,64, 64*1,0 ; ダメージモーション alalRedraw 1 alalGetRect 1, rect ; アルファレイヤー(ID 1)の位置を取得 alalWidth 1, ,, rect(0),rect(1)-20 ; アルファレイヤー(ID 1)の位置を移動 swbreak swend return
alalSetParent | Artlet2D仮想イメージをアルファレイヤー子ウィンドウとして描画先ウィンドウに貼り付ける | (a2d+AlphaLayer) |
alalWindow | Artlet2D仮想イメージを用いてレイヤードウィンドウを作成 | (a2d+AlphaLayer) |
alalRedraw | アルファレイヤーにArtlet2D仮想イメージを再描画する | (a2d+AlphaLayer) |
alalCallback | アルファレイヤーのWindowsメッセージ割り込み指定 | (a2d+AlphaLayer) |
alalShow | アルファレイヤー子ウィンドウを表示させる | (a2d+AlphaLayer) |
alalIsShown | アルファレイヤー子ウィンドウが表示されているか取得 | (a2d+AlphaLayer) |
alalHide | アルファレイヤー子ウィンドウを非表示にする | (a2d+AlphaLayer) |
alalAlpha | アルファレイヤーの透明度を設定する | (a2d+AlphaLayer) |
alalWidth | アルファレイヤー子ウィンドウのサイズ・位置設定 | (a2d+AlphaLayer) |
alalGetRect | アルファレイヤー子ウィンドウの左上・右下座標の取得 | (a2d+AlphaLayer) |
alalZtop | アルファレイヤーをZオーダー(表示順序)の一番上に配置する | (a2d+AlphaLayer) |
alalZbottom | アルファレイヤーをZオーダー(表示順序)の一番下に配置する | (a2d+AlphaLayer) |
alalZnext | アルファレイヤーのZオーダー(表示順序)を指定したウィンドウの下に配置する | (a2d+AlphaLayer) |
alalIsOnLayer | マウスカーソルがアルファレイヤーの上に乗っているか取得 | (a2d+AlphaLayer) |
alalWindow_SetTransparent | alalWindowで作成したレイヤードウィンドウのクリック透過モードを変更 | (a2d+AlphaLayer) |
03.アルファレイヤーのクリック.hsp | #include "../a2d+AlphaLayer.hsp" alalCallback でアルファレイヤー.. |
EX1.スライドインメニュー【timer_repeat内に別のtimer_repeatを記述】.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
EX4.Floppy-Word【アルファレイヤー/タイマーリピート利用ミニゲーム】.hsp | #include "hsptvapp.as" GitHubからモジュールを取得。 #include "../a.. |
プラグイン / モジュール | a2d+AlphaLayer |
バージョン | 2.4 |
作成日 | 2024/1/5 |
著作者 | MIZUSHIKI |
URL | http://suwa.pupu.jp/ |
備考 | a2d+AlphaLayer.hspをインクルードすること。 対応OS:Windows 8 以降 |
タイプ | 拡張命令 |
グループ | プログラム制御命令 |
対応環境 | ・Windows 版 HSP |