>1.画像を描画させたいが、その画像のポジションは表示させる座標をposにて定義させるという認識で正しいか
そんな感じです。
wparamからレイヤーを設置した時のカレントポジションが取得できるので、
それを参照しながら描画を行うと表示位置を固定することができます。
指定した位置の指定した範囲へだけ自動的に描画される、というものではないです。
>2.命令のp3(レイヤーID)とは、描画前のレイヤーか描画後のレイヤーのどちらであるか
すみませんが、質問の意味がよく分かりませんでした。
レイヤーIDは描画順を定数で指定するものだと認識しています。
objlayer_min,bg,normal,posteff,maxの5つですね。
例えばredraw 0のタイミングではminから順に呼び出されます。
>3.例えばボタンを押した瞬間に画像を表示させるスクリプトを作る際はどのようなコードが適しているか(具体的に提示してくださると嬉しいです)
適しているかは分かりませんが書いてみました。
#enum OBJID_BUTTON=0
#enum OBJID_LAYER
*main
//ボタンを設置する
button gosub "画像表示",*btn
//レイヤーを設置する
layerobj 640,200,objlayer_normal,*layer;画像はこのサイズで分割される
//表示したい画像を指定する
picturePath=dir_tv+"hsp3dish.png"
exist picturePath
if (strsize==-1) {
dialog "ファイルが見つかりません。",1,"エラー"
end
} else {
objprm OBJID_LAYER,picturePath
}
stop
*btn
//ボタンが押されたら画像を表示する
objprm OBJID_LAYER,0;表示したい分割№を指定する
return
#define ctype getPosition(%1) objinfo(%1,objlayer_info_axis)
#define ctype getSize(%1) objinfo(%1,objlayer_info_size)
#define ctype getX(%1) (%1&$ffff)
#define ctype getY(%1) (%1>>16&$ffff)
*layer
switch lparam
case objlayer_cmdinit
//設置された時にレイヤーの位置とサイズを取得する
position=getPosition(wparam)
size=getSize(wparam)
return
case objlayer_cmdprms
//文字列を渡された時は画像のファイルパスとして扱う
loadPicture getX(size),getY(size),refstr
return
case objlayer_cmdprmi
//int値を渡された時は分割画像№として扱う
drawPicture getX(position),getY(position),iparam
return
default
//それ以外は何もしない
return
swend
#enum WNDID_MAIN=0
#enum WNDID_BUFFER
//画像ファイルをバッファに読み込んで分割する
#deffunc loadPicture int xSize,int ySize,str picPath
celload picPath,WNDID_BUFFER
celdiv WNDID_BUFFER,xSize,ySize
return
//読み込んだ画像をレイヤー内に描画する
#deffunc drawPicture int xPos,int yPos,int picNum
pos xPos,yPos
celput WNDID_BUFFER,picNum
return