97 行
1.2 KiB
Plaintext
97 行
1.2 KiB
Plaintext
#ifndef __MY_BUTTON__
|
|
#define __MY_BUTTON__
|
|
|
|
#module \
|
|
MyButton
|
|
|
|
#const SIZE_X 240
|
|
#const SIZE_Y 120
|
|
|
|
#const ZOOM 0.8
|
|
|
|
#defcfunc local \
|
|
New \
|
|
int p_posX,\
|
|
int p_posY,\
|
|
int p_bufferId,\
|
|
label p_onClicked
|
|
posX.insNum = p_posX
|
|
posY.insNum = p_posY
|
|
bufferId.insNum = p_bufferId
|
|
onClicked.insNum = p_onClicked
|
|
touching.insNum = False
|
|
|
|
exists.insNum = True
|
|
|
|
insNum++
|
|
|
|
Return insNum - 1
|
|
|
|
#deffunc local \
|
|
Destroy \
|
|
int p_insId
|
|
exists.p_insId = False
|
|
|
|
Return
|
|
|
|
#deffunc local \
|
|
Interval \
|
|
int p_insId,\
|
|
local l_id,\
|
|
local l_touchInfo
|
|
MTList l_id
|
|
|
|
If stat = 0 {
|
|
touching.p_insId = False
|
|
|
|
Return
|
|
}
|
|
|
|
If touching.p_insId {
|
|
Return
|
|
}
|
|
|
|
MTInfo l_touchInfo, l_id.0
|
|
|
|
touching.p_insId = True
|
|
|
|
If l_touchInfo.1 < posX.p_insId - ZOOM * SIZE_X / 2 {
|
|
Return
|
|
}
|
|
|
|
If l_touchInfo.1 >= posX.p_insId + ZOOM * SIZE_X / 2 {
|
|
Return
|
|
}
|
|
|
|
If l_touchInfo.2 < posY.p_insId - ZOOM * SIZE_Y / 2 {
|
|
Return
|
|
}
|
|
|
|
If l_touchInfo.2 >= posY.p_insId + ZOOM * SIZE_Y / 2 {
|
|
Return
|
|
}
|
|
|
|
GoSub onClicked.p_insId
|
|
|
|
Return
|
|
|
|
#deffunc local \
|
|
Draw
|
|
Repeat insNum
|
|
If exists.cnt = False {
|
|
Continue
|
|
}
|
|
|
|
Pos posX.cnt, posY.cnt
|
|
CelPut bufferId.cnt, 0, ZOOM, ZOOM
|
|
Loop
|
|
|
|
Interval
|
|
|
|
Return
|
|
|
|
#global
|
|
|
|
#endif ; not __MY_BUTTON__
|
|
|