问题一 如何使用键盘进行交互使用?

步骤:

1.我们首先找到管理键盘类,了解这个类能够为我们带来什么帮助,通过帮助能够解决什么问题。

2.导入需要使用键盘的类

3.监听键盘输入了解键盘事件

package { import flash.display.Sprite; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends Sprite { public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我"); } } }

通过监听KeyboardEvent.KEY_DOWN 事件,在输出面板可以输出,你按下了我。

KeyboardEvent 是为键盘交互提供的事件。通过这个我们使用键盘控制在flash场景里面的元素。

问题二,当键盘放开并松开的时候发生什么事情?

package { import flash.display.Sprite; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends Sprite { public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); stage.addEventListener(KeyboardEvent.KEY_UP,onkeyup); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我");//当键盘按下的时候调度这个事件 } private function onkeyup(e:KeyboardEvent):void { trace("你放开了我");//当键盘按下再松开的时候响应这个时间 } } }

显然,当键盘松开的时候,会调度第Key_Up 这个事件。通过这样的组合我们可以创造一些交互的效果

问题三,如何通过键盘让场景里面的元素关联,让其产生动作

我们希望,按一个特定的键盘,让其产生交互效果,例如在游戏当中我们创建一个角色,通过键盘来控制角色运行或者其他的动作。

步骤:我们在场景里面加入我们想要的元素,如影片剪辑,在属性面板里面命名为mc

package { import flash.display.MovieClip; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends MovieClip { public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); stage.addEventListener(KeyboardEvent.KEY_UP,onkeyup); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我");//当键盘按下的时候调度这个事件 if (e.keyCode==Keyboard.UP) { mc.y-=5; } else if (e.keyCode==Keyboard.DOWN) { mc.y+=5; } else if (e.keyCode==Keyboard.LEFT) { mc.x-=5; } else if (e.keyCode==Keyboard.RIGHT) { mc.x+=5; } } private function onkeyup(e:KeyboardEvent):void { trace("你放开了我");//当键盘按下再松开的时候响应这个时间 } } }

通过这个代码,上下左右,控制一个影片剪辑产生运动效果。但是这种方式并不理想,当运行的时候,总是觉得运行反应慢,其中原因之一在我们flash使用帧速是12,通过修改帧速可以让其产生一些明显改变,其次是在键盘响应的过程中会产生一些迟钝反应。

问题四,如何让键盘交互效果产生更加流畅的效果?

为了解决上面的问题,我们使用Event.ENTER_FRAME事件让动画产生流畅效果

步骤:加入事件监听stage.addEventListener(Event.ENTER_FRAME,Run);

代码:

package { import flash.display.MovieClip; import flash.events.*; import flash.ui.Keyboard;//使用键盘的类 public class Example extends MovieClip { private var up:Boolean; private var down:Boolean; private var left:Boolean; private var right:Boolean; public function Example() { stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeyDown); stage.addEventListener(KeyboardEvent.KEY_UP,onkeyup); stage.addEventListener(Event.ENTER_FRAME,Run); } private function onkeyDown(e:KeyboardEvent):void { trace("你按下了我");//当键盘按下的时候调度这个事件 if (e.keyCode==Keyboard.UP) { up=true; } else if (e.keyCode==Keyboard.DOWN) { down=true; } else if (e.keyCode==Keyboard.LEFT) { left=true; } else if (e.keyCode==Keyboard.RIGHT) { right=true; } } private function onkeyup(e:KeyboardEvent):void { trace("你放开了我");//当键盘按下再松开的时候响应这个时间 if (e.keyCode==Keyboard.UP) { up=false; } else if (e.keyCode==Keyboard.DOWN) { down=false; } else if (e.keyCode==Keyboard.LEFT) { left=false; } else if (e.keyCode==Keyboard.RIGHT) { right=false; } } private function Run(e:Event):void { if (up) { mc.y-=5;//当按上的时候物体对象向上移动 } else if (down) { mc.y+=5;//当按上的时候物体对象向下移动 } else if (left) { mc.x-=5;//当按上的时候物体对象向左移动 } else if (right) { mc.x+=5;//当按上的时候物体对象向右移动 } } } }

当按下键盘的时候,产生一些真的值,当松开的时候产生一些假值,

通过这个组合产生更加流畅的运行的效果。

扩展:我们可以自由设定自己喜欢的键盘组合,通过获取键盘键值来产生交互的效果,从而在响应的时候,调动我们想要的结果trace("你按下的键盘值"+e.keyCode);

输出我们想要键值

通过if(e.keyCode=="一个值"){调度我们想要的结果}

转载于:https://www.cnblogs.com/guoyiqi/archive/2009/01/21/2069436.html

多媒体交互应用基础(11)相关推荐

  1. 国开电大 多媒体应用技术基础 形考任务

    形成性考核任务1 题目:以下不属于计算机综合处理多媒体信息的有( ). 键盘 图形 视频 文本 题目:信息处理和传播技术的第四次飞跃是( ). 超媒体计算机 电视技术 无线电技术 多媒体计算机 题目: ...

  2. Lua与c++交互实战基础篇-夏曹俊-专题视频课程

    Lua与c++交互实战基础篇-10018人已学习 课程介绍         本课程从实战角度讲解了流行的高性能脚本Lua与c++的联合开发,这套方案已经被大量的对性能由要求的系统使用,成为了高性能脚本 ...

  3. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  4. 十一. Python基础(11)—补充: 作用域 装饰器

    十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...

  5. 多媒体实时交互系统主要由系统服务器,多媒体设备和多媒体交互系统专利_专利申请于2017-03-08_专利查询 - 天眼查...

    1. 一种多媒体设备,其特征在于,包括: 协同输出第一显不信息和第二显示信息的处理芯片: 接收所述第一显不信息的第一显示屏: 接收所述第二显不彳目息的第二显示屏:以及, 与所述第一显示屏配合的全息投影 ...

  6. 以下不属于计算机综合处理多媒体信息的有,国家开放大学《多媒体应用技术基础》第一-二次形成性考核任务试题...

    国家开放大学<多媒体应用技术基础>第一-二次形成性考核任务试题 http://doc.xuehai.net 国家开放大学<多媒体应用技术基础>第一-二次形成性考核任务试题 第一 ...

  7. Django基础(11): 表单集合Formset的高级用法详解

    Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...

  8. 多媒体一体机计算机打不开,SEESUN多媒体交互一体机 一般故障问题排除

    SEESUN 快速安装指南 SEESUN多媒体交互一体机 一般故障问题排除 一. 开机后屏幕显示无信号,不能显示系统画面 检查电视通道是否在电脑通道模式,如果不是请切换到电脑通道模式上 确定电脑主机已 ...

  9. android前端怎样php后台交互(基础篇)

    android前端怎样php后台交互(基础篇) android客户端和php+mysql+apache搭建的服务器之间的简单交互,实现登入功能. 实现原理就是android客户端发送请求,传给服务器登 ...

最新文章

  1. 微信浏览器下拉黑边的终极解决方案---wScroollFix
  2. linux关闭防火墙stop,linux如何关闭防火墙
  3. 沐创密码芯片获奖!中国电子学会年度技术发明一等奖,颁给国产集成电路公司...
  4. yolov5组件笔记
  5. k8s 里的kv和kvs
  6. AI: DL方法与问题空间探索
  7. 服务器自动挂载硬盘,Linux硬盘分区及开机自动挂载
  8. EBS并发管理器请求汇总(按照并发消耗时间,等待时间,平均等待事件等汇总)...
  9. LoadRunner实战
  10. python正则表达式匹配字母和下划线_个英文字母、下划线或汉字的正则表达式
  11. Access数据库问题锦集
  12. 创建目录_Word创建自动目录,你会了吗?
  13. SqlServer 2008的tempdb数据文件大小暴增处理
  14. 图像处理中滤波(filtering)与卷积(convolution)的区别
  15. springboot框架学习理解上
  16. Python基础语法知识2
  17. 尝试docker1.12内置swarm
  18. 2019-11-29奈奎斯特和香农定理
  19. Visio 导出图片时字符间距错乱
  20. 前端切图之svg图标的复用基于defs和use 亲测有用

热门文章

  1. VScode Remote 远程开发与调试(转)
  2. GIS和RS里面的一些小问题
  3. linux添加驱动目录,Android系统添加Linux驱动
  4. gc的原因 频繁full_Java性能优化要点之:GC垃圾回收知识点整理
  5. ajax静态加载图片,JQuery实现Ajax加载图片的方法
  6. 数字孪生应用白皮书_【研究报告】数字孪生应用白皮书(2020版)
  7. .net core json 为null输出_SpringBoot实战(九):标准化json返回值
  8. .net 集合分成几个等数量集合_[C#.NET 拾遗补漏]08:强大的LINQ
  9. Social Network Analysis的Centrality总结,以及networkx实现EigenCentrality,PageRank和KatzCentrality的对比...
  10. IOS之Objective-C学习 ARC下的单例模式