ui_slider.s01
来自「MP3 整个 SDK」· S01 代码 · 共 873 行 · 第 1/2 页
S01
873 行
; 133. }
; 134. else
JR ?0033
?0029:
; 135. {
; 136. main_ResShowPic(FMNUM0+file_name[0]-0x30,75,80);
LD C,80
PUSH BC
LD C,75
LD DE,(file_name)
CALL LWRD ?0106
POP AF
; 137. main_ResShowPic(FMNUM0+file_name[1]-0x30,98,80);
LD C,80
PUSH BC
LD C,98
LD DE,(file_name+1)
CALL LWRD ?0106
POP AF
; 138. main_ResShowPic(FMNUM0+file_name[2]-0x30,121,80);
LD C,80
PUSH BC
LD C,121
LD DE,(file_name+2)
?0087:
LD D,0
?0097:
LD HL,9
?0090:
ADD HL,DE
EX DE,HL
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
?0099:
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0033:
?0027:
; 139. }
; 140. need_draw = FALSE;
LD (IX-9),0
?0024:
; 141. }
; 142.
; 143. //handle message
; 144. key = ap_get_message();
CALL LWRD ?0107
; 145. switch( key)
LD E,A
CALL LWRD ?C_V_SWITCH_L06
DEFW 15
DEFB 3
DEFB 4
DEFB 5
DEFB 6
DEFB 30
DEFB 33
DEFB 35
DEFB 36
DEFB 37
DEFB 38
DEFB 48
DEFB 67
DEFB 68
DEFB 69
DEFB 70
DEFW ?0052
DEFW ?0041
DEFW ?0044
DEFW ?0041
DEFW ?0044
DEFW ?0089
DEFW ?0047
DEFW ?0047
DEFW ?0047
DEFW ?0047
DEFW ?0089
DEFW ?0049
DEFW ?0035
DEFW ?0038
DEFW ?0035
DEFW ?0038
?0035:
; 146. {
; 147. case AP_KEY_NEXT:
; 148. case AP_KEY_VOLADD:
; 149. if((slider->value + slider->step) <= slider->max)
CALL LWRD ?0108
JR C,?0037
?0036:
; 150. {
; 151. slider->value += slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,(IY+8)
LD (HL),A
INC HL
LD A,(HL)
ADC A,(IY+9)
LD (HL),A
; 152. value_changed = TRUE;
; 153. need_draw = TRUE;
LD (IX-10),1
LD (IX-9),1
?0037:
; 154. }
; 155.
; 156. break;
JP LWRD ?0056
?0038:
; 157.
; 158.
; 159. case AP_KEY_PREV:
; 160. case AP_KEY_VOLSUB:
; 161. if((slider->value - slider->step) >= slider->min)
LD C,(IY+2)
LD B,(IY+3)
LD E,(IY+8)
LD D,(IY+9)
LD L,(IY+6)
LD H,(IY+7)
AND A
SBC HL,DE
CALL LWRD ?SS_CMP_L02
JR C,?0056
?0039:
; 162. {
; 163. slider->value -= slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
SUB (IY+8)
LD (HL),A
INC HL
LD A,(HL)
SBC A,(IY+9)
LD (HL),A
; 164. value_changed = TRUE;
; 165. need_draw = TRUE;
LD (IX-10),1
LD (IX-9),1
?0040:
; 166. }
; 167.
; 168. break;
JR ?0056
?0041:
; 169.
; 170. //hold 用来控制加速开关
; 171. case AP_KEY_NEXT | AP_KEY_HOLD:
; 172. case AP_KEY_VOLADD | AP_KEY_HOLD:
; 173. if(hold_state == 0) hold_state = 1;
XOR A
OR (IX-11)
JR NZ,?0056
?0042:
LD (IX-11),1
?0043:
; 174.
; 175. break;
JR ?0056
?0044:
; 176.
; 177.
; 178. case AP_KEY_PREV | AP_KEY_HOLD:
; 179. case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 180. if(hold_state == 0) hold_state = 2;
XOR A
OR (IX-11)
JR NZ,?0056
?0045:
LD (IX-11),2
?0046:
; 181.
; 182. break;
JR ?0056
?0047:
; 183.
; 184.
; 185. case AP_KEY_NEXT | AP_KEY_UP:
; 186. case AP_KEY_VOLADD | AP_KEY_UP:
; 187. case AP_KEY_PREV | AP_KEY_UP:
; 188. case AP_KEY_VOLSUB | AP_KEY_UP:
; 189. hold_state = 0;
LD (IX-11),0
; 190.
; 191. break;
JR ?0056
?0048:
; 192.
; 193.
; 194. case AP_KEY_MODE | AP_KEY_UP:
; 195. case AP_KEY_PLAY | AP_KEY_UP:
; 196. return 0; //ok and return
JR ?0089
; 197.
; 198.
; 199. case AP_MSG_WAIT_TIMEOUT:
JR ?0082
?0049:
; 200. if(ui_auto_select) return 0;
LD A,(ui_auto_select)
OR A
JR Z,?0056
?0050:
JR ?0089
; 201.
; 202. break;
JR ?0082
?0051:
JR ?0056
?0052:
; 203.
; 204.
; 205. default:
; 206. key = ap_handle_hotkey(key);
CALL LWRD ap_handle_hotkey
LD (IX-12),A
; 207. if(key == RESULT_REDRAW) //need_draw = TRUE;
CP 50
JR NZ,?0054
?0053:
; 208. {
; 209. //直接退出,因为控件不能重画背景
; 210. return 0;
?0089:
LD HL,0
; 211. }
JR ?0082
?0054:
; 212. else if(key != 0) return key;
XOR A
OR (IX-12)
JR Z,?0056
?0055:
LD L,A
LD H,0
; 213. }
?0082:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0056:
?0034:
; 214.
; 215.
; 216. //check if holding
; 217. if(hold_state == 1) //holding up
LD B,(IX-11)
DEC B
JR NZ,?0058
?0057:
; 218. {
; 219. if((slider->value + slider->step) <= slider->max)
CALL LWRD ?0108
JR C,?0060
?0059:
; 220. {
; 221. slider->value += slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
ADD A,(IY+8)
LD (HL),A
INC HL
LD A,(HL)
ADC A,(IY+9)
LD (HL),A
; 222. value_changed = TRUE;
; 223. need_draw = TRUE;
LD (IX-10),1
LD (IX-9),1
?0062:
; 224.
; 225. while(key != NULL)
XOR A
OR (IX-12)
JR Z,?0077
?0063:
; 226. {
; 227. if((key & AP_KEY_UP) != NULL)
BIT 5,(IX-12)
JR Z,?0065
?0064:
; 228. hold_state = 0;
LD (IX-11),0
?0065:
; 229. key = ap_get_message();
CALL LWRD ?0107
; 230. }
; 231. }
JR ?0062
?0061:
JR ?0077
?0060:
; 232. else hold_state = 0; //disable holding
JR ?0071
?0066:
JR ?0077
?0058:
; 233. }
; 234. else if(hold_state == 2) //holding down
LD B,(IX-11)
DEC B
DEC B
JR NZ,?0077
?0068:
; 235. {
; 236. if((slider->value - slider->step) >= slider->min)
LD C,(IY+2)
LD B,(IY+3)
LD E,(IY+8)
LD D,(IY+9)
LD L,(IY+6)
LD H,(IY+7)
AND A
SBC HL,DE
CALL LWRD ?SS_CMP_L02
JR C,?0071
?0070:
; 237. {
; 238. slider->value -= slider->step;
LD HL,6
PUSH IY
POP BC
ADD HL,BC
LD A,(HL)
SUB (IY+8)
LD (HL),A
INC HL
LD A,(HL)
SBC A,(IY+9)
LD (HL),A
; 239. value_changed = TRUE;
; 240. need_draw = TRUE;
LD (IX-10),1
LD (IX-9),1
?0073:
; 241.
; 242. while(key != NULL)
XOR A
OR (IX-12)
JR Z,?0077
?0074:
; 243. {
; 244. if((key & AP_KEY_UP) != NULL)
BIT 5,(IX-12)
JR Z,?0076
?0075:
; 245. hold_state = 0;
LD (IX-11),0
?0076:
; 246. key = ap_get_message();
CALL LWRD ?0107
; 247. }
; 248. }
JR ?0073
?0072:
JR ?0077
?0071:
; 249. else hold_state = 0; //disable holding
LD (IX-11),0
?0077:
?0069:
?0067:
; 250. }
; 251.
; 252. //handle callback
; 253. if(callback != NULL && value_changed)
LD A,(IX+10)
OR (IX+11)
OR (IX+12)
JR Z,?0079
XOR A
OR (IX-10)
JR Z,?0079
?0081:
?0080:
?0078:
; 254. {
; 255. callback(slider->value);
LD E,(IY+6)
LD D,(IY+7)
LD A,(IX+12)
LD L,(IX+10)
LD H,(IX+11)
CALL LWRD ?BANK_CALL_DIRECT_L08
; 256. value_changed = FALSE;
LD (IX-10),0
?0079:
; 257. }
; 258.
; 259. }//while(1)
; 260. }
JP LWRD ?0021
?0106:
LD D,0
?0105:
LD HL,9
ADD HL,DE
EX DE,HL
?0104:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0107:
CALL LWRD ap_get_message
LD (IX-12),A
RET
?0108:
LD L,(IY+8)
LD H,(IY+9)
LD C,(IY+6)
LD B,(IY+7)
ADD HL,BC
LD C,L
LD B,H
LD L,(IY+4)
LD H,(IY+5)
JP LWRD ?SS_CMP_L02
; 261.
; 262.
RSEG CONST
?0019:
DEFB ','
DEFB 16
DEFB '('
DEFB 16
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?