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

📄 ui_slider.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
; 150.	                    main_ResShowPic(FMNUM0+file_name[1]-0x30,106-22,80);  
	LD	C,80
	PUSH	BC
	LD	C,84
?0101:
	LD	DE,(file_name+1)
	JR	?0102
?0040:
; 151.	                }  
; 152.	            }      
; 153.	            else 
?0037:
; 154.	            {
; 155.	                main_ResShowPic(FMNUM0+file_name[0]-0x30,75-22,80);
	LD	C,80
	PUSH	BC
	LD	C,53
	LD	DE,(file_name)
	CALL	LWRD ?0112
	POP	AF
; 156.	                main_ResShowPic(FMNUM0+file_name[1]-0x30,98-22,80);
	LD	C,80
	PUSH	BC
	LD	C,76
	LD	DE,(file_name+1)
	CALL	LWRD ?0112
	POP	AF
; 157.	                main_ResShowPic(FMNUM0+file_name[2]-0x30,121-22,80);
	LD	C,80
	PUSH	BC
	LD	C,99
	LD	DE,(file_name+2)
?0102:
	CALL	LWRD ?0112
	POP	AF
?0041:
?0035:
; 158.	            }
; 159.	            need_draw = FALSE;
	LD	(IX-5),0
?0023:
; 160.	        }
; 161.	        
; 162.	        //handle message
; 163.	        key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	(IX-8),A
; 164.	        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	?0060
	DEFW	?0049
	DEFW	?0052
	DEFW	?0049
	DEFW	?0052
	DEFW	?0104
	DEFW	?0055
	DEFW	?0055
	DEFW	?0055
	DEFW	?0055
	DEFW	?0104
	DEFW	?0057
	DEFW	?0043
	DEFW	?0046
	DEFW	?0043
	DEFW	?0046
?0043:
; 165.	        {
; 166.	        case AP_KEY_NEXT:
; 167.	        case AP_KEY_VOLADD:
; 168.	            if((slider->value + slider->step) <= slider->max)
	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)
	OR	128
	SBC	HL,BC
	JP	PO,?0094
	XOR	H
?0094:
	JP	M,?0064
?0044:
; 169.	            {
; 170.	                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)
	JR	?0107
; 171.	                value_changed = TRUE;
; 172.	                need_draw = TRUE;
?0045:
; 173.	            }
; 174.	            
; 175.	            break;
?0046:
; 176.	
; 177.	            
; 178.	        case AP_KEY_PREV:
; 179.	        case AP_KEY_VOLSUB:
; 180.	            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
	OR	128
	SBC	HL,BC
	JP	PO,?0095
	XOR	H
?0095:
	JP	M,?0064
?0047:
; 181.	            {
; 182.	                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)
?0107:
	LD	(HL),A
; 183.	                value_changed = TRUE;
; 184.	                need_draw = TRUE;
	LD	(IX-6),1
	LD	(IX-5),1
?0048:
; 185.	            }
; 186.	            
; 187.	            break;
	JR	?0064
?0049:
; 188.	
; 189.	        //hold 用来控制加速开关
; 190.	        case AP_KEY_NEXT | AP_KEY_HOLD:
; 191.	        case AP_KEY_VOLADD | AP_KEY_HOLD:
; 192.	            if(hold_state == 0) hold_state = 1;
	XOR	A
	OR	(IX-7)
	JR	NZ,?0064
?0050:
	LD	(IX-7),1
?0051:
; 193.	
; 194.	            break;
	JR	?0064
?0052:
; 195.	
; 196.	
; 197.	        case AP_KEY_PREV | AP_KEY_HOLD:
; 198.	        case AP_KEY_VOLSUB | AP_KEY_HOLD:
; 199.	            if(hold_state == 0) hold_state = 2;
	XOR	A
	OR	(IX-7)
	JR	NZ,?0064
?0053:
	LD	(IX-7),2
?0054:
; 200.	            
; 201.	            break;
	JR	?0064
?0055:
; 202.	            
; 203.	
; 204.	        case AP_KEY_NEXT | AP_KEY_UP:
; 205.	        case AP_KEY_VOLADD | AP_KEY_UP:
; 206.	        case AP_KEY_PREV | AP_KEY_UP:
; 207.	        case AP_KEY_VOLSUB | AP_KEY_UP:
; 208.	            hold_state = 0;
	LD	(IX-7),0
; 209.	            
; 210.	            break;
	JR	?0064
?0056:
; 211.	            
; 212.	            
; 213.	        case AP_KEY_MODE | AP_KEY_UP:
; 214.	        case AP_KEY_PLAY | AP_KEY_UP:
; 215.	            return 0;        //ok and return
; 216.	
; 217.	            
; 218.	        case AP_MSG_WAIT_TIMEOUT:
?0057:
; 219.	            if(ui_auto_select) return 0;
	LD	A,(ui_auto_select)
	OR	A
	JR	Z,?0064
