初级视频编辑室|草蜢非编论坛|初级视编室|草蜢视频编辑|会声会影|威力导演|电子相册

 找回密码
 加入初编室
搜索
查看: 888|回复: 2
打印 上一主题 下一主题

[Director 多媒体爱好者] 在DR中如何在文本框中限制输入

[复制链接]

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

跳转到指定楼层
楼主
发表于 2014-11-23 21:17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
onekey onekey
大家是如何对文本输入实现限制的呢?这里介绍一下用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
楼主热帖
河边已是一首歌
回复

使用道具 举报

206

主题

4527

帖子

7万

积分

初编室元帅

Rank: 14Rank: 14Rank: 14Rank: 14

活跃会员帅哥会员百帖纪念荣誉勋章论坛万元户

沙发
发表于 2014-11-23 21:56:08 | 只看该作者
谢谢楼主提供分享!!

131

主题

5844

帖子

12万

积分

初编室元帅

Rank: 14Rank: 14Rank: 14Rank: 14

帅哥会员活跃会员论坛万元户百帖纪念荣誉勋章

板凳
发表于 2015-1-21 11:45:13 | 只看该作者
阳春白雪,逛一逛,看一看,顶一顶。
您需要登录后才可以回帖 登录 | 加入初编室

本版积分规则

手机版|小黑屋|初级视频编辑室

GMT+8, 2024-12-26 02:48 , Processed in 0.081852 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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