| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > Flash游戏制作 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
5GBFreephp空间
RealTracker提供免
HKflash提供免费个
Sharea免费3G媒体
FLASH调用XML数据
Flash Remoting -

reflector 碰撞平板           

reflector 碰撞平板

作者:佚名 来源:闪吧 作者: drmingdrmer 更新:2007-1-13 20:43:19 错误报告 我要投稿

reflector 碰撞平板

* component *
* for mx 2k4 *
监测和实现碰撞的平板组件。

preview:
点击浏览该文件

componet mxp & sample source file(fla)
点击浏览该文件

使用方法:将组件放入场景,通过as设置检测碰撞的对象,并需要用程序控制碰撞的监测。碰撞检测的结果通过事件来

处理。
组件本身只提供了基本的监测功能,具体的需求需要利用事件处理编写更多的代码。

设置对象:

comp_instance.addTarget(target_mc:MovieClip);

监测1次碰撞

:_global.refreshReflector();

使能:事件列表:


on(hit)
on(collide)
on(passed)

组件参数设置:

按此在新窗口浏览图片

clipName: 用于显示视觉效果的元件连接名
doubleSide: 是否检测来自两侧的碰撞

e: 弹性系数,当碰撞发生时,根据这个系数确定target_mc的运动。>0则反弹,<0则穿过。
enabled: 使能
f: 摩擦系数,当碰撞发生时,根据这个系数确定target_mc的运动。建议取值0<f<1。0表示平板表面粘性很大,会把target_mc粘住,1表示完全光滑。

xforce: 当碰撞时,附加给target_mc的力,沿平板切线。

yforce: '' '' ''.... 沿平板法向。

属性:
clipIns: 视觉效果的mc的引用

top, left, right, bottom
范围,相对于comp_ins的父坐标系。

xMax,xMin:
板的宽度,相对于comp_ins自己的坐标系。

以及同组件参数名的对应属性也可以直接访问。

方法:
addTarget(o:MovieClip):Void
添加1个被监测的对象。被添加的对象将自动监听碰撞产生的onHit,onCollide,onPassed事件

removeTarget(o:MovieClip):Void
删除1个被检测的对象。

enableMe(e:Boolean):Void
使能

testCollision():Void
检测所有的对象是否发生碰撞。

isPassed(v1,v2):Boolean
检测运动前后的两个点是否穿过平板,v1(x,y)/v2(x,y)。

update():Void
刷新范围变量(top,bottom,left,right,xMin,xMax)。

clip事件:
on(hit) 当target_mc接触平板时触发,不论target_mc是否反弹或穿过。
on(collide) 当target_mc反弹平板时触发。
on(passed) 当target_mc穿过平板时触发。

onXXX事件:
onHit
onCollide
onPassed

这几个事件的含义同上,不同在于带有eventObject的参数,eventObject有3个属性:

type: 事件名字,如'onHit'
target: 发出事件的对象,如comp_ins
hitPosition: 碰撞发生的x坐标,相对于comp_ins坐标系。

监听:
addEventListener(type:String,target:Object)
很熟,不介绍了。

removeEventListener(..)
也很熟。

例子:场景中有1个reflector的实例r1,1个名为p的实例,作为碰撞对象。

选中p,输入


onClipEvent(load){
_root.r1.addTarget(this);
this.onHit=function(eo){
trace(eo.target);
}
}
onClipEvent (enterFrame) {

_x += (_root._xmouse - _x) * .2;
_y += (_root._ymouse - _y) * .2;
_global.refreshReflector();
}

选中r1,输入:


onClipEvent(load){
this.rv=2;
this.onHit=function(eo){
this.rv=eo.hitPosition*.1;
}
}
onClipEvent(enterFrame){
this._rotation+=this.rv;
this.rv*=.97;
}

运行可以看到碰撞的效果,具体见示例源文件
点击浏览该文件

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

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