⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 popxsprite.tpl

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 TPL
📖 第 1 页 / 共 2 页
字号:
	rem try appending with unloaded bitmap
	sp&=spritecreate&:(1,20,40,0)
	id1&=2 : id2&=3
	onerr e3
	spriteappend:(500000,id1&,id2&,1,0,0)
	onerr off
	raise 5
e3::
	onerr off
	if err<>-33 : raise 6 : endif
	
	print "OK"
	rem pause 20
	gcls : cls
endp

proc tchange:
	local id&,idm&,idmm&
	 
	print "Test SPRITECHANGE:"
	
	print "Test changing bitmaps and position"
	sp1&=createsprite1&:(1,&7a120,20,20,&0)
	spritedraw:
	pause%:(10)
	id&=bitmapload&:(kpath$+"grey1.bmp",0)
	spritechange:(0,&7a120,id&,id&,1,10,10)
	bitmapunload:(id&)
	pause%:(10)
	id&=bitmapload&:(kpath$+"grey2.bmp",0)
	spritechange:(1,&7a120,id&,id&,1,10,10)
	pause%:(10)
	spritechange:(3,&7a120,id&,id&,1,10,10)
	bitmapunload:(id&)
	pause%:(10)
	id&=bitmapload&:(kpath$+"black.bmp",0)
	spritechange:(2,&7a120,id&,id&,1,10,10)
	pause%:(10)
	
	print "Test changing mask invert mode"
	spritechange:(2,&7a120,id&,id&,0,10,10)
	pause%:(10)
	idm&=bitmapload&:(kpath$+"stripes.bmp",0)
	spritechange:(2,&7a120,id&,idm&,1,10,10)
	pause%:(10)
	spritechange:(2,&7a120,id&,id&,1,10,10)
	bitmapunload:(idm&)	
	pause%:(10)
	
	print "Test changing time"
	spritechange:(2,1000000,id&,id&,1,10,10)
	pause%:(10)
	spritechange:(2,10000000,id&,id&,1,10,10)
	pause%:(10)
	spritechange:(2,500000,id&,id&,1,10,10)
	pause%:(10)
		
	rem try to change to 2 different sized bitmaps
	idm&=bitmapload&:(kpath$+"stripes1.bmp",0)
	onerr e1
	spritechange:(2,&7a120,id&,idm&,1,10,10)
	onerr off
	raise 1
e1::
	onerr off
	if err<>-2 : raise 2 : endif
	bitmapunload:(id&)
	bitmapunload:(idm&)
		
	rem try changing member which does not exist
	id&=bitmapload&:(kpath$+"grey1.bmp",0)
	onerr e2
	spritechange:(5,&7a120,id&,id&,1,10,10)
	onerr off
	raise 3
e2::
	onerr off
	if err<>-2 : raise 4 : endif
	bitmapunload:(id&)

	rem try to change to unloaded bitmap
	id&=2
	onerr e4
	spritechange:(2,&7a120,id&,id&,1,10,10)
	onerr off
	raise 7
e4::
	onerr off
	if err<>-33 : raise 8 : endif
	
	spritedelete:(sp1&)

	rem try to change a sprite member when none is created
	id&=bitmapload&:(kpath$+"grey1.bmp",0)
	onerr e3
	spritechange:(1,&7a120,id&,id&,1,10,10)
	onerr off
	raise 5
e3::
	onerr off
	if err<>-33 : raise 6 : endif
	bitmapunload:(id&)

	print
	print "OK"
	rem pause 20
	gcls : cls
endp

proc tdraw:
	
	print "Test SPRITEDRAW:"
	print

	rem try to draw without current sprite
	onerr e1
	spritedraw:
	onerr off
	raise 1
e1::
	onerr off
	if err<>-33 : raise 2 : endif

	rem try to draw twice - second one should do nothing
	sp1&=createsprite1&:(1,&7a120,20,2,&1)
	spritedraw:
	spritedraw:
	pause%:(10)
	spritedelete:(sp1&)
	
	rem try to draw when none created
	onerr e2
	spritedraw:
	onerr off
	raise 1
e2::
	onerr off
	if err<>-33 : raise 2 : endif

	print "OK"
	rem pause 20
	gcls : cls
endp

proc tpos:
	
	print "Test SPRITEPOS:"
	
	sp1&=createsprite1&:(1,&7a102,20,20,&0)
	spritedraw:
	pause%:(10)
	rem try to position off screen
	spritepos:(1000,1000)
	pause%:(10)
	spritepos:(20,20)
	pause%:(10)
	spritepos:(-20,-20)
	pause%:(10)
	spritepos:(20,20)
	pause%:(10)
	spritedelete:(sp1&)
	
	rem try to position when no current sprite
	onerr e2
	spritepos:(20,20)
	onerr off
	raise 3
e2::
	onerr off
	if err<>-33 : raise 4 : endif

	print "OK"
	rem pause 20
	gcls : cls
endp

proc tdelete:

	print "Test SPRITEDELETE:"
	
	rem delete a sprite which doesn't exist
	sp1&=2
	onerr e1
	spritedelete:(sp1&)
	onerr off
	raise 1
e1::
	onerr off
	if err<>-33 : raise 2 : endif
	
	print "OK"
	rem pause 20
	gcls : cls		
