实例解析Flex键盘事件简单应用

本文和大家重点讨论一下Flex键盘事件简单应用,从最古老的计算机开始,键盘就是其最重要的输入组成部分。对Flex键盘事件的响应处理一直是界面编程最重要的组成部分。

在东兴等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、网站设计 网站设计制作按需定制制作,公司网站建设,企业网站建设,高端网站设计,全网整合营销推广,成都外贸网站建设,东兴网站建设费用合理。

Flex键盘事件简单应用――用键盘控制的小飞机

从最古老的计算机开始,键盘就是其最重要的输入组成部分。对Flex键盘事件的响应处理一直是界面编程最重要的组成部分。本示例通过一个键盘控制的小飞机,来说明在FLEX中对Flex键盘事件的监听和响应处理。

编程思路

每个游戏首先就得有自己的运行场景(背景),我们使用Canvas作为小飞机运行的容器。小飞机直接由一个Sprite类型对象绘制得到(通过载入图形可以获得更漂亮的元件)。当上下左右鼠标被点击时,根据Flex键盘事件提供的键码,相应Flex键盘事件,移动小飞机元件在容器中的坐标,获得飞机移动的效果。当接近容器的边界时,不允许作把元件移出容器的动作,所以需要一个方法checkBoundary在元件移动前判断移动是否是合法的。提供一个方法resume,让元件能随时回到其初始位置。
 
程序代码

 
 
 
  1.  
  2.  
  3.         
  4.         
  5.         
  6.                
  7.               
  8.               import flash.events.KeyboardEvent;                 
  9.  
  10.               private var plane:Sprite;          
  11.         private function init():void  
  12.  
  13.         {               //程序的初始化  
  14.  
  15.                loadPlane();  
  16.                resume();  
  17.                this.canvas.addEventListener(MouseEvent.CLICK,setCanvasFocus);  
  18.                this.canvas.addEventListener(KeyboardEvent.KEY_DOWN,planeMove);  
  19.         }  
  20.         private function checkBoundary(direction:int):Boolean  
  21.         {  
  22.                //检查边界条件  
  23.  
  24.                switch(direction)  
  25.                {  
  26.                       case 37:  //左  
  27.                       return (plane.x>5);  
  28.  
  29.                       case 38:  //上  
  30.                       return (plane.y>5);  
  31.                       case 39:  //右  
  32.                       return (plane.x< canvas.width-40);  
  33.                       case 40:  //下  
  34.                       return (plane.y
  35.                }  
  36.                return false;  
  37.         }  
  38.  
  39.         private function planeMove(e:KeyboardEvent):void  
  40.         {  
  41.  
  42.                //通过键盘上下左右键移动飞机  
  43.                var keycode:int=e.keyCode;  
  44.                if(e.shiftKey && keycode==72)  
  45.                {  
  46.                       resume();//回到起点  
  47.                }  
  48.                if(!checkBoundary(keycode))  
  49.                {  
  50.                       return;  
  51.                }  
  52.  
  53.                switch(keycode)  
  54.                {  
  55.  
  56.                       case 37:  
  57.  
  58.                       plane.x-=5;  
  59.  
  60.                       break;  
  61.  
  62.                       case 38:  
  63.  
  64.                       plane.y-=5;  
  65.  
  66.                       break;  
  67.  
  68.                       case 39:  
  69.  
  70.                       plane.x+=5;  
  71.  
  72.                       break;  
  73.  
  74.                       case 40:  
  75.  
  76.                       plane.y+=5;  
  77.  
  78.                       break;  
  79.                }  
  80.  
  81.         }  
  82.         private function setCanvasFocus(e:MouseEvent):void  
  83.  
  84.         {  
  85.                //设置焦点  
  86.  
  87.                this.canvas.setFocus();  
  88.  
  89.                this.lblMsg.text="用上下左右键控制飞机移动...";  
  90.  
  91.         }  
  92.  
  93.         private function loadPlane():void  
  94.         {  
  95.                //绘制飞机  
  96.  
  97.                plane=new Sprite();  
  98.  
  99.                var g:Graphics=plane.graphics;  
  100.  
  101.                      g.clear();  
  102.  
  103.                      g.lineStyle(4,0x000000,1);  
  104.  
  105.                      g.moveTo(16,0);  
  106.  
  107.                      g.lineTo(16,32);  
  108.  
  109.                      g.moveTo(16,16);  
  110.  
  111.                      g.lineTo(4,24);  
  112.  
  113.                      g.moveTo(16,16);  
  114.  
  115.                      g.lineTo(28,24);  
  116.  
  117.                      g.moveTo(16,32);  
  118.  
  119.                      g.lineTo(10,36);  
  120.  
  121.                      g.moveTo(16,32);  
  122.  
  123.                      g.lineTo(22,36);  
  124.  
  125.                      g.moveTo(0,0);  
  126.  
  127.                      //把飞机添加到屏幕中  
  128.  
  129.                this.canvas.rawChildren.addChild(plane);  
  130.          }  
  131.  
  132.         private function resume():void  
  133.         {  
  134.  
  135.                //设置飞机的初始位置  
  136.                plane.x=canvas.width/2-16;  
  137.                plane.y=canvas.height-40;  
  138.         }  
  139.               ]]> 
  140.  
  141.                       
  142.  
  143.    
  144.  

 知识要点

1:Flex键盘事件分两类KeyboardEvent.KEY_DOWN,KeyboardEvent.KEY_UP,分别对应键盘的按下和弹起事件;

2:通过查看Flex键盘事件参数的keyCode可以知道用户按的是那个按钮,能后作出对应的响应;

3:还可以通过查看Flex键盘事件参数的shiftKey,ctrlKey属性值,获得用户是否同时按下了一些辅助功能键;

4:对象要获得焦点后才能响应Flex键盘事件,这是新手很容易忽视的问题。

【编辑推荐】

  1. Flex键盘事件的监听机制
  2. Flex键盘事件注意事项
  3. 技术前沿 看Flex客户端缓存技术如何使用
  4. 12个Flex常用功能代码再现
  5. 学习笔记 Flex国际化如何支持其他语言

 

分享题目:实例解析Flex键盘事件简单应用
分享网址:http://www.shufengxianlan.com/qtweb/news29/481329.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联