Flash AS 实例进阶 键值捕获实现代码

所属分类: 媒体动画 / Flash教程 阅读数: 186
收藏 0 赞 0 分享

  Flash 动画的交互性是通过鼠标和键盘进行,前面的章节讲的都是鼠标控制,本节开始接触键盘控制,响应键盘的方法有几种,但归根结底可以用一句通俗的话概括,就是程序运行中,发现哪个键被按下了,并执行相应的动作,这里介绍的是通过判断获取的键控代码值来实现键盘控制,还是老套路,使用一个这样的实例,这是去年作的一个练习, 就叫距离产生美吧。

  源文件下载

  点击查看动画效果<实例2-9 键盘控制

  基本思路

  ① 主场景中放置 2 个保持一定距离的 MC 。

  ②再放置一个空 MC 用来写脚本,当然,也可以写到前面的 MC 实例上,这样是便于阅读和理解脚本。

  ③按下↑↓←→键两个 MC 都向同方向运动,并始终保持固定的距离和前后关系,还要保持朝向和移动的方向的一致

  ④设定边线,不向线外运动。

  ⑤松开按键,两 MC 保持原始方向。

  新知识点


复制代码
代码如下:

onClipEvent (keyDown);// 影片的事件处理函数。触发的是按下按键事件 。
onClipEvent (keyUp) ; // 触发的是松开按键事件 。
Key.getCode() // 获得键值。

  本实例只用到了 4 个键值,但为全面了解,将一个别人所写最新教程的键控代码值和键常量表复制下来。

  

  图 2 — 2 键控代码

  

  图 2 — 3 键常量

  实例说明

  好象没什么需要说明,就是 QG 追 QM ,总也追不到。

  编写动作脚本

  ①在空 MC 上输入:

复制代码
代码如下:

onClipEvent (keyDown) {// 按键事件触发
  s = 1;
  if (Key.getCode() == 37) {// 条件为获取的键值为“ 37 ” 即“ ←”的键值。
    _root.qa.play();
    _root.qb.play();
    _root.qa._x -= s;
    _root.qa._xscale = -_xscale;// 令MC“ qa ”水平翻转
    _root.qb._xscale = _xscale;
    _root.qb._x = _root.qa._x-80;// 令MC“ qb ”水平位置到“ qa ”左边
  }
  if (Key.getCode() == 39) {// 条件为获取的键值为“ 39 ” 即“ →”的键值。
    _root.qa._xscale = _xscale;
    _root.qa.play();
    _root.qb.play();
    _root.qa._x += s;
    _root.qb._xscale = -_xscale; // 令MC“ qb ”水平翻转
    _root.qb._x = _root.qa._x+80; 令MC“ qb ”水平位置到“ qa ”右边
  }
  if (Key.getCode() == 38) {// 条件为获取的键值为“ 38 ” 即“ ↑”的键值。
    _root.qa._y -= s*2;
    _root.qb._y = _root.qa._y;
  }
  if (Key.getCode() == 40) {// 条件为获取的键值为“ 40 ” 即“ ↓”的键值。
    _root.qa._y += s*2;
   _root.qb._y = _root.qa._y;
  }
  if (_root.qa._x<100) {// 以下 4 条语句是限制边界
    _root.qa._x = 100;
  }
  if (_root.qa._x>430) {
    _root.qa._x = 430;
  }
  if (_root.qa._y<50) {
    _root.qa._y = 50;
  }
  if (_root.qa._y>320) {
    _root.qa._y = 320;
  }
}
onClipEvent (keyUp) {// 释放键触发
  _root.qa.stop();
  _root.qb.stop();
  if (_root.qa._x<_root.qb._x) {// 依据两个MC“qa”和“qb”的左右位置,确定翻转与否,而保证是相向而立。
    _root.qa._xscale = _xscale;
    _root.qb._xscale = _xscale;
  } else {
   _root.qa._xscale = -_xscale;
   _root.qb._xscale = -_xscale;
  }
}

  要点分析

  ① Key.getCode() == 37 可以写成 Key.getCode() == Key.LEFT ,“ Key.LEFT ”是与左箭头键的键控代码值 (37) 关联的常量,初学或需给别人看,用这样方式写好,直观明了,而直接用键值写能省点劲,我是那里省力写 这里费力说。

  ②这里 onClipEvent (keyDown) 结合 Key.getCode() == () 的脚本,事件触发是主体,而获取键值只是确定该有啥动作的的条件,不要以为 if (Key.getCode() == 37) { _root.qa.play(); }就可以有 _root.qa.play(); 的动作。

  小结

  响应键盘是游戏和课件中普遍应用的,什么物体运动呀 飞行呀,开炮放枪的,都需要键盘来实现人机交互, 根据学习进度的要求,本节只介绍了通过MC的按键事件触发和键值捕获的方法来实现键盘控制,也是比较简单实用的方法,咱们是不用招法多,好用就中。

  课后练习

  大改源文件,让一个Q满场乱跑,另一个Q由键盘控制去追,追上之后出现一个新画面,提示:没准辙的瞎跑当然要用随机函数,追上的语句就用我们学过的知识 用X.Y坐标值的差来判断, MC 的碰撞方法或碰撞检测的组件大家还没学 , 我也不会。范例效果:

  点击查看动画效果<练习2-9

  源文件

  查看全套"Flash AS 实例进阶教程"

