在Director中如何在文本框中限制输入

大家是如何对文本输入实现限制的呢?这里介绍一下用keydown句柄和pass指令实现的方法。

首先,让我们看看如何完全屏蔽和完全不屏蔽字符输入。

如果在某个可编辑文本精灵上加入下面这段代码,然后运行,那么在文本框内我们将不能输入任何字符:

on keydown me
    nothing
  end

如果在某个可编辑文本精灵上加入下面这段代码,然后运行,那么在文本框内我们将可以输入任何字符:

on keydown me
    pass
  end

再让我们了解一下keydown句柄和pass指令的作用过程。

on keydown (me):是我们在键盘按键所出发的事件,对于含有keydown 的精灵行为脚本、演员脚本和电影脚本,截获执行这个事件的先后顺序是:精灵行为脚本–>演员脚本–>电影脚本。
  
  pass:这个指令使我们可以告诉特定的程序代码,在截获某个系统事件后将这个事件继续下传,以让优先等级次级的程序获取执行事件。如在上面的第二代码中pass使得精灵行为将keydown事件继续下传,结果是文本域接受输入字符并显示在文本精灵中。
  
  对于文本域来说,获取按键输入的优先权高于电影脚本,但低于精灵行为以及演员脚本。
  
  下面是几个限制输入的例子。
  
  屏蔽回车键 --精灵行为。
  on keydown me
    if the key=  return then
      nothing --屏蔽“阻断”keydown事件!
    else
      pass --继续下传keydown事件!
    end if
  end

屏蔽f键 --精灵行为

on keydown me
    if the key=  “f” then
      nothing --屏蔽“阻断”keydown事件!
    else
      pass --继续下传keydown事件!
    end if
  end

另外,这里提供一个屏蔽字符串的行为供大家参考。如下,只能输入a-z,1-9和-。

property spriteNum, letters
  on keyDown me
    if (letters contains the key) then
      pass
    else
      beep
    end if
  end
  on getPropertyDescriptionList me
    p_list = [#letters : [#format : #string, #default : “abcdefghijklmnopqrstuvwxyz1234567890-”, #comment : “Allowed characters:”]]
    return p_list
  end

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值