
注意: 以下教程都是在Flash MX版本下进行的!可以通过鼠标拖动Internet上经常看到的Flas中的某些对象. 例如,一些七巧板游戏(如七巧板,控制音量的滑块等)在闪光灯中使用拖动动作.
1. 拖放命令的详细介绍
1. 首先,介绍开始拖动命令的详细用法,然后在以下示例中对其进行测试.
命令格式: StartDrag(要拖动的影片剪辑,[是否锁定在鼠标位置的中心,向左,向上,向右,向下])
或写为
要拖动的影片剪辑. StartDrag([是否锁定到鼠标位置的中心,左,上,右,下]]
命令说明: 在制作的过程中,可以选择以上两种书写方法之一. 其中[]是可选参数,即可以写入还是不写入. 至于左,上,右和下四个参数,则用于控制所拖动对象的移动范围.
2. 停止拖动命令说明
命令格式: 拖动的影片剪辑实例的名称. stopDrag()
因此您可以停止拖动对象.
第二,示例说明
让我们使用一个简单的示例来尝试使用拖动命令.
步骤:
1. 创建一个新的Flash文档,并在舞台上画一个圆. 选择圆圈,然后按F8键将此圆圈转换为影片剪辑,并将其命名为: circle. 确认后,将在舞台上创建一个圆的实例. 如下图所示:

2. 选择此实例,然后按F9打开操作面板. 输入以下脚本:
打开(按){

this.startDrag(true); //按下鼠标时,此实例(因为我们在实例本身中编写了脚本,因此此处使用它代替影片剪辑实例的名称)可以被拖动,使用上述命令. 对于参数的选择,此处仅填写对鼠标位置中心的锁定. 如果要选择不锁定鼠标位置的中心,则可以将true更改为false. 有兴趣的朋友可以将其更改为false以查看.
}
开启(发布){
this.stopDrag(); //类似地,释放(释放)鼠标时,拖动动作将停止.
}
脚本编写如下:

3. 好的,现在让我们按Ctrl + Enter进行测试. 您将看到圆圈在舞台上被鼠标拖动的效果.
4. 好的,通过此示例,我们可以简单地应用拖放操作. 现在我们需要继续这个例子. 还记得上面命令说明中控制拖动范围的left,top,right和bottom四个参数吗?现在让我们来限制拖动范围.
5. 现在,在舞台上绘制一个200 * 100大小的矩形,并注意不要填充边框. 如下图所示:

6. 如果我们希望在拖动时只能在矩形内拖动圆,则必须首先设置矩形的坐标,然后写下矩形的四个顶点的坐标(这很重要!). 好的,例如,此示例中矩形的四个顶点如上图所示. 然后我们要采用的四个参数应该是: left = 50,up = 100,right = 250,down = 200现在打开操作面板并立即修改脚本,如下所示:
打开(按){
this.startDrag(true,50,100,250,200); //在这里,我们使用刚确定的4个参数. 4点的参数实现了拖动对象上矩形区域的运动约束!
}
开启(发布){
this.stopDrag();

}
脚本编写的最终效果如下:

7. 呵呵,等不及要测试您的结果了?好的,按Ctrl + Enter进行测试!
好吧,让我们在这里停止对拖动的解释,让我们学习如何结合拖动动作来检测对象之间的碰撞!不要走开: ) 3.碰撞命令说明
命令格式: 目标影片剪辑的实例. hitTest(拖动的实例)这是一个相对简单的碰撞检测命令
目标影片剪辑的实例. hitTest(被拖动实例的X轴坐标,被拖动实例的Y轴坐标,对象的矩形区域或对象本身的范围)这是检测碰撞命令的一个更复杂的点
命令说明: 以上两个命令用于检测冲突. 您可以根据需要选择不同的命令. 专注于解释对象矩形区域的范围和对象本身的范围(在上述命令中,false表示对象矩形区域的范围,true表示对象本身的范围). 有关详细信息,请参见下图:

四个. 碰撞命令和拖动命令的组合
(1),让我们通过一个简单的示例学习碰撞命令(我们首先学习如何检测它是否接触到对象的矩形区域)
1. 创建一个新的Flash文档,并在舞台上画一个圆. 选择圆圈,然后按F8键将其转换为影片剪辑,并将其命名为: circle. 这将在舞台上创建一个圆的实例. 如下图所示:

2. 选择该实例并为其命名,此示例称为: yuan如图所示:

3. 选择文本工具,然后将文本类型选择为“动态文本”,然后在圆实例下拖动并绘制一个动态文本框. 并创建一个变量名称: tt,如下所示:


4. 选择时间轴的第一帧,按F9打开操作面板,然后输入以下脚本:
_root.onenterframe = function(){
//这是时间轴上的AS编写规则,被解释为对舞台上的每一帧执行以下脚本(onenterframe).
if(_root.yuan.hitTest(_root._xmouse,_root._ymouse,false)){
//根据上面命令的解释,这句话是为了检测碰撞. 如果鼠标触摸舞台上Yuan实例的矩形区域,则会执行以下脚本.
tt =“矩形接触面积”; //动态文本框显示“接触矩形面积的范围”
}其他{
tt =“不触摸矩形区域”; //如果鼠标没有触摸舞台上Yuan实例的矩形区域,则表明它没有触摸矩形区域.
}
}
第一帧上的最终完整脚本应如下图所示:

5. 确定,现在您可以按Ctrl + Enter来测试结果.
(2),拖放碰撞检测
现在让我们再举一个例子来说明拖动碰撞检测. 如果您想偷懒,可以通过修改上面的示例中的代码来学习.
1. 现在稍微修改上面的示例,以便我们可以学习拖放碰撞检测,在上面的示例的舞台上绘制一个矩形,然后将该矩形转换为名为的影片剪辑. 这样,将在舞台上创建另一个矩形实例,现在为该矩形实例创建一个名称: juxing. 如下图所示:


2. 选择此矩形实例,打开操作面板,然后输入可以拖动该实例的脚本. 如下:
打开(按){
this.startDrag(true);
}
开启(发布){
this.stopDrag();
}
此脚本将能够拖动此矩形实例. 有关具体说明,请参阅第一个拖动对象示例的脚本描述.
3. 现在修改脚本,选择时间轴的第一帧,按F9打开操作面板,您将看到上一个示例的碰撞检测脚本,将其修改为以下脚本:
_root.onenterframe = function(){
如果(_root.yuan.hitTest(_root.juxing)){
tt =“我见过”;
}其他{
tt =“未遇到”;
}
}
此脚本与先前的碰撞检测脚本相似,不同之处在于无需编写X轴和Y轴,也无需编写是否接触矩形区域. 简单的^ _ ^
完整的脚本应如下图所示:

好,现在又是测试阶段,让我们观察一下结果〜
结束语: 我相信,如果您成功完成了以上示例(嘿,更多),您一定会精通拖动对象和碰撞检测的脚本. 在实际应用中,它们非常有用...
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-299582-1.html
爱你一生不后悔
错