〜 グラフィック 〜
プレス

場面変更をする時に使用する画面効果の1つで、押しつぶすように画面を切り替えるサンプルです。
ワイパー処理と似ていますが、ワイパーはスライドさせて画面切り替えているのに対し、
プレスは変更元画像の縮小・変更先画像の拡大で画面切り替えをしています。
	

press 変換前, 変換後, X座標, Y座標, 横幅, 高さ, 回数, 方向
変換前変換前とするウィンドウIDを指定する
現在の画面を変換前としたい場合は、仮想バッファにコピーして使用すること
変換後変換前とするウィンドウ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 press int, int, int, int, int, int, int, int
	mref before, 0 : mref after, 1 : mref px, 2 : mref py, 3 : mref sx, 4 : mref sy, 5 : mref times, 6 : mref dir, 7
	i = csrx, csry
	if times > 1 {
		repeat times
			if dir < 2 {
			  i.2 = sx * cnt / times, sy * cnt / times, before, after
			} else {
			  i.2 = sx - (sx  * cnt/ times), sy - (sy * cnt / times), after, before
			}
			redraw 0
			pos i.0, i.1
			gzoom (dir \ 2 = 1) * (sx - i.2) + i.2, (dir \ 2 = 0) * (sy - i.3) + i.3, i.5, px, py, sx, sy
			pos i.2 * (dir \ 2 = 0) + i.0, i.3 * (dir \ 2 = 1) + i.1
			gzoom sx - (i.2 * (dir \ 2 = 0)), sy - (i.3 * (dir \ 2 = 1)), i.4, px, py, sx, sy
			redraw 1
			wait 1
		loop
	}
	pos i.0, i.1 : gcopy after, px, py, sx, sy
	return
#global

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

press 変換前, 変換後, X座標, Y座標, 横幅, 高さ, 回数, 方向
変換前変換前とするウィンドウIDを指定する
現在の画面を変換前としたい場合は、仮想バッファにコピーして使用すること
変換後変換前とするウィンドウ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 press int before, int after, int px, int py, int sx, int sy, int times, int dir, local i
	i = ginfo_cx, ginfo_cy
	if times > 1 {
		repeat times
			if dir < 2 {
			  i.2 = sx * cnt / times, sy * cnt / times, before, after
			} else {
			  i.2 = sx - sx * cnt / times, sy - sy * cnt / times, after, before
			}
			redraw 0
			pos i.0, i.1
			gzoom (dir \ 2 = 1) * (sx - i.2) + i.2, (dir \ 2 = 0) * (sy - i.3) + i.3, i.5, px, py, sx, sy
			pos i.2 * (dir \ 2 = 0) + i.0, i.3 * (dir \ 2 = 1) + i.1
			gzoom sx - i.2 * (dir \ 2 = 0), sy - i.3 * (dir \ 2 = 1), i.4, px, py, sx, sy
			redraw 1
			wait 1
		loop
	}
	pos i.0, i.1 : gcopy after, 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
	press 2, 1, , , wx, wy,  8, 0 // 左から右方向へ8ターンでID1画像をID2画像に切り替える
	press 1, 2, , , wx, wy, 16, 1 // 上から下方向へ16ターンでID2画像をID1画像に切り替える
	press 2, 1, , , wx, wy, 32, 2 // 右から左方向へ32ターンでID1画像をID2画像に切り替える
	press 1, 2, , , wx, wy, 64, 3 // 下から上方向へ64ターンでID2画像をID1画像に切り替える