#42002/2/4 20:42:24
没事件仔细看了,前些时间写了个计算器,检测是否输入的是数字和运算符,希望代码你能用得着。
--rainy 2001.02.17
property pMysprite
property pMyMember
property pAddKey --str,加号
property pEqualKey --str,等号
property pClearKey --str,清除
property pState --symbol,当前状态
property pLvNum --list,其中元素为str
property pNum1,pNum2 --int
--------------------------------
--属性初始化
on Initialize me
pMysprite=me.spritenum
pMyMember=sprite(pmysprite).member
pLvNum=["0","1","2","3","4","5","6","7","8","9"]
pNum1=0
pNum2=0
sprite(pMySprite).editable=TRUE
-- member(pMyMember).alignment="left"
end
--------------------------------
on beginsprite me
me.Initialize()
end
--------------------------------
--判断是否输入为数字,同时判断“+,回车_=,退格_清除”
on IsNum me,strIn
myStr=String(strIn)
--判断数字,并根据状态做出反应
IsNumYN=pLvNum.getOne(myStr)
if IsNumYN then
return(myStr)
end if
end
--------------------------------
on keyDown me
me.putNum()
end
--------------------------------
--清除显示的数字
on clearNum me
member(pMyMember).text=""
end
--------------------------------
--显示数字到field
on putNum me
--先判断是否按下特殊键
case chartoNum(the key) of
pAddkey:
pState=#Addkey
pEqualkey:
pState=#Equalkey
pClearkey:
pState=#Clearkey
end case
case pState of
#Equalkey:
pNum2=integer(member(pMyMember).text)
me.clearnum()
sum=pNum1+pNum2
-- put sum
member(pMyMember).text=string(sum)
pNum1=0
pNum2=0
return()
#Clearkey:
pNum1=0
pNum2=0
me.clearNum()
pState=VOID
return()
end case
--保存原数字
strOldNum=member(pMyMember).text
--调用检测函数
strNum=IsNum(me,the key)
--若无意按到非数字键,忽略
if strNum=VOID then
if pState=#Addkey then
pNum1=integer(member(pMyMember).text)
me.clearNum()
return()
end if
member(pMyMember).text=strOldNum
else
member(pMyMember).text=strOldNum & strNum
-- the selStart=length(member(pMyMember).text)
end if
end
--------------------------------
on getPropertyDescriptionList me
mylist=[:]
addprop mylist,#pAddKey,[#comment:"输入加号的键:",#format:#integer,#default:61]
addprop mylist,#pEqualKey,[#comment:"输入等号的键:",#format:#integer,#default:13]
addprop mylist,#pClearKey,[#comment:"输入清除的键:",#format:#integer,#default:8]
return mylist
end