FLASH中碰撞检测详细分析实例
时间:2006-04-24 来源:energy110
ActionScript的hitTest(碰撞检测) 1、语法:
HitTest()
功能:用于检测鼠标是否略过某个剪辑或则两个剪辑是否发生重叠、相交等情况
格式一:anyMovieClip.hitTest(x,y,true/false);
anyMovieClip是舞台工作区中的任意影片剪辑实例,x,y,是剪辑的坐标范围
格式一:anyMovieClip.hitTest(target);
target是舞台工作区的一个影片剪辑实例,其余同上
请看碰撞检测程序--物件接触示例.fla。
一共是1帧3个影片剪辑实例,分别为bug(虫子),zapper(插坐),reset(复位按钮)
其所有程序都加在了bug影片剪辑实例上,内容为:
on (press) {//当鼠标按下时
this.startDrag();//允许当前剪辑拖拽
}
on (release) {//当释放鼠标时
stopDrag();//停止当前剪辑拖拽
}
onClipEvent (load) {//当此剪辑载入时,初始化
_root.zapper.stop();//设置插座动画停止播放
playjishu = 0;//设置插座播放计数器初始值为0
initx = _x;//保存初始时虫子的x坐标
inity = _y;//保存初始时虫子的y坐标
_root.reset.onPress = function() {//当按下reset(复位按钮)剪辑时
buer = false;//初始计数状态为false
_x = initx;//读取初始时虫子的x坐标
_y = inity;//读取初始时虫子的y坐标
_alpha = 100;//设置透明度为100
_rotation = 0;//设置角度为0
playjishu = 0;//设置插座播放计数器初始值为0
};
}
onClipEvent (enterFrame) {//不断地触发此动作
if (_root.zapper.hitTest(_x, _y, true)) {//如果插座剪辑和本剪辑发生碰撞时
stopDrag();//停止当前剪辑拖拽
buer = true;//初始计数状态为true,开始计数
_alpha = 75;//设置透明度为75
_rotation = 20;//设置角度为20
_root.zapper.play();//开始播放插座抖动动画
}
if (buer) {//计数状态为true时
playjishu++;计数器自加
_y += 25;//虫子剪辑的y坐标自加
}
if (playjishu>=10) {//如果计数器大于等于10
_root.zapper.stop();//停止插座动画的播放
}
}
HitTest()
功能:用于检测鼠标是否略过某个剪辑或则两个剪辑是否发生重叠、相交等情况
格式一:anyMovieClip.hitTest(x,y,true/false);
anyMovieClip是舞台工作区中的任意影片剪辑实例,x,y,是剪辑的坐标范围
格式一:anyMovieClip.hitTest(target);
target是舞台工作区的一个影片剪辑实例,其余同上
请看碰撞检测程序--物件接触示例.fla。
一共是1帧3个影片剪辑实例,分别为bug(虫子),zapper(插坐),reset(复位按钮)
其所有程序都加在了bug影片剪辑实例上,内容为:
on (press) {//当鼠标按下时
this.startDrag();//允许当前剪辑拖拽
}
on (release) {//当释放鼠标时
stopDrag();//停止当前剪辑拖拽
}
onClipEvent (load) {//当此剪辑载入时,初始化
_root.zapper.stop();//设置插座动画停止播放
playjishu = 0;//设置插座播放计数器初始值为0
initx = _x;//保存初始时虫子的x坐标
inity = _y;//保存初始时虫子的y坐标
_root.reset.onPress = function() {//当按下reset(复位按钮)剪辑时
buer = false;//初始计数状态为false
_x = initx;//读取初始时虫子的x坐标
_y = inity;//读取初始时虫子的y坐标
_alpha = 100;//设置透明度为100
_rotation = 0;//设置角度为0
playjishu = 0;//设置插座播放计数器初始值为0
};
}
onClipEvent (enterFrame) {//不断地触发此动作
if (_root.zapper.hitTest(_x, _y, true)) {//如果插座剪辑和本剪辑发生碰撞时
stopDrag();//停止当前剪辑拖拽
buer = true;//初始计数状态为true,开始计数
_alpha = 75;//设置透明度为75
_rotation = 20;//设置角度为20
_root.zapper.play();//开始播放插座抖动动画
}
if (buer) {//计数状态为true时
playjishu++;计数器自加
_y += 25;//虫子剪辑的y坐标自加
}
if (playjishu>=10) {//如果计数器大于等于10
_root.zapper.stop();//停止插座动画的播放
}
}
相关阅读 更多 +