更多精彩内容其他人还在看

flash怎么制作镜像动画?

flash怎么制作镜像动画?flash中制作动画很简单,怎么才能制作一个动画的镜像呢?下面我们就来看看flash制作镜像动画的详细教程,很简单,需要的朋友可以参考下
收藏 0 赞 0 分享

flash制作图片变换的gif动画效果

这篇教程是向脚本之家的朋友分享flash制作图片变换的gif动画效果方法,教程制作出来的动画效果非常不错,难度不是很大,一起来学习吧
收藏 0 赞 0 分享

flash怎么绘制和谐号火车从火车道开过的动画?

flash怎么绘制和谐号火车从火车道开过的动画?想制作一个火车从轨道上飞奔而过的一个画面,该怎么制作呢?下面我们就来看看flash制作和谐号火车从火车道开过的动画的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

FLASH怎么制作红烛燃烧的动画?

FLASH怎么制作红烛燃烧的动画?FLASH中做动画很方便,今天我们就来看看使用flash制作蜡烛燃烧并流下烛蜡的教程,很简单,下面我们就来看看详细教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么填充渐变色? flash渐变填充的使用方法

flash怎么填充渐变?flash中想给图形添加渐变色,该怎么添加呢?下面我们就来看看flash渐变填充的使用方法,这是基础教程,很简单,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么制作磁铁吸钉子的动画?

flash怎么制作磁铁吸钉子的动画?我们知道钉子放到磁铁周围就会直接将钉子吸走,该怎么制作这个动画呢?下面我们就来看看flash制作磁铁吸引钉子的动画教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么画中国国宝大熊猫? flash绘制卡通大熊猫的教材

flash怎么画中国国宝大熊猫?flash中制作动画很简单,但是也可以简单的绘制图形,该怎么绘制呢?今天我们就来看看flash绘制卡通大熊猫的教材,需要的朋友可以参考下
收藏 0 赞 0 分享

Flash工具缩放、旋转和倾斜对象使用介绍

今天小编为大家介绍Flash工具缩放、旋转和倾斜对象使用方法,对于初学者来说,是个很好的学习教程,推荐到脚本之家,一起来看看吧
收藏 0 赞 0 分享

flash中怎么用鼠标绘制一朵木兰花?

flash中怎么用鼠标绘制一朵木兰花?flash中除了做动画效果以外,还可以绘制图形,今天我们就来看看flash用鼠标绘制一朵木兰花的详细教程,很简单,详细教程请看下文
收藏 0 赞 0 分享

FLASH制作一个小车一直往前推的动画?

FLASH制作一个小车一直往前推的动画?想做一个动画,就是有个小推车一直不断的往前进,中途不能倒,该怎么制作呢?下面我们就来看看这个动画的制作方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多