endp

const KCrystalScreenHeight%=16
const KS5ScreenHeight%=19

proc tuse:
	
	screen 71,2,1,KCrystalScreenHeight%
	print "Test SPRITEUSE:"
	sp1&=createsprite1&:(1,&7a120,20,20,&0)
	sp2&=createsprite2&:(1,&7a120,300,20,&1)
	
	print "Drawing sprite 1"
	spriteuse:(sp1&)
	spritedraw:
	pause%:(10)
	print "Drawing sprite 2"
	spriteuse:(sp2&)
	spritedraw:
	pause%:(10)

	print "Moving sprite 1"
	spriteuse:(sp1&)
	spritepos:(70,40)
	pause%:(10)
	print "Moving sprite 2"
	spriteuse:(sp2&)
	spritepos:(300,90)
	pause%:(10)
	
	print "Deleting sprite 1 and moving sprite 2"
	spriteuse:(sp2&)
	spritedelete:(sp1&)
	spritepos:(300,20)
	pause%:(10)
	print "Try to use sprite 1"
	onerr e1
	spriteuse:(sp1&)
	onerr off
	raise 1
e1::
	onerr off
	if err<>-33 : raise 2 : endif
	
	print "Deleting sprite 2"
	spritedelete:(sp2&)
	pause%:(10)
	
	rem trying to use a sprite when none exists
	sp1&=2
	onerr e2
	spriteuse:(sp1&)
	onerr off
	raise 3
e2::
	onerr off
	if err<>-33 : raise 4 : endif
	
	print "OK"
	rem pause 20 
	screen 71,KCrystalScreenHeight%
	gcls : cls
endp

const KS5ScreenWidth%=91
const KCrystalScreenWidth%=80

proc dispsprite:
	
	screen KCrystalScreenWidth%,KCrystalScreenHeight%
	print "A simple test with one sprite"
	rem pause 20
	cls
	gcls
	rem background for sprite 
	gcolor 0,0,0
	gat 320,0 : gfill 320,120,0
	gcolor $50,$50,$50
	gat 0,120 : gfill 320,120,0
	gcolor 0,0,0
	gat 320,120 : glineto 640,240
	
	sp1&=createsprite1&:(1,&186a0,135,35,&0)
	spritedraw:
	gupdate
	rem pause 40
	spritepos:(455,35)
	gupdate
	rem pause 40
	spritepos:(455,155)
	gupdate
	rem pause 40
	spritepos:(135,155)
	gupdate
	rem pause 40
	spritedelete:(sp1&)
	gcls
	cls
endp

proc twosprites:
	local wid%,ret%,sp3&
	local t1&,t2&,t3&,col&,col%,f1&,f2&,f3&
	
	t1&=1000000
	t2&=1000000
	t3&=1000000
	col&=255
	
	wid%=gcreate(0,0,gwidth,gheight,1,2)

if 0	
	dinit "Enter options for sprites"
	dLong t1&,"Time interval for sprite 1 in microsecs",&0,&7fffffff
	dLong t2&,"Time interval for sprite 2 in microsecs",&0,&7fffffff
	dLong t3&,"Time interval for sprite 3 in microsecs",&0,&7fffffff
	dLong f1&,"Flags for sprite 1",&0,&1
	dLong f2&,"Flags for sprite 2",&0,&1
	dLong f3&,"Flags for sprite 3",&0,&1
	dLong col&,"Colour for background",&0,&100		
	ret%=dialog
	rem if ret%=0 : break : endif
endif

		col%=col&
		gat 0,0 : gcolor col%,col%,col%
		gfill gwidth,gheight,0
	
		sp1&=createsprite1&:(wid%,t1&,20,20,f1&)
		spritedraw:
		sp2&=createsprite1&:(wid%,t2&,250,20,f2&)
		spritedraw:
		sp3&=createsprite2&:(wid%,t3&,480,20,f3&)
		spritedraw:
		pause%:(10)
		spritedelete:(sp1&)
		spritedelete:(sp2&)
		spritedelete:(sp3&)
rem	until 0
	
	gclose wid%
endp

proc lots:
	local sprid&(100),i%,x%,y%,n%
	
	n%=20
	x%=10
	y%=10
	while i%<n%
		i%=i%+1
		if x%>=590
			x%=10
			y%=y%+60
		endif
		sprid&(i%)=createsprite1&:(1,int(200000.0),x%,y%,&0)	
		spritedraw:
		x%=x%+60
	endwh	
	pause%:(10)

	i%=0
	while i%<n%
		i%=i%+1
		spritedelete:(sprid&(i%))
	endwh	
endp

proc delbitmaps:
	
	trap delete kpath$+"black.bmp"
	trap delete kpath$+"grey1.bmp"
	trap delete kpath$+"grey2.bmp"	
	trap delete kpath$+"crossx.bmp"
	trap delete kpath$+"cross+.bmp"
	trap delete kpath$+"plain.bmp"
	trap delete kpath$+"stripesdef.bmp"
	trap delete kpath$+"stripes0.bmp"
	trap delete kpath$+"stripes1.bmp"
	trap delete kpath$+"stripes2.bmp"
endp


PROC pause%:(duration%)
	pause duration%
ENDP


REM End of pOpxSprite.tpl

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -