网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 图象图形-> Director-> 优化标准键盘事件

优化标准键盘事件
作者:佚名 来源:InterNet 加入时间:2005-2-7
相关文章 相关书籍:
Director本身提供了一个非常灵活的创作环境,但其本身对键盘输入的处理并不尽如人意,本文旨在提供一些优化标准键盘事件的思路。

  首先让我们先来了解一下Director中事件的执行过程。

  当一个事件产生后,一旦遇到了与其名称相同的处理程序就会被截取,也就是说,一个事件能否起作用,不仅与事件本身有关,更重要的是应该存在可以截取它的处理程序。由此可见,如果能够在程序执行的间隙执行按键检测,即可触发影片剧本中相应的新的事件。

  为了达到这个目的,可以在影片剧本中建立如下的idle或timeOut事件处理程序:

on Idle
  if the controlDown then
    ControlDown
  end if
  if the shiftDown then
    ShiftDown
  end if
end

on ControlDown
  put "ControlDown"
  -- do control stuff
end

on ShiftDown
  put "ShiftDown"
  -- do shift stuff
end

  注意上面的例子并没有直接使用处理程序来截取Shift或Control键的按下状态,而是先在idle事件处理程序中进行检测,这样做可以使按键检测所消耗的系统资源降至最低。当然,无论使用什么方法进行按键检测,最终都需要知道任意时刻按键的状态。通常我们都是采取全局变量存储按键状态的方法,其实在这里可以采取另外一种更快捷有效的方法。

  通过在影片剧本中声明一个属性变量,即可在影片剧本中直接引用这个属性。举个简单的例子,如果我们在编号为1的影片剧本中用“property pControlDown”声明了一个属性变量pControlDown,那么此后即可直接引用这个属性变量并对其进行像“script(1).pControlDown = 0”的存取操作。

  综上所述,我们可以编写出下面这样的优化程序:

property pCommandDown
property pOptionDown
property pControlDown
property pShiftDown

on idle
  if the commandDown then
    CommandDown
  else
    CommandNotDown
  end if
  if the optionDown then
    OptionDown
  else
    OptionNotDown
  end if
  if the controlDown then
    ControlDown
  else
    ControlNotDown
  end if
  if the shiftDown then
    ShiftDown
  else
    ShiftNotDown
  end if
end

on ControlDown
  if script(1).pControlDown = 0 then
    script(1).pControlDown = 1
    -- here you can do stuff
    put "ControlDown"
  end if
end

on ControlNotDown
  if script(1).pControlDown = 1 then
    script(1).pControlDown = 0
    -- here you can do stuff
    put "ControlUp"
  end if
end

on CommandDown
  if script(1).pCommandDown = 0 then
    script(1).pCommandDown = 1
    -- here you can do stuff
    put "CommandDown"
  end if
end

on CommandNotDown
  if script(1).pCommandDown = 1 then
    script(1).pCommandDown = 0
    -- here you can do stuff
    put "CommandUp"
  end if
end

on OptionDown
  if script(1).pOptionDown = 0 then
    script(1).pOptionDown = 1
    -- here you can do stuff
    put "OptionDown"
  end if
end

on OptionNotDown
  if script(1).pOptionDown = 1 then
    script(1).pOptionDown = 0
    -- here you can do stuff
    put "OptionUp"
  end if
end

on ShiftDown
  if script(1).pShiftDown = 0 then
    script(1).pShiftDown = 1
    -- here you can do stuff
    put "ShiftDown"
  end if
end

on ShiftNotDown
  if script(1).pShiftDown = 1 then
    script(1).pShiftDown = 0
    -- here you can do stuff
    put "ShiftUp"
  end if
end

[文章录入员:nancy]

相关文章 相关书籍:
本站推荐内容

近期主机类热搜关键词:
美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

Director
PhotoShop
CorelDraw
3D-MAX
AutoCAD
FreeHand
Illustrator
Authorware
Director
Maya/Rhino
其它
电脑教程阅读排行
·在Director中使用Powe...
·内存中对象的配置
·Director小技巧
·音频与数字视频、flash音频的...
·认识Director中的Xtra
·控制动画GIF
·Director中各种内部事件发...
·Director8行为库的应用
·用Lingo解决组合问题
·行为库创建技巧