| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
没有相关文章

Flash Action Script从头说起六-影片剪辑的拖动和碰撞检测           

Flash Action Script从头说起六-影片剪辑的拖动和碰撞检测

作者:金闪客 来源:闪吧 更新:2005-7-24 21:56:56 错误报告 我要投稿

 

 

 

二、影片剪辑的碰撞检测
相信不少朋友喜欢玩射击类游戏,我也曾经玩过,呵呵,子弹击中目标的快感,目标爆炸后的震撼,令很多朋友痴迷。在很多FLASH游戏里,我们可以用碰撞命令来检测子弹是否击中目标,我们还是通过一个实例来说明这个问题。

 点击浏览该文件
 点击浏览该文件

http://www.flash8.net/bbs/UploadFile/2005-4/200541802036578.swf
打开FLASH,新建一个文档,元件的制作我们怎么简单就怎么来吧,这不是我们的主要目的,呵呵。选择矩形工具,笔触颜色选无色,填充颜色选黄色,在舞台上拖出一个矩形,然后用选择工具将矩形的右边界拖出一个弧形。单击选中该图形,按F8键转换为元件,行为选影片剪辑。一个简单的子弹我们就做好了,呵呵。单击选中子弹,在属性面板中给它起个实例名blt。
下面我们制作靶子,选择矩形工具,在舞台上拖出一个矩形,再在该矩形下面拖出一个小矩形,调整二者位置即可。单击选择工具框选两个矩形,按F8键转换为元件,行为选影片剪辑。单击选中该元件,在属性面板为它起实例名bar。呵呵,又完成一个。
选择工具箱文本工具,在属性面板设置文本类型为动态文本,在舞台上拖出一个文本框。单击工具箱选择工具,选中文本框,在属性面板输入变量名text。
OK,所有元件制作完毕,至于美工问题,不是我的事,哈哈,怎么漂亮你就怎么做吧,我可没有这么多时间,呵呵。
下面我们就来进行控制和检测。我习惯于怎么简单就怎么做,呵呵。子弹的运行就麻烦各位动动手了,呵呵,累了你请我喝茶,哈哈……
单击选中子弹元件,按F9打开动作面板,输入语句
on (press) {
this.startDrag(true);
}
on (release) {
this.stopDrag();
}
这是子弹的拖动,前面刚刚玩过哦,不作解释了。
单击选中时间轴第一桢,在动作面板输入语句
_root.onEnterFrame = function() {
if (_root.blt.hitTest(_root.bar)) {
text = "击中";
} else {
text = "未中";
}
};
第一句我们前面也介绍过了,呵呵。这是加在时间轴上的影片剪辑的编写规则,enterFrame 以影片帧频不断地触发此动作,也就是说时间轴上每桢都执行下面的动作。
第二句是我们本例的精华和关键,呵呵。if是条件语句,我们可以简单的理解为“如果……”,括号内为条件,是说如果子弹碰到了靶子。
下面的就好理解了,如果子弹碰到了靶子,文本框中内容为击中,否则为未中。呵呵。
虽然简单,具体使用方法我们还是有必要进一步说明。
碰撞命令的格式为
mc.hitTest(target)
mc.hitTest(x, y, shapeFlag)

参数
x 舞台上点击区域的 x 坐标。
y 舞台上点击区域的 y 坐标。
x 和 y 坐标都在全局坐标空间中定义。
target 可能与由 mc 指定的实例交叉或重叠的点击区域的目标路径。target 参数通常表示一个按钮或文本输入字段。
shapeFlag 一个布尔值,指定是计算指定实例的整个形状 (true) 还是仅计算边框(false)。只有当用 x 和 y 坐标参数标识点击区域时,才可以指定该参数。
返回
如果 mc 与指定的点击区域重叠,则为布尔值 true,否则为 false。
说明
方法;计算由 mc 指定的实例以确定它与由 target 或 x 和 y 坐标参数所标识的点击区域是否重叠或交叉。
用法 1:按照 shapeFlag 的设置,将 x 和 y 坐标与指定实例的形状或边框进行比较。如果 shapeFlag 设置为 true,则只计算舞台上实例实际占据的区域,如果 x 和 y 重叠任意一点,则返回 true 值。这对于确定影片剪辑是否在指定的点击区域或热点区域中很有用。
用法 2:计算 target 与指定实例的边框,如果它们在任意一点上重叠或交叉,则返回 true。

以上是官方的解释,咳,罗嗦,我再罗嗦一遍,呵呵。
命令格式可以这样理解:
目标影片剪辑实例名.hitTest(被拖动影片剪辑的实例名)
目标影片剪辑实例名.hitTest(被拖动影片剪辑实例的横坐标,被拖动影片剪辑实例的纵坐标,实例本身范围(true)还是实例所在的矩形区域范围(false))

好了,有关影片剪辑的碰撞检测我们就说到这儿了,估计下次再垒长城就不会再被碰了,哈哈……
前面教程错过的朋友可以登陆金闪客论坛从头开始。地址:http://goldflash.lpscn.com

上一页  [1] [2] 

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。