铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 3225|回复: 4

【DIY工具之二】数字输入框函数

[复制链接]
发表于 2011-12-30 12:56 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
本帖最后由 gtfish 于 2012-1-2 02:26 编辑

RT,系统自带的拼音输入不支持直接输入数字,就自己写了一个函数,请高手指正
大概只有DIYer会用到吧

比如想做升级自由加点,就要由用户输入一个数字,要想办法接收这个数字就要用到这个了

和普通输入法界面一样,只能输入0~9数字,Backspace退格,空格或者回车结束
参数列表为空
返回值为用户输入的数字(数字型,不是字符串型)
  1. function CC.InputNum()                                ---自己做的数字输入
  2.         local x = 32
  3.         local y = CC.ScreenH-6*CC.Fontbig
  4.         local size = 24
  5.         local str = ""
  6.         while true do
  7.                 Cls()
  8.                 DrawBox(x,y+size,640-x,y+5*size,C_ORANGE)
  9.                 DrawStrBox(x,y-size/2,"请输入(数字)",C_WHITE,size)
  10.                 lib.DrawRect(x+10,y+size*3,630-x,y+size*3+2,C_WHITE)
  11.                 DrawString(x+20,y+size*1.6,""..str,C_GOLD,size)
  12.                 lib.ShowSurface(0)
  13.                 local keypress=WaitKey();
  14.                 if keypress==8 then
  15.                         if string.len(str) > 0 then
  16.                                 str = string.sub(str,1,string.len(str)-1)
  17.                         end
  18.                 elseif keypress==13 or keypress==32 then
  19.                         if string.len(str) > 0 then
  20.                                 return str - 0                             ---减0保证返回值为数值型
  21.                         end
  22.                 elseif keypress >= 48 and keypress<= 57 then
  23.                                 str = str..keypress - 48
  24.                 elseif keypress == 27 then
  25.                         return 0
  26.                 end
  27.         end
  28. end
复制代码


效果如图:







【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-12-30 18:34 | 显示全部楼层

谢谢分享代码

不过,经测试有两个问题:

(1)函数名用CC.这样的全局变量,调试下程序没法继续

(2)最后应该少了return str 语句吧?


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-12-30 18:51 | 显示全部楼层
本帖最后由 gtfish 于 2011-12-30 18:54 编辑

回复 zengMF 的帖子

这是定义了一个全局函数,用CC.InputNum()即可调用,return在第19行,表示只有输入回车或者空格才返回
调用示例:
  1. function CC.InputNum()
  2.         local x = 32
  3.         local y = CC.ScreenH-6*CC.Fontbig
  4.         local size = 24
  5.         local str = ""
  6.         while true do
  7.                 Cls()
  8.                 DrawBox(x,y+size,640-x,y+5*size,C_ORANGE)
  9.                 DrawStrBox(x,y-size/2,"请输入(数字)",C_WHITE,size)
  10.                 lib.DrawRect(x+10,y+size*3,630-x,y+size*3+2,C_WHITE)
  11.                 DrawString(x+20,y+size*1.6,""..str,C_GOLD,size)
  12.                 lib.ShowSurface(0)
  13.                 local keypress=WaitKey();
  14.                 if keypress==8 then
  15.                         if string.len(str) > 0 then
  16.                                 str = string.sub(str,1,string.len(str)-1)
  17.                         end
  18.                 elseif keypress==13 or keypress==32 then
  19.                         return str - 0
  20.                 else
  21.                         if keypress >= 48 and keypress<= 57 then
  22.                                 str = str..keypress - 48
  23.                         end
  24.                 end
  25.         end
  26. end

  27. local str = CC.InputNum()
  28. QZXS(""..str)
复制代码



【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-12-30 19:03 | 显示全部楼层
回复 gtfish 的帖子


我用苍半源码调试的,用手动输入资质。。

用CC.函数名,程序一运行就退出,去掉CC.就没问题了。。。

如果最后不加return str 用local tmpNum=InputNum()调用,没有返回值,加上后就没问题。。




【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2011-12-30 19:15 | 显示全部楼层
回复 zengMF 的帖子

我是在龙人版里运行的,没出现问题啊
你试试看把diy.lua清空,只用我三楼的程序试试
CC是一个全局表,在里面加定义没问题的,实在不行你就用局部函数
  1. 第一行改成:
  2. local function inputnum()
  3. 调用改成:
  4. local str = inputnum
复制代码



【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-23 22:31

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表