白鹭引擎 - 碰撞检测 ( hitTestPoint )
1, 矩形碰撞检测
class Main extends egret.DisplayObjectContainer { /**
* Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 super )
* constructor 是类的构造函数, 类在实例化的时候调用
* egret.Event.ADDED_TO_STAGE, 在将显示对象添加到舞台显示列表时调度
*/
public constructor() {
super();
this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
} /**
* 显示对象.hitTestPoint(x, y) 用于判断矩形与某个点是否发生碰撞
* 以下为检测左右晃动的矩形是否与 点 300, 100 发生碰撞 (相交)
*/
private onAddToStage(event: egret.Event) {
var isHit:boolean = false;
var infoText:egret.TextField = new egret.TextField();
infoText.y = 200;
infoText.text = "isHit: " + isHit;
this.addChild(infoText); var shp:egret.Shape = new egret.Shape();
shp.graphics.beginFill( 0xff0000 );
shp.graphics.drawRect( 0,0,100,100);
shp.graphics.endFill();
this.addChild(shp); var append = 10;
egret.startTick(function():boolean {
shp.x += append;
if (shp.x == 540) {
append = -10;
} else if (shp.x == 0) {
append = 10;
}
isHit = shp.hitTestPoint(300, 100);
infoText.text = "isHit: " + isHit;
return true;
}, this);
}
}
2, 像素碰撞检测
class Main extends egret.DisplayObjectContainer { /**
* Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 super )
* constructor 是类的构造函数, 类在实例化的时候调用
* egret.Event.ADDED_TO_STAGE, 在将显示对象添加到舞台显示列表时调度
*/
public constructor() {
super();
this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
} /**
* 显示对象.hitTestPoint(x, y, 是否使用像素检测) 用于像素碰撞检测
* 与矩形碰撞检测相比, 像素碰撞检测只会检测显示对象显示部分与这个点是否碰撞
* 而矩形碰撞检测是检测显示对象的包围圈是否和这个点碰撞, 像素碰撞检测消耗性能大
* 如下绘制两个圆, 依次和他们的最小包围矩形的右下角的坐标做碰撞检测
* 最小包围矩形 => 水平的能将整个图案包括在内的矩形
* 可以发现, 矩形碰撞检测, 碰撞点只要在显示的对象的最小包围矩形内, 就返回 true
* 而像素碰撞检测, 碰撞点只有在园内的, 即显示区域内, 才返回 true
*/
private onAddToStage(event: egret.Event) {
var shp1:egret.Shape = new egret.Shape();
shp1.graphics.beginFill( 0xff0000 );
shp1.graphics.drawCircle( 50,50,50);
shp1.graphics.endFill();
this.addChild(shp1); var shp2:egret.Shape = new egret.Shape();
shp2.graphics.beginFill( 0xff0000 );
shp2.graphics.drawCircle( 50,450,50);
shp2.graphics.endFill();
this.addChild(shp2); var isHit0:boolean = shp1.hitTestPoint(100, 100);
var isHit1:boolean = shp2.hitTestPoint(100, 500, true); var infoText:egret.TextField = new egret.TextField();
infoText.y = 200;
infoText.text = "isHit0: " + isHit0 + ", isHit1: " + isHit1;
this.addChild(infoText);
}
}
白鹭引擎 - 碰撞检测 ( hitTestPoint )的更多相关文章
- Egret Engine(白鹭引擎)介绍及windows下安装
Egret Engine简要介绍----- Egret Engine(白鹭引擎)[Egret Engine官网:http://www.egret-labs.org/]是一款使用TypeScript语言 ...
- 白鹭引擎 - 显示对象与 HelloWord ( 绘制了一个红蓝相间的 2 x 2 格子 )
1: 白鹭引擎默认实在一个 640 * 1136 的画布上作画 2: 入口文件 Main.ts, 类 Main 是程序的入口 // 1, 在一个宽高为 640 * 1136 的画布上作画 // 2, ...
- Net Core SignalR 测试,可以用于unity、Layair、白鹭引擎、大数据分析平台等高可用消息实时通信器。
SignalR介绍 SignalR介绍来源于微软文档,不过多解释.https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?v ...
- day132:2RenMJ:MJ需求文档&MJ游戏流程&Egret白鹭引擎安装&TypeScript简要介绍
目录 1.麻将产品需求文档 2.麻将游戏流程 3.Egret白鹭引擎 4.TypeScript简要了解 5.TypeScript快速入门 1.麻将产品需求文档 1.麻将术语 1.名词术语 牌⼦: 序数 ...
- Egret(白鹭引擎)——Egret+fairyGui 实战项目入门
前言 一行白鹭上青天 需求 最近,我们老板刷刷的为了省事,给美术减压(背景有点长,不说了). 美术出 fairygui,我需要在网页上看到实时操作,并且看到效果! 需求分析 这怕是要了我的狗命啊,但是 ...
- 白鹭引擎EUI做H5活动 入门篇
前言:本学习文档的目的是为了实现h5,或者简单的h5游戏,比如说,我们要实现一个可以左右,或者上下移动的场景的h5,在场景移动的过程中,会有相应的动画或者操作,我们通过 js 也可以实现,但是为了流畅 ...
- 白鹭引擎 - 本地坐标和舞台坐标的转化 ( globalToLocal, localToGlobal )
class Main extends egret.DisplayObjectContainer { /** * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 ...
- 白鹭引擎EUI做H5活动 巩固篇
项目目录 上面这张图片是项目的目录结构,咋们一点一点来讲解: .wing:包括 Egret 项目的任务配置文件和启动配置文件. wingProperties.json:Egret Wing 项目配置文 ...
- 白鹭引擎 - 资源文件的加载 ( RES, loadConfig, loadGroup )
class Main extends egret.DisplayObjectContainer { public constructor() { super(); this.addEventListe ...
随机推荐
- DS二叉树--层次遍历
题目描述 层次遍历二叉树,是从根结点开始遍历,按层次次序“自上而下,从左至右”访问树中的各结点. 建树方法采用“先序遍历+空树用0表示”的方法 要求:采用队列对象实现,函数框架如下: 输入 第一行输入 ...
- Java序列化的理解与学习
1.什么是Java序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM的生命周期更长.但在现实应 ...
- zuul网关Filter处理流程及异常处理
本文转载自:https://blog.csdn.net/tianyaleixiaowu/article/details/77893822 上一篇介绍了java网关Zuul的简单使用,进行请求路由转发和 ...
- 廖雪峰Java1-4数组操作-1遍历数组
1.遍历数组 for循环通过下标遍历数组 for each直接遍历数组所有元素 int[] ns1 = {1, 34, 9, 16, 25}; for(int i = 0;i<ns1.lengt ...
- HDOJ 2019 数列有序!
#include<vector> #include<iostream> #include<algorithm> #include<cstdio> usi ...
- centos6.8下pptp客户端的安装配置
原文: https://blog.csdn.net/zhang11321132/article/details/20612473 yum -y install ppp pptp pptp-setup ...
- [UE4]根据时间、速度进行插值:Finterp to Constant
一般在“Tick”事件中使用: Current:当前值 Target:期望的目标值 Delta Time:时间变化值. Interp Speed:插值速度 返回值:从“当前值”过渡到“期望的目标值”的 ...
- 《Linux性能及调优指南》1.3 Linux文件系统
翻译:飞哥 (http://hi.baidu.com/imlidapeng) 版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明. 原文名称:<Linux Performance a ...
- layerUi与AJAX的一种思路
javascript:function rep(id) { layer.confirm("确定要拒绝此认证吗?", { btn: ["确定", "取消 ...
- 爬取猫眼电影TOP100
本文所讲的爬虫项目实战属于基础.入门级别,使用的是Python3.5实现的. 本项目基本目标:在猫眼电影中把top100的电影名,排名,海报,主演,上映时间,评分等爬取下来 爬虫原理和步骤 爬虫,就是 ...