1,Egret的程序入口:

C和java是以一个main函数作为入口,但egret类似于ActionScript 是以一个文档类作为入口,确切的说是以这个文档类的构造函数作为入口;

2,文档类的构造函数即egret程序的入口函数,可以看到入口函数内有这样一行代码:

this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this)

目前只需要知道这行代码保证了onAddToStage方法执行时,文档类实例已被添加到舞台中,并且在onAddToStage方法内,this.stage 属性已经有效,其指向舞台对象。

3,在Main.ts 中找到创建游戏场景的createGameScene()方法,清空里面的所有内容,及其后面的所有方法,重新ctrl+s自动构建,然后点击调试,会发现在自动打开的Chrome浏览器中,不像之前显示的游戏页面,而是什么都没有了,现在开始输入代码,编程;

现在先重新写一个背景:

输入var bg:egret.Shape = new egret.Shape();  //创建一个egret.Shape的对象bg,egret.Shape对象有绘图功能,绘制背景的工作就利用这个对象来完成;

Egret 中官方提供的类都在包egret中,后面为了简化,会省略包名,直接写成Shape来表示egret.Sahpe,其他类也一样;

graphics是Shape对象的一个属性,用来绘制图形,绘制以beginFill()开始,以endFill()结束;用beginFill来填充颜色,所以要给其传个表示颜色值(和其他语言一样,十六进制组合表示,但要将 # 改成 0X)的参数;

两个方法间还用到drawRect(0,0,this.stage.stageWidth,this.stage.stageHeight)方法,若是画圆就是drawCircle(),此处drawRect()方法的参数是两对坐标,起始坐标和终止坐标,因为画的要覆盖屏幕,所以此处起始坐标为原点,终止坐标就是舞台的宽和高;

绘制完后,还要将其添加到显示结构中,才可以在运行时显示出来,super.addChild(bg) ; addChild 是egret引擎常用的显示结构的的方法,就是将某个显示对象添加到显示容器中;(注意文档类实例添加到舞台是引擎默认完成的,不需要我们用代码实现),super的使用是因为addChild方法是该类的父类定义的,也可根据个人习惯写成this.addChild(bg);至此,背景的添加就完成了;

但是可以看到,浏览器中并不是完全被占满整个屏幕;因为egret应用最广泛的是移动应用,通常使用的屏幕适配模式是整体显示,egret提供几种常规的适配模式,刚才那种就是整体显示的模式(不进行缩放),表示为showAll;

占满屏幕的是另一种,为fixedWidth,fixedWidth模式会保持原始宽高比缩放,缩放后应用程序内容会在水平和垂直方向都填满窗口,但只保持应用程序的宽度不变,高度可能发生改变,我们可以在index.html文件中进行修改适配模式,data-scale-mode = "showAll"  将showAll修改成 fixedWidth 即可;

或者是在项目代码里面也可以进行修改:this.stage.scalemode=egret.StageScaleMode.FIXED_WIDTH;效果和在index.html文件里面修改的效果是一样的;

修改了背景,接下来添加一些文字:

和修改背景类似;声明对象,设置对象属性,添加对象;

var tx:egret.TextField = new egret.TextField();

tx.text = " I'm Lee,hello everybody, I'll study with you in the future";

tx.size = 30;

super.addChild(tx);

可以发现,文字的显示格式有些乱,下面调整一下格式;

加上这几句:

tx.x = 20;
tx.y = 20;
tx.width = this.stage.stageWidth-40; 显示格式如下:

注意前两行分别设置了文本对象的x和y值,是基于锚点设置,锚点默认位于显示对象的左上角;也可以根据需要设置锚点的位置;

响应用户操作:

对文字加上响应操作:

tx.touchEvent = true;  //允许该显示对象响应touch事件,egret中所有的显示对象默认不响应touch事件,这是处于对性能的考虑;

tx.addEventListener(egret.touchEvent.TOUCH_TAP , this.touchHandler , this); //事件处理函数

然后在Main.ts文件中,还要声明touchHandler函数:

private  touchHandler(evt : egret.TouchEvent):void{

  var tx:egret.TextField = evt . currentTarget();

  tx.textColor = 0x00ff00;

}

编译运行后,点击文字会变成绿色;

此处的事件处理函数是用一个类方法实现的,还可以使用匿名函数实现:

tx.addEventListener(egret.TouchEvent.TOUCH_TAP,function(evt : egret.TouchEvent):void{

    tx.textColor= 0x00ff00;

},this);

资源加载:

egret中所有资源都是动态加载的;

资源加载清单:

Egret资源加载是以资源加载清单为基础的,资源好比是要购买的物品,资源加载配置就是购物清单;先把物品列在清单上,然后再去买物品;

Egret中使用json格式作为RES资源加载配置文件的格式。这种格式使用方便,甚至可以在记事本上边写,javascript也支持json,便于解析;

Egret中资源加载配置文件位于项目目录中的resource文件夹中,取名default.res.json。Egret项目在创建时已经包含该文件;

注意:Egret版本2.5之前的版本中,该文件的名字为resource.json。

Egret 学习之 入口函数 及开始编写程序(三)的更多相关文章

  1. 程序入口函数和glibc及C++全局构造和析构

    分类: CRT Machnasim 2011-06-15 17:45 144人阅读 评论(0) 收藏 举报 c++汇编linuxlist语言编译器 1,程序入口函数和初始化 操作系统在装载可执行文件后 ...

  2. C++学习--入口函数

    在学习第一个C++程序的时候发现控制台程序的入口函数是int _tmain而不是main,查了资料才发现_tmain()是为了支持unicode所使用的main一个别名,宏定义在<stdafx. ...

  3. JQuery学习:事件绑定&入口函数&样式控制

    1.基础语法学习: 1.事件绑定 2.入口函数 3.样式控制 <!DOCTYPE html> <html lang="en"> <head> & ...

  4. u-boot-1.1.6第2阶段入口函数start_armboot分析

    学习目标: 1.分析u-boot-1.1.6第2阶段入口函数void start_armboot (void),熟悉该函数所实现的功能 2.为后面能够掌握u-boot-1.1.6如何启动内核过程打下基 ...

  5. C#控制台程序入口函数 Main(string[] args) 参数详解

    学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...

  6. 【C#基础知识】C#控制台程序入口函数 Main(string[] args) 参数详解

    测试环境vs2019+.net5.0 请看 :https://cloud.tencent.com/developer/article/1507934 本测试环境vs2022+.net6.0 +wind ...

  7. Python新手学习基础之函数-概念与定义

    什么是函数? 函数是可以实现一些特定功能的方法或是程序,简单的理解下函数的概念,就是你编写了一些语句,为了方便使用,把这些语句组合在一起,给它起一个名字,即函数名.使用的时候只要调用这个名字,就可以实 ...

  8. Qt Windows下链接子系统与入口函数(终结版)(可同时存在main和WinMain函数)

    Qt Windows下链接子系统与入口函数(终结版) 转载自:http://blog.csdn.net/dbzhang800/article/details/6358996 能力所限,本讨论仅局限于M ...

  9. C++的入口函数

    我们最开始学习c++时,就知道要写一个main()函数,并且知道这是整个函数的入口,但是c++不只有main()函数这一个入口. 一.对于不同的程序函数入口是不同的. main()是WINDOWS的控 ...

随机推荐

  1. SqlBulkCopy实现大容量数据快速插入数据库中

    一般情况下,我们手写sqlhelper类,在此类中定义一个数据插入到数据库的一个方法.将数据库连接密封在using()的语句中.using显示了Idispose接口.可以及时释放数据库连接资源.代码如 ...

  2. SQL Server 性能优化之——系统化方法提高性能

    SQL Server 性能优化之——系统化方法提高性能 阅读导航 1. 概述 2. 规范逻辑数据库设计 3. 使用高效索引设计 4. 使用高效的查询设计 5. 使用技术分析低性能 6. 总结 1. 概 ...

  3. Entity Framework 之 Code First

    使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First [前言] 如果是Code First老鸟或者对Entity Framework不感兴趣,就不用浪费 ...

  4. python schedule processor

    run some tasks which could look like CRON within linux/UNIX in python. Here's a demo which run on ub ...

  5. 让C#、VB.NET实现复杂的二进制操作

    VB.NET和C#属于高级语言,对二进制位操作的支持不是很好,比如没有了移位运算等,用的时候确实很不方便,所以在闲暇之余我重新封装了一个用于C#.VB.NET的位操作类库,通过该类库可以实现数据移位. ...

  6. android实习程序6——拨号通话

    拨号通话 ListView GridView AdapterView 在路径android-sdkr16\android-sdkr16\platform-tools确认存在adb.exe 下载youl ...

  7. 捕鱼达人代码例子下载地址 Win版

    捕鱼达人代码例子下载地址 Win版:: http://pan.baidu.com/share/link?shareid=1601576904&uk=3189484501

  8. 使用HttpWebRequest模拟登陆阿里巴巴(alibaba、httpwebrequest、login)

    前言 其实老喜欢取经,偶尔也得分享下.关于阿里巴巴国际站的登陆,过程有点复杂但是算不上难.一不小心少个东西倒也挺麻烦的. 主要是看下请求类HttpClient基本请求封装使用,AliClient模拟浏 ...

  9. 如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备

     阅读目录 前言 准备 实现 结语 一.前言 最近实在太忙,上周停更了一周.按流程一步一步走到现在,到达了整个下单流程的最后一公里——结算页的处理.从整个流程来看,这里需要用户填写的信息是最多的,那么 ...

  10. 爬虫关于ip管理池的应用

    在爬虫的时候经常会遇到一个问题就是ip被封,由于ip对网站的短时间大量请求,让网站将我们的ip暂时封掉.这样我们就无法全部爬取自己想要的内容. 这里百度了一下解决办法,很多人都提到了ip代理管理池的问 ...