〜 グラフィック 〜
ワイプ

場面変更をする時に使用する画面効果の1つで、ワイパーのように画面を切り替えるサンプルで、
主に変更元画像を上書きするように変更先画像でカーテン(横方向時)を引くようにスライドさせます。
下記のサンプルは、上下左右の4方向から指定した変更元画像を変更先画像に切り替えるモジュールです。
	

slide 読込元バッファ, X座標, Y座標, 横幅, 高さ, 回数, 方向
読込元バッファコピーするウィンドウIDを指定する
X座標コピーする画像の基点X座標指定する
Y座標コピーする画像の基点Y座標指定する
横幅コピーするX方向のサイズを指定する
高さコピーするY方向のサイズを指定する
回数完全に表示するまでの繰り返し回数を指定する
方向表示していく方向(0:左から右 1:上から下 2:右から左 3:下から上)を指定する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#module
#deffunc slide int, int, int, int, int, int, int
	mref id, 0 : mref px, 1 : mref py, 2 : mref sx, 3 : mref sy, 4 : mref times, 5 : mref dir, 6
	i = csrx, csry
	if times > 0 {
		repeat times - 1, 1
			i.2 = dir \ 2 = 0, dir \ 2 = 1
			if dir < 2 {
			  i.4 = sx * cnt / times - sx, sy * cnt / times - sy
			} else {
			  i.4 = sx - (sx * cnt / times), sy - (sy * cnt / times)
			}
			redraw 0
			pos i.2 * i.4 + i.0, i.3 * i.5 + i.1
			gcopy id, px, py, sx, sy
			redraw 1
			wait 1
		loop
	}
	pos i.0, i.1 : gcopy id, px, py, sx, sy
	return
#global

	buffer 2
	picload "sample/demo/oniinfo.jpg"
	buffer 3
	picload "sample/hspdx/hspdx.bmp"
	gsel 0
	gcopy 2, , , winx, winy        // 元の背景画像
	slide 3, , , winx, winy,  8, 0 // 左から右方向へ8ターンで切り替える
	slide 2, , , winx, winy, 16, 1 // 上から下方向へ16ターンで切り替える
	slide 3, , , winx, winy, 32, 2 // 右から左方向へ32ターンで切り替える
	slide 2, , , winx, winy, 64, 3 // 下から上方向へ64ターンで切り替える
	stop

slide 読込元バッファ, X座標, Y座標, 横幅, 高さ, 回数, 方向
読込元バッファコピーするウィンドウIDを指定する
X座標コピーする画像の基点X座標指定する
Y座標コピーする画像の基点Y座標指定する
横幅コピーするX方向のサイズを指定する
高さコピーするY方向のサイズを指定する
回数完全に表示するまでの繰り返し回数を指定する
方向表示していく方向(0:左から右 1:上から下 2:右から左 3:下から上)を指定する

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#module
#deffunc slide int id, int px, int py, int sx, int sy, int times, int dir, local i
	i = ginfo_cx, ginfo_cy
	if times > 1 {
		repeat times - 1, 1
			i.2 = dir \ 2 = 0, dir \ 2 = 1
			if dir < 2 {
			  i.4 = sx * cnt / times - sx, sy * cnt / times - sy
			} else {
			  i.4 = sx - sx * cnt / times, sy - sy * cnt / times
			}
			redraw 0
			pos i.2 * i.4 + i.0, i.3 * i.5 + i.1
			gcopy id, px, py, sx, sy
			redraw 1
			wait 1
		loop
	}
	pos i.0, i.1 : gcopy id, px, py, sx, sy
	return
#global

	buffer 1
	picload "sample/demo/sky_bg.jpg"
	buffer 2
	picload "sample/hspdx/hspdx.bmp"
	wx = ginfo_winx : wy = ginfo_winy
	gsel 0
	gcopy 1, , , wx, wy        // 元の背景画像
	slide 2, , , wx, wy,  8, 0 // 左から右方向へ8ターンで切り替える
	slide 1, , , wx, wy, 16, 1 // 上から下方向へ16ターンで切り替える
	slide 2, , , wx, wy, 32, 2 // 右から左方向へ32ターンで切り替える
	slide 1, , , wx, wy, 64, 3 // 下から上方向へ64ーンで切り替える