zoukankan      html  css  js  c++  java
  • 白鹭引擎

    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);
        }
    }
  • 相关阅读:
    新型监控告警工具prometheus(普罗米修斯)入门使用(附视频讲解)
    Nginx、OpenResty和Kong的基本概念与使用方法
    Kubernetes网络方案Flannel的学习笔记
    新型监控告警工具prometheus(普罗米修斯)的入门使用(附视频讲解)
    超级账本HyperLedger:Fabric nodejs SDK的使用(附视频讲解)
    超级账本HyperLedger:Fabric使用kafka进行区块排序(共识,附视频讲解)
    超级账本HyperLedger:Fabric Golang SDK的使用(附视频)
    超级账本HyperLedger:Fabric的Chaincode(智能合约、链码)开发、使用演示
    超级账本HyperLedger:Fabric源码走读(一):源代码阅读环境准备
    超级账本HyperLedger:Fabric从1.1.0升级到1.2.0
  • 原文地址:https://www.cnblogs.com/lovling/p/8403837.html
Copyright © 2011-2022 走看看