多媒体交互应用基础(11)
问题一 如何使用键盘进行交互使用?
步骤:
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 题目:以下不属于计算机综合处理多媒体信息的有( ). 键盘 图形 视频 文本 题目:信息处理和传播技术的第四次飞跃是( ). 超媒体计算机 电视技术 无线电技术 多媒体计算机 题目: ...
- Lua与c++交互实战基础篇-夏曹俊-专题视频课程
Lua与c++交互实战基础篇-10018人已学习 课程介绍 本课程从实战角度讲解了流行的高性能脚本Lua与c++的联合开发,这套方案已经被大量的对性能由要求的系统使用,成为了高性能脚本 ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- 十一. Python基础(11)—补充: 作用域 装饰器
十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...
- 多媒体实时交互系统主要由系统服务器,多媒体设备和多媒体交互系统专利_专利申请于2017-03-08_专利查询 - 天眼查...
1. 一种多媒体设备,其特征在于,包括: 协同输出第一显不信息和第二显示信息的处理芯片: 接收所述第一显不信息的第一显示屏: 接收所述第二显不彳目息的第二显示屏:以及, 与所述第一显示屏配合的全息投影 ...
- 以下不属于计算机综合处理多媒体信息的有,国家开放大学《多媒体应用技术基础》第一-二次形成性考核任务试题...
国家开放大学<多媒体应用技术基础>第一-二次形成性考核任务试题 http://doc.xuehai.net 国家开放大学<多媒体应用技术基础>第一-二次形成性考核任务试题 第一 ...
- Django基础(11): 表单集合Formset的高级用法详解
Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...
- 多媒体一体机计算机打不开,SEESUN多媒体交互一体机 一般故障问题排除
SEESUN 快速安装指南 SEESUN多媒体交互一体机 一般故障问题排除 一. 开机后屏幕显示无信号,不能显示系统画面 检查电视通道是否在电脑通道模式,如果不是请切换到电脑通道模式上 确定电脑主机已 ...
- android前端怎样php后台交互(基础篇)
android前端怎样php后台交互(基础篇) android客户端和php+mysql+apache搭建的服务器之间的简单交互,实现登入功能. 实现原理就是android客户端发送请求,传给服务器登 ...
最新文章
- 微信浏览器下拉黑边的终极解决方案---wScroollFix
- linux关闭防火墙stop,linux如何关闭防火墙
- 沐创密码芯片获奖!中国电子学会年度技术发明一等奖,颁给国产集成电路公司...
- yolov5组件笔记
- k8s 里的kv和kvs
- AI: DL方法与问题空间探索
- 服务器自动挂载硬盘,Linux硬盘分区及开机自动挂载
- EBS并发管理器请求汇总(按照并发消耗时间,等待时间,平均等待事件等汇总)...
- LoadRunner实战
- python正则表达式匹配字母和下划线_个英文字母、下划线或汉字的正则表达式
- Access数据库问题锦集
- 创建目录_Word创建自动目录,你会了吗?
- SqlServer 2008的tempdb数据文件大小暴增处理
- 图像处理中滤波(filtering)与卷积(convolution)的区别
- springboot框架学习理解上
- Python基础语法知识2
- 尝试docker1.12内置swarm
- 2019-11-29奈奎斯特和香农定理
- Visio 导出图片时字符间距错乱
- 前端切图之svg图标的复用基于defs和use 亲测有用
热门文章
- VScode Remote 远程开发与调试(转)
- GIS和RS里面的一些小问题
- linux添加驱动目录,Android系统添加Linux驱动
- gc的原因 频繁full_Java性能优化要点之:GC垃圾回收知识点整理
- ajax静态加载图片,JQuery实现Ajax加载图片的方法
- 数字孪生应用白皮书_【研究报告】数字孪生应用白皮书(2020版)
- .net core json 为null输出_SpringBoot实战(九):标准化json返回值
- .net 集合分成几个等数量集合_[C#.NET 拾遗补漏]08:强大的LINQ
- Social Network Analysis的Centrality总结,以及networkx实现EigenCentrality,PageRank和KatzCentrality的对比...
- IOS之Objective-C学习 ARC下的单例模式