矢量绘图:

1. 为矢量绘图绘制外边 - graphics.lineStype()

    private createGameScene():void
{
console.log("Runtime start."); var myShape:egret.Shape = new egret.Shape(); myShape.graphics.lineStyle(10, 0x00ff00, 1);
myShape.graphics.beginFill(0xff0000, 1);
myShape.graphics.drawRect(0,0,100,200);
myShape.graphics.endFill();
this.addChild(myShape); console.log("Runtime end.");
}

2. 清空一个显示对象的绘图 - graphics.clear()

3. 绘制圆形 - graphics.drawCircle(0, 0, 50)

4. 画直线:

    private createGameScene():void
{
var myShape:egret.Shape = new egret.Shape();
myShape.graphics.lineStyle(5, 0x00ff00, 1);
myShape.graphics.moveTo(50, 10); //将画笔移动到起点位置
myShape.graphics.lineTo(100, 20); //从起点位置划线到终点
myShape.graphics.endFill();
this.addChild(myShape);
}

5. 贝塞尔曲线:

    private createGameScene():void
{
var myShape:egret.Shape = new egret.Shape();
myShape.graphics.lineStyle(5, 0x00ff00, 1);
myShape.graphics.moveTo(50, 200);      //将画笔移动到起点位置
myShape.graphics.curveTo(150, 50, 250, 200); //指定起始移动方向的交汇点坐标,与终点坐标后进行画线
myShape.graphics.endFill();
this.addChild(myShape);
}

6. 绘制圆弧:

    private createGameScene():void
{
var myShape:egret.Shape = new egret.Shape();
myShape.graphics.lineStyle(5, 0x00ff00, 1);
myShape.graphics.beginFill(0x1122cc);
//圆心坐标、半径、起始弧度、终止弧度,填充的区域是圆弧+圆弧两端点的连接所包含的区域
myShape.graphics.drawArc(200,200,100,Math.PI/3, Math.PI);
myShape.graphics.endFill();
this.addChild(myShape);
}

7. 值得注意的是:graphic 可以用来绘制多个图形,不用一个 graphic 对应一个图形。

遮罩

1. 矩形遮罩:

    private createGameScene():void
{
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 shp2: egret.Shape = new egret.Shape();
shp2.graphics.beginFill(0x00ff00);
shp2.graphics.drawCircle(0,0,20);
shp2.graphics.endFill();
this.addChild(shp2);
shp2.x = 20;
shp2.y = 20; var rect: egret.Rectangle = new egret.Rectangle(20,20,30,50); //参数指定的区域是遮罩不遮挡的区域
shp.mask = rect;
}

2. 对象遮罩:可以用一个对象当成另一个对象的遮罩

square.mask = circle;    //像这样直接指定即可

碰撞检测

    private createGameScene():void {

        var infoTest = new egret.TextField();
infoTest.y = 200;
infoTest.text = "碰撞结果";
this.addChild(infoTest); //显示一个文本以展示测试结果 var shp:egret.Shape = new egret.Shape();
shp.graphics.beginFill(0xff0000);
shp.graphics.drawRect(0, 0, 120, 120);
shp.graphics.endFill();
this.addChild(shp); console.log(shp.width); //shp 的 width 与 height 与显示对线的内容相关,这里是 120
console.log(shp.height); var testPoint = new egret.Shape();
testPoint.graphics.beginFill(0x000000);
testPoint.graphics.drawRect(100, 100, 5, 5); //标记一个黑色的边界点
testPoint.graphics.endFill();
this.addChild(testPoint); var isHit:boolean = shp.hitTestPoint(110, 110); //结论:是否碰撞与 shp.graphics 相关,而与 shp.width/height 无关
infoTest.text = "碰撞结果" + isHit; //就算已经 addchild,可以直接修改文本, 结果是 true shp.graphics.clear(); //如果不clear, 重新 drawRect 不会生效
shp.graphics.beginFill(0xff0000);
shp.graphics.drawRect(0, 0, 100, 100);
shp.graphics.endFill();
var isHit:boolean = shp.hitTestPoint(110, 110);
infoTest.text = "碰撞结果" + isHit; //结果是 false
}

  值得注意的是,精确坐标的碰撞检测是非常消耗性能的,尽量少用。

