1. 九宫切

  典型例子就是圆角矩形的拉伸问题。

  先去P一张绿色的圆角矩形。

    private createGameScene():void {
var box:egret.Bitmap = new egret.Bitmap();
box.texture = RES.getRes("box_png");
//拉伸
box.width *= 2; //矢量绘图是 Shape/Sprite 的 graphics 有的功能,才有自身的 width/height 与 所绘图形的 width/height
this.addChild(box); var box9:egret.Bitmap = new egret.Bitmap(RES.getRes("box_png"));
var rect9:egret.Rectangle = new egret.Rectangle(40, 40, 80, 80);
box9.scale9Grid = rect9;
box9.width *= 2;
box9.y = 200;
this.addChild(box9);
}

  看下两者的区别:

2. 纹理集

  • 不用每次为一张图片执行一次HTTP请求;
  • 引擎渲染时减少IO的次数;

  主要是在配置与资源调用上进行微调即可:

  • 合图并生成 json 配置文件;
  • 资源类型为 sheet: {"name":"dogs","type":"sheet","url":"assets/dogs.json"}
  • 调用时:RES.getRes( "dogs.dog1" )

 3. Timer

class myTimer extends egret.DisplayObjectContainer
{
public constructor()
{
super();
var timer:egret.Timer = new egret.Timer(500, 5); //500ms执行1次,一共执行5次
timer.addEventListener(egret.TimerEvent.TIMER, ()=>{
myTimer.count ++;
console.log("count:" + myTimer.count);
}, this);
timer.addEventListener(egret.TimerEvent.TIMER_COMPLETE, ()=>{ console.log("end")}, this);
timer.start();
} public static count:number = 0;
}

4. Tick: 

    private createGameScene():void {
var heroTicks = new startTickerTest(); //要添加到舞台才会触发 egret.Event.ADDED_TO_STAGE 事件,但 Main 这个容器是由 egret 自己添加到舞台的,看不到 addChild
this.addChild(heroTicks);
}
class startTickerTest extends egret.DisplayObjectContainer {
public constructor() {
super(); //容器被添加到舞台显示列表时调用
this.once(egret.Event.ADDED_TO_STAGE, this.onLoad, this);
} private hero:egret.Bitmap;
private speed:number = 0.05;
private time:number = 0; private onLoad(event:egret.Event) {
var hero:egret.Bitmap = new egret.Bitmap(RES.getRes("hero1_png"));
this.addChild(hero);
this.hero = hero;
this.time = egret.getTimer();
//不与帧率挂钩的每秒60次回调
egret.startTick(this.moveStar, this);
} //egret 在执行 startTick 的回调时,会给予参数 timeStamp(当前时间戳)
private moveStar(timeStamp:number):boolean {
var now = timeStamp;
var time = this.time;
var pass = now - time; //平均时间间隔=1000ms/60=16.67ms
console.log("moveStar: ",(1000 / pass).toFixed(5));
this.hero.x += this.speed * pass;
if(this.hero.x >= 300)
egret.stopTick(this.moveStar, this);
this.time = now;
return false;
}
}

5. 帧事件:

    private createGameScene():void {
var heroTicks = new startTickerTest();
this.addChild(heroTicks);
}
class startTickerTest extends egret.DisplayObjectContainer {
public constructor() {
super();
this.once(egret.Event.ADDED_TO_STAGE,this.onLoad,this);
} private hero:egret.Bitmap;
private timeOnEnterFrame:number = 0;
private speed:number = 0.5; private onLoad(event:egret.Event) {
var hero:egret.Bitmap = new egret.Bitmap(RES.getRes("hero1_png"));
this.addChild(hero);
this.hero = hero;
//监听帧事件
this.addEventListener(egret.Event.ENTER_FRAME,this.onEnterFrame,this);
this.timeOnEnterFrame = egret.getTimer();
} private onEnterFrame(e:egret.Event){
var now = egret.getTimer();
var time = this.timeOnEnterFrame;
var pass = now - time;
console.log("onEnterFrame: ", (1000 / pass).toFixed(5));
this.hero.x += this.speed * pass;
if(this.hero.x > 300)
this.removeEventListener(egret.Event.ENTER_FRAME,this.onEnterFrame,this);
this.timeOnEnterFrame = egret.getTimer();
}
}

  基础构成看的差不多了,剩下的知识在实际项目应用中边学边用了!

