收藏 分享(赏)

Flash AS 入门教程 碰撞检测hitTest函数.doc

上传人:kpmy5893 文档编号:6162512 上传时间:2019-03-31 格式:DOC 页数:4 大小:31.50KB
下载 相关 举报
Flash AS 入门教程 碰撞检测hitTest函数.doc_第1页
第1页 / 共4页
Flash AS 入门教程 碰撞检测hitTest函数.doc_第2页
第2页 / 共4页
Flash AS 入门教程 碰撞检测hitTest函数.doc_第3页
第3页 / 共4页
Flash AS 入门教程 碰撞检测hitTest函数.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 hitTest 用法1、my_mc.hitTest(x, y, truefalse)影片剪辑 my_mc 和由 x,y 指定的点击区域重叠或交叉,则执行(大括号中)命令。参数true 是指 my_mc 的整个形状;false 是指 my_mc 包括边框。2、my_mc.hitTest(target)影片剪辑 my_mc 与 target 的目标路径指定的实例交叉或重叠。target 参数通常表示带路径的实例名。实例应用例1 鼠标控制影片剪辑移动。鼠标在(坐标_xmouse, _ymouse)影片剪辑 qiu_mc 上(与qiu_mc 重叠或交叉)时, qiu_mc 向右移动10个象素。打开3

2、.4.1.fla 文件。在场景第1帧上的脚本为:复制代码代码如下:qiu_mc.onEnterFrame = function() /qiu_mc 执行 onEnterFrame 事件处理函数;if (this.hitTest(_xmouse, _ymouse, false) /如果鼠标坐标与 qiu_mc 交叉或重叠(鼠标在 qiu_mc 上)this._x += 10; /qiu_mc 横坐标增加10个象素;if (this._x=500) /qiu_mc 横坐标大于或者等于500 个象素时this._x = 0; /重新设置 qiu_mc 横坐标为0;;点击查看动画效果注意,把碰撞函数中

3、的参数 false 改为 true,观测不同效果,加深对 mc 的形状与边框的理解。例2 打开3.4.2fla 文件本例中,要把圆等6个图形拖到上面对应的文字上。6个图形分别是 tx1_mctx6_mc;6个对应的文字都是动态文本,名称分别是 wz1wz6.每个 mc 拖动的位置如果出错了能够自动回到原来的位置,当6个 mc 都能正确拖到对应位置上时,主时间轴从第1帧跳到第2帧,并给于文字说明。显然,我们只要在一个 mc 上的脚本写对了,其它5个 mc 就可以很方便的写出来。在主时间轴第1帧上写的脚本:复制代码代码如下:stop();i=0 ; /设置用于记数的变量在圆(tx1_mc)上的脚本

4、为:on (press) /鼠标按下时x = _x; /把本 mc 的坐标赋给本 mc 下的变量 x,yy = _y;startDrag(this, true); /拖动这个 mc on (release) /松开鼠标时stopDrag();/停止拖动这个 mcif (this.hitTest(_root.wz1) /如果这个 mc 和动态文本 wz1重叠或相交;if (k != 1) /这时如果这个 mc 上的变量 k 不为1_root.i+; /主时间轴上的变量 i 加1;k = 1;/在这个 mc 上设置变量 k=1(使一个 mc 拖动正确时,主时间轴上的记数变量i 只加1次)if(_r

5、oot.i=6) /如果主时间轴上的记数变量 i 等于6时(图形都正确拖动完毕)_root.nextFrame();/主时间轴跳到下1帧停下; else /如果这个 mc 和动态文本 wz1不重叠或相交_x = x;/把这个 mc 的坐标设置为前面得到的这个 mc 的坐标的数值_y = y;我们可以检测这段代码的正确性,然后我们可以把这段代码复制在其他5个 mc 上,只消把其中的 wz1改为相应的 wz2wz6即可。点击查看动画效果既然这六个 mc 上的代码都非常接近,我们应该想办法用函数的办法来处理。这六个 mc上的代码中只有拖动的 mc 不同以及检测的文本不同,因此,这个自定义函数应该有两

6、个参数。例3 打开3.4.3fla 文件.在主时间轴第1帧上加上如下代码:复制代码代码如下:stop();i = 0;function stlx(md, mc) /md 为拖动的 mc,mc 为检测的文本stopDrag();if (md.hitTest(mc) if (md.k!=1) /变量 k 是 md 上的,因此这里写成 md.ki+; /自定义函数是写在主时间轴上,因此主时间轴上的变量可以不用写路径md.k = 1;if (i = 6) nextFrame(); else md._x = md.x;md._y = md.y;在 mc 上的代码就可以大为简化在圆(tx1_mc)上的代码

7、就可以写成:复制代码代码如下:on (press) x = _x;y = _y;startDrag(this, true);on (release) _root.stlx(this, _root.wz1);/是在 mc 上写的调函数脚本,因此这里的 stlx()和 wz1都应该加上路径。把 tx1_mc 上的代码复制到其它5个 mc 上,只把其中的 wz1换成 wz2wz6就行了。为了可以重复做这个练习,在主时间轴第2帧上加上一个按扭,在按扭上加上:on (release) prevFrame(); /回到第1帧作业用事件处理函数改造例2中的源文件,要求:1、脚本都写在主时间轴的第1帧上,所有 mc 上都不写脚本;2、注意使用 onPress,onRelease 处理函数及循环语句

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报