Egret 矢量绘图、遮罩、碰撞检测的更多相关文章

  1. Egret引擎随学随机

    1.纹理集实际上就是将一些零碎的小图放到一张大图当中.游戏中也经常使用到纹理集.使用纹理集的好处很多,我们通过将大量的图片拼合为一张图片从而减少网络请求,原先加载数次的图片资源现在加载一次即可.同时, ...

  2. 圆形CD绘制 (扇形)

    参考: Egret教程Arc是使用示例:http://edn.egret.com/cn/article/index/id/673 我封装的工具类: /** * 圆形进度 * @author chenk ...

  3. Egret的容器--删除对象,遮罩

    class P91F extends egret.Sprite { public constructor() { super(); this.addEventListener(egret.Event. ...

  4. Egret Engine 2D - 遮罩

      矩形遮罩 shp.mask = new egret.Rectangle(20,20,30,50);   注意如果rec发生变化,需要重要将rec赋值给shp.mask 删除遮罩的方法 sprite ...

  5. Egret Engine 2D - 矢量绘图

      绘制矩形 drawRect 绘制矩形边 lineStyle( 10, 0x00ff00 清空绘图 clear 绘制园形 drawCircle 绘制直线 moveTo lineTo 绘制曲线 cur ...

  6. Egret初体验–躲避类小游戏

    下面简单介绍一下我这个游戏:基本上就3个画面(准备再添加一个胜利的界面)开始画面,一个按钮,点击进入游戏游戏画面,滚动的背景,触摸移动的老鹰,从天而降的翔,以及右上角的时间条结束画面,显示结果,关注按 ...

  7. Egret官方案例学习笔记

    1.资源记载方式 (1)Egret引擎是2.0.5. (2)resource/resource.json文件是: { "resources": [ { "name&quo ...

  8. Egret 纹理、计时器

    1. 九宫切 典型例子就是圆角矩形的拉伸问题. 先去P一张绿色的圆角矩形. private createGameScene():void { var box:egret.Bitmap = new eg ...

  9. Egret学习笔记 (Egret打飞机-9.子弹对敌机和主角的碰撞)

    运行起来,虽然主角飞机和敌机都在互相发射子弹,但是子弹打中了就和没打中效果是一样的.. 这一章我们就来处理子弹和飞机的碰撞问题. 我们所有的操作都是基于Main这个容器来做的.所以我就把这个处理放到M ...

随机推荐

  1. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

    出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙,目前就职于滴滴出行. 转载者:豆电雨(starain)微信:doudianyu 若想令自己所写的对象具有拷贝功能,则需实现 N ...

  2. @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符?

    出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙(子循),目前就职于滴滴出行. 转载者:豆电雨(starain)微信:doudianyu 属性可以拥有的特质分为四类: 原子性- ...

  3. log4j配置祥解

    第一步:加入log4j-1.2.8.jar到lib下. 第二步:在CLASSPATH下建立log4j.properties.内容如下: 1 log4j.rootCategory=INFO, stdou ...

  4. Shiro Quartz之Junit測试Session管理

    Shiro的quartz主要API上提供了org.apache.shiro.session.mgt.quartz下session管理的两个类:QuartzSessionValidationJob和Qu ...

  5. Creating a simple static file server with Rewrite--reference

    Today, I’d like to take a quick moment to demonstrate how to make a simple file server using Rewrite ...

  6. vim 学习相关记录

    VIM 相关内容****************** vim 的三个模式: 编辑模式 --> 输入模式 --> 末行模式 编辑模式: 通常键入键盘值被理解成一个操作; 如: dd(删除行) ...

  7. 转 - CSS深入理解vertical-align和line-height的基友关系

    一.想死你们了 几个星期没有写文章了,好忙好痒:个把月没有写长篇了,好忙好想:半个季度没在文章中唠嗑了,好痒好想. 后面一栋楼有对夫妻在吵架,声音雄浑有力,交锋酣畅淋漓,还以为只有小乡镇才有这架势,哦 ...

  8. js 终止页面加载

    var xmlhttp = new XMLHttpRequest(); xmlhttp.abort(); window.stop();

  9. redisbook笔记——redis内部数据结构

    在Redis的内部,数据结构类型值由高效的数据结构和算法进行支持,并且在Redis自身的构建当中,也大量用到了这些数据结构. 这一部分将对Redis内存所使用的数据结构和算法进行介绍. 动态字符串 S ...

  10. 手动导出Excel及Excel导出原理探究

    前言:不知道大家有没碰到过,官方大型网站(例如中国移动)上很多地方查询列表是不提供数据导出的,而且界面上的筛选也无法满足我们的需求. 这时候我就想,如果能导出成Excel并借助自带的数据筛选方便多了. ...