Egret 纹理、计时器的更多相关文章

  1. egret -纹理集的制作

    1. 理集的使用 :http://www.codeandweb.com/ 下载软件: TexturePackergithub: 相关工具:https://github.com/ping-chen/eg ...

  2. Egret自定义计时器(TimerManager和Laya.timer)

    一 自定义计时器 因为游戏中经常用到计时器,比如每1秒发射一枚子弹啊,每2秒怪物AI自动转向啊 每次去new Timer 然后addEventListener(egret.TimerEvent...  ...

  3. Egret 位图,纹理,添加背景 学习

    1,重新设置舞台大小,可以直接到VS中的 "解决方案"中,找到 launcher->egret_loader.js中,找到setDesignSize方法,修改其中大小即可:有 ...

  4. egret之纹理填充模式(上下填充)

    首先,我们准备两张图片,一张作为背景“瓶子”,一张作位填充物“饮料”. 在皮肤里我们设置右边图片的填充模式为“repeat”,修改Y的缩放为:-1.,调整图片位置使之与地图重合,如下: 现在,我们可以 ...

  5. Egret引擎随学随机

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

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

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

  7. Egret官方案例学习笔记

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

  8. [Egret]长按图片分享、分享图片、本地存储

    egret 分享有API可以把一个显示对象树渲染成一个位图纹理,我把它赋值给 HTML 的 Image 元素,就实现了图片的显示,在微信中,通过长按图片可以分享出去.当然在其他浏览器可以保存在本地. ...

  9. Egret中使用P2物理引擎

    游戏中的对象按照物理规律移动,体现重力.引力.反作用力.加速度等物体特性,实现自由落体.摇摆运动.抛物线运动,以及物理碰撞现象的模拟.用于模拟物理碰撞.物理运动的引擎称为物理引擎. 来自瑞典斯德哥尔摩 ...

随机推荐

  1. 一个Hibernate小程序

    基本步骤 在前一篇博文Hibernate环境搭建中为大家详细的介绍如何搭建一个学习新类库的学习环境.今天,为大家带来一个Hibernate小例子,让大家能够快速上手. 步骤如下: 1.配置hibern ...

  2. 【protobuf进阶】通过.proto文件导出C#支持的.cs类文件

    protobuf是一个跨平台的消息交互协议,类似xml.json等. protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台.google 提供了多 ...

  3. 查看mysql数据库及表编码格式

    1.查看数据库编码格式 mysql> show variables like 'character_set_database'; 2.查看数据表的编码格式 mysql> show crea ...

  4. Android 动画之RotateAnimation应用详解

    android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 TranslateAnimation 位移动画效果 RotateAnimat ...

  5. 手机相机ISO是什么

    要说什么是ISO还要从传统胶片相机说起,ISO被 称为感光度,它是衡量传统相机所使用胶片感光速度的国际统一指标,其数值反映了胶片感光时的速度(其实是银元素与光线的光化学反应速率).而对于现在并不 使用 ...

  6. android 33 对话框控件

    对话框控件:最多3个按钮. mainActivity.java package com.sxt.day05_09; import android.app.Activity; import androi ...

  7. iOS-UIScrollView的delaysContentTouches与canCencelContentTouches属性

    UIScrollView工作原理 在滚动过程当中,其实是在修改原点坐标 UIScrollView有一个BOOL类型的tracking属性,用来返回用户是否已经触及内容并打算开始滚动,我们从这个属性开始 ...

  8. Java——(八)Map之LinkedHashMap、TreeMap、EnumMap实现类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.LinkedHashMap实现类 LinkedHashMap需要维护意识的插入顺序,因此性能 ...

  9. 9.27 noip模拟试题

    工资 (money/money.in/money.out) 时限1000ms 内存256MB 聪哥在暑假参加了打零工的活动,这个活动分为n个工作日,每个工作日的工资为Vi.有m个结算工钱的时间,聪哥可 ...

  10. 2.添加键盘钩子。向进程中注入dll

    学习笔记 1.首先要建立mfc的动态链接库.在def文件中放入要导出的函数名. 2.添加函数如下 //安装钩子 //HHOOK SetWindowsHookEx( // int idHook,//钩子 ...