主题:  关于field接收回车的问题

night_5d

职务:普通成员
等级:2
金币:1.0
发贴:275
注册:2000/12/15 21:24:38
#12002/2/3 17:33:38
为什么macromedia在写lingo时不多加一个lostfocus事件,现在我想再field文本编辑后,在监测它的输入是否符合标准,现在想了许多办法弥补,都不尽人意,那位高手有高招,速回应。


[img]http://61.144.28.245/hjc/web/non-cgi//usravatars/paladin.gif[/img]
I thirst for freedom

rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
注册:2000/10/23 19:44:16
#22002/2/3 21:55:39
没有焦点事件,可以试着在keypress中捕捉enter的keycode。



night_5d

职务:普通成员
等级:2
金币:1.0
发贴:275
注册:2000/12/15 21:24:38
#32002/2/4 8:49:20
我试过了,当我捕捉ENTER时,所有的键盘命令都被屏蔽了,而且也捕捉不到。我的命令行是:
on keyUp me
if the key = ENTER then
if sprite(me.spritenum).member.text<>"" then
sprite(me.spritenum).member.editable=false
sprite(currentactor).member.text=sprite(me.spritenum).member.text
member(newactorlist[currentactor-160],2).text=sprite(me.spritenum).member.text
cursor -1
currentactor=void
else if sprite(me.spritenum).member.text<>"" then
alert"名称不能为空"
end if
end if
end

on keydown也试过了。


[img]http://61.144.28.245/hjc/web/non-cgi//usravatars/paladin.gif[/img]
I thirst for freedom

rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
注册:2000/10/23 19:44:16
#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