?0058:
	JR	?0104
; 220.	        
; 221.	            break;
?0059:
?0060:
; 222.	
; 223.	            
; 224.	        default:
; 225.	            key = ap_handle_hotkey(key);
	CALL	LWRD ap_handle_hotkey
	LD	(IX-8),A
; 226.	            if(key == RESULT_REDRAW) //need_draw = TRUE;
	CP	50
	JR	NZ,?0062
?0061:
; 227.	            {
; 228.	                //直接退出,因为控件不能重画背景
; 229.	                return 0;
?0104:
	LD	HL,0
; 230.	            }
	JR	?0090
?0062:
; 231.	            else if(key != 0) return key;
	XOR	A
	OR	(IX-8)
	JR	Z,?0064
?0063:
	LD	L,A
	LD	H,0
; 232.	        }
?0090:
	LD	SP,IX
	POP	IX
	POP	IY
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0064:
?0042:
; 233.	 
; 234.	
; 235.	        //check if holding
; 236.	        if(hold_state == 1)        //holding up
	LD	B,(IX-7)
	DEC	B
	JR	NZ,?0066
?0065:
; 237.	        {
; 238.	            if((slider->value + slider->step) <= slider->max)
	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)
	OR	128
	SBC	HL,BC
	JP	PO,?0096
	XOR	H
?0096:
	JP	M,?0068
?0067:
; 239.	            {
; 240.	                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
; 241.	                value_changed = TRUE;
; 242.	                need_draw = TRUE;
	LD	(IX-6),1
	LD	(IX-5),1
?0070:
; 243.	 
; 244.	                while(key != NULL)
	XOR	A
	OR	(IX-8)
	JP	Z,?0085
?0071:
; 245.	                {
; 246.	                    if((key & AP_KEY_UP) != NULL)
	BIT	5,(IX-8)
	JR	Z,?0073
?0072:
; 247.	                        hold_state = 0;
	LD	(IX-7),0
?0073:
; 248.	                    key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	(IX-8),A
; 249.	                }       
; 250.	            }
	JR	?0070
?0069:
; 251.	            else
?0068:
; 252.	            {
; 253.	                                hold_state = 0;    //disable holding
; 254.	                                slider->value=slider->max;
	LD	L,(IY+4)
	LD	H,(IY+5)
	JR	?0108
?0074:
?0066:
; 255.	            }
; 256.	        }
; 257.	        else if(hold_state == 2)    //holding down
	LD	B,(IX-7)
	DEC	B
	DEC	B
	JR	NZ,?0085
?0076:
; 258.	        {
; 259.	            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
	OR	128
	SBC	HL,BC
	JP	PO,?0097
	XOR	H
?0097:
	JP	M,?0079
?0078:
; 260.	            {
; 261.	                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
; 262.	                value_changed = TRUE;
; 263.	                need_draw = TRUE;
	LD	(IX-6),1
	LD	(IX-5),1
?0081:
; 264.	 
; 265.	                while(key != NULL)
	XOR	A
	OR	(IX-8)
	JR	Z,?0085
?0082:
; 266.	                { 
; 267.	                    if((key & AP_KEY_UP) != NULL)
	BIT	5,(IX-8)
	JR	Z,?0084
?0083:
; 268.	                        hold_state = 0; 
	LD	(IX-7),0
?0084:
; 269.	                    key = ap_get_message();
	CALL	LWRD ap_get_message
	LD	(IX-8),A
; 270.	                }
; 271.	            }
	JR	?0081
?0080:
; 272.	            else
?0079:
; 273.	                        {
; 274.	                                hold_state = 0;    //disable holding  
; 275.	                                slider->value=slider->min;
	LD	L,(IY+2)
	LD	H,(IY+3)
?0108:
	LD	(IY+6),L
	LD	(IY+7),H
	LD	(IX-7),0
?0085:
?0077:
?0075:
; 276.	            }
; 277.	        }
; 278.	
; 279.	        //handle callback
; 280.	        if(callback != NULL && value_changed)
	LD	A,(IX+10)
	OR	(IX+11)
	OR	(IX+12)
	JP	Z,?0020
	XOR	A
	OR	(IX-6)
	JP	Z,?0020
?0089:
?0088:
?0086:
; 281.	        {
; 282.	            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
; 283.	            value_changed = FALSE;
	LD	(IX-6),0
?0087:
; 284.	        }
; 285.	        
; 286.	    }//while(1)
; 287.	}
	JP	LWRD ?0020
?0112:
	LD	D,0
?0111:
	LD	HL,90
	ADD	HL,DE
	EX	DE,HL
?0110:
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
; 288.	
; 289.	
	END

⌨️ 快捷键说明

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