11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2414|回复: 3
上一主题 下一主题

[显示机制] 显示对象小练习之三(碰撞检测)

[复制链接] TA的其它主题
发表于 2019-2-21 14:40:32 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 雪原xy 于 2019-2-21 14:50 编辑

[Actionscript3] 纯文本查看 复制代码
//显示对象小练习之三(碰撞检测);
package{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
public class SampleHit extends Sprite{
//定义一个三角形图形;
private var triangle:Sprite=new Sprite();
//定义一个矩形图形;
private var rect:Sprite=new Sprite();
//定义一个点;
private var P:Point=new Point(150,200);
//下面是构造函数;
public function SampleHit():void{
//画三角形;
drawT();
//画一个点,这是为了看清点在哪里,方便调试;
drawP();
//拖拽三角形;
triangle.startDrag(true);
//画矩形;
drawR();
//注册侦听器:检测碰撞;
triangle.addEventListener(Event.ENTER_FRAME,hitFun);
}
private function drawT():void{
triangle.graphics.lineStyle(3,0xffffff);
triangle.graphics.beginFill(0x996600);
triangle.graphics.moveTo(60,0);
triangle.graphics.lineTo(30,40);
triangle.graphics.lineTo(90,40);
triangle.graphics.lineTo(60,0);
triangle.graphics.endFill();
addChild(triangle);
}
private function drawP():void{
this.graphics.beginFill(0x990000);
this.graphics.drawCircle(P.x,P.y,5);
this.graphics.endFill();
}
private function drawR():void{
rect.graphics.lineStyle(3,0xffffff);
rect.graphics.beginFill(0x00ff00);
rect.graphics.drawRect(100,80,100,80);
rect.graphics.endFill();
addChild(rect);
}
private function hitFun(e:Event):void{
if(e.target.hitTestObject(rect)){
trace("你碰到了矩形!");
//矩形的长宽减少2;
rect.height-=2;
rect.width-=2;
}
if(e.target.hitTestPoint(P.x,P.y,true)){
trace("你碰到了点!");
//三角形发生形变;
e.target.scaleX=0.5;
e.target.scaleY=2;
}
}
}
}




评分

参与人数 1银子 +10 金子 +1 贡献 +1 收起 理由
TKCB + 10 + 1 + 1 11RIA 闪客社区,就是这么专业

查看全部评分

 楼主| 发表于 2019-2-21 15:00:39 | 显示全部楼层
学习总结:
1、学会了插入SWF文件,并播放,挺有意思!!
2、碰撞检测有两种方式,一个是关于点的碰撞,一个是显示对象的碰撞;
3、所有显示对象都可以使这两个方法;
学习困惑:
1、TCKB好像有一个更加精准的碰撞检测,不知道是不是在这个方法的基础上做出来的;
2、 e.target.scaleX=0.5;
      e.target.scaleY=2;
     这两句代码好像只执行一次就不执行了,不知道是为什么?
回复

使用道具 举报

发表于 2019-2-21 16:23:48 | 显示全部楼层
雪原xy 发表于 2019-2-21 15:00
学习总结:
1、学会了插入SWF文件,并播放,挺有意思!!
2、碰撞检测有两种方式,一个是关于点的碰撞,一 ...

碰撞有算法的,很多大神都会写算法进行碰撞,好的碰撞算法,比系统自带的好用很多。(主要是效率高)

其实一般情况下,系统自带的够用!
回复

使用道具 举报

发表于 2019-2-21 16:25:42 | 显示全部楼层
【11RIA 闪客社区,评分公示】:
是否有价值:一般(银子 +10  贡献 +1)
是否原创:是(金子 +1)
是否翻译:否
如对自己的评分有疑问,则咨询版主、管理员等。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表