处理交互对象的键盘事件 键盘事件都是由KeyboardEvent类来管理,其事件只有keyDown和keyUp两个,分别代表按下键 和释放键。这两个事件的事件名用KeyboardEvent类的类属性KEY_DOWN和KEY_UP来表示。

KeyboardEvent类同时同时定义了一些属性和方法来辅助键盘事件的处理: altKey   Alt键是否可用 charCode    键的ASCII码 ctrlKey     Ctrl键是否可用 keyCode     键控代码值 keyLocation  键在键盘中的位置 shiftKey     Shift键是否可用 其中Code属性最常用,它常常判断某个键是否按下或释放,例如,keyDown事件只是判断键是 否按下,如果要判断某个键是否按下,就需使用keyCode属性来判断。

KeyboardEvent类的方法: KeyboardEvent()     构造函数用于创建实例 clone()       复制实例 toString()      返回全部属性的字符串 updateAfterEvent()    更新显示,与设置的帧速无关

打开FLASH面板,把图层1的名称改为as的图层,单击as图层的第1帧,打开动作面板,输入下列 代码: import flash.events.KeyboardEvent; import flash.text.TextField; import flash.events.Event;

//为舞台注册按下事件帧听器 stage.addEventListener (KeyboardEvent.KEY_DOWN,keyDown); //定义键盘按下事件侦听器函数 function keyDown(e:KeyboardEvent):void {  //得到键的ASCII码  var keyCode:uint=e.charCode;  //把ASCII码转换为字符  var str:String =String.fromCharCode(keyCode);  //创建动态文本实例  var txt:TextField=new TextField();  //显示字符  txt.text=str;  //x坐标在舞台中随机分布  txt.x=Math.random()*550;  //设置y坐标  txt.y=400;  //为动态文本注册enterFrame事件侦听器  txt.addEventListener(Event.ENTER_FRAME,txtMove);  //把动态文本实例添加到主时间轴下  this.addChild (txt); } //定义enterFrame事件侦听器 function txtMove(e:Event):void {  //获取动态文本  var txt:TextField =e.target;  //根据缓冲公式设置缓冲效果  txt.y+=(Math.random()*400-txt.y)/10;  //如果超出舞台的上方  if(txt.y<1)  {   //移除enterFrame事件侦听器   txt.removeEventListener (Event.ENTER_FRAME ,txtMove);   //从主时间轴下移除动态文本实例   this.removeChild(txt);  } }

代码中用到的缓冲公式是用于缓冲效果的,缓冲公式如下: 显示实例.x+=(终点x坐标-显示实例.x)/速度 显示实例.y+=(终点y坐标-显示实例.y)/速度 设置了缓冲公式后,显示实例就可以从起点以从快到慢的速度到达终点,但实际上不是到达终点 而是接近终点。因此在判断显示实例是否超出舞台上方时,判断的条件是txt.y<1,而不是 txt.y<0

 

posted on 2012-11-13 22:19  才美  阅读(244)  评论(0编辑  收藏  举报