; hsp3dish の celput で背景画像のオーバーラップ切り替えをするテスト #include "hsp3dish.as" #packopt name "celput_overlap" #packopt type 0 #packopt xsize 1280 #packopt ysize 720 ; ウインドウID:0 初期化 screen 0, 1280, 720, screen_normal title "celput overlap" ; 画像ファイル群を列挙 sdim bgs, 256, 4 bgs(0) = "black.png" bgs(1) = "bg_1280x720_0b.jpg" bgs(2) = "bg_1280x720_1b.jpg" bgs(3) = "bg_1280x720_2b.jpg" bgs(4) = "bg_1280x720_3b.jpg" bgmax = length(bgs) ; 画像読み込み bgid = 4 repeat bgmax id = bgid + cnt celload bgs(cnt), id loop ; 描画先ウインドウIDを指定 gsel 0 step = 0 bg_current = 0 wait_frame = 60 * 3 count = wait_frame *mainloop ; ESCキーで終了 stick key, $ff if key & $80 : goto *jobend redraw 0 ; 描画開始 ; 現在、及び、次の描画元画像バッファIDを取得 nowid = bgid + bg_idx newid = bgid + ((bg_idx + 1) \ bgmax) switch step case 0 ; 通常描画 gmode 2 pos 0, 0 celput nowid count = count + 1 if count >= wait_frame { step = step + 1 count = 0 } swbreak case 1 ; オーバーラップで描画 count = count + 4 if count >= 256 { ; 次の画像に切り替わった gmode 2 pos 0, 0 celput newid step = 0 count = 0 bg_idx = bg_idx + 1 if bg_idx >= bgmax { bg_idx = 0 count = wait_frame } } else { ; 切替中 gmode 2 pos 0, 0 celput nowid ; 透明度を指定して描画 gmode 3, , ,count pos 0, 0 celput newid } swbreak swend redraw 1 ; 描画終了 await (1000/60) ; 時間待ち goto *mainloop *jobend end