浅谈白鹭Egret

 
        最近在做一个移动项目,技术选型的时候接触到了白鹭,简单了解了之后觉得挺合适的,最终就选择了这个引擎。
为什么会选择白鹭引擎呢? 我看上他主要有一下几点:
 
1、egret的类结构以及继承关系跟as3的一模一样,很容易上手。
2、egret尽量保持每个类的属性方法跟as3的一样,这样子的话as3里的写法在egret里面同样使用。
3、egret已经有一套完整的工具,可以方便的开发html5应用,也可以方便的发布手机原生应用。
4、白鹭公司的积极努力,使得每隔一小段时间都会有新版本出现。而且版本之间兼容性十分良好,还提供了一键升级。
5、如果你是as3开发者,看到egret你会心动,如果你是flex开发者,看到egret你会觉得看到了转行移动的希望。
 
所以,作为一个曾经的as3开发者,用egret来开发移动端是再合适不过了。
egret同时支持用TypeScript和JavaScript开发,作为更喜欢面向对象的我们自然就选择TypeScript了。
 
egret里面目前有下面这么多库:
egret core 是核心库用于显示图片、文字、滤镜、事件、播放声音等。
egret 3d 是他的3d引擎,如果是3d项目就要用到这个库了。
game 比较简单只有几个类MovieClip、ScrollView、URLLoader、URLRequest等。
eui 是一套界面库,用于设计界面。相当与flex了。拖拖摆摆就可以成界面了,非常方便。
socket 就是WebSocket库,长连接网络通信要用到的,游戏开发必备。
tween 是他的缓动库,不过我一般是用TweenLite、TweenMax的js版。用起来方便,跟在flash里面一样。
res 加载管理资源的,可以加载合图和单张小图。
dragonBones 骨骼动画
gui 我没有用到,据说是过时了的eui,现在已经用eui代替gui了。
tiledmap 解析tiled地图用的。
other 里面没什么,存了几个数学常量和几个类型定义。
 
详细的开发文档,官网已经介绍了,很详细,可以参考http://edn.egret.com/cn/docs/
这里主要讲下写项目的过程。
 
首先,你要下载Egret Engine
安装完成后,打开EgretEngine,在里面下载用到的几个工具 Egret Wing 3、Texture Merger、Egret IOS Support、Egret Android Support等。
 
然后,打开Egret Wing 3
新建一个Egret EUI 项目
按F5可以启动项目。
 
写项目最重要的是要建立好代码结构,组织好项目代码。
我在src文件夹下面建立了如下几个文件夹
views 是放界面的。所有的ui都在这里,
        commons,是通用的组建,例如Alert,自己写的列表等。
        games,是游戏场景里的ui
        halls,是大厅里的ui
        popups,是弹出窗口
        renderers,是列表中用到的renderer
 
utils 是放工具类,比如对ui操作的UIUtil、对string操作的StringUtil 等等。
servers 是游戏中用到的几个服务了。自己封装好http服务,tcp服务,放到这里面,对外通信通过发送事件即可。
scenes 游戏中用到的几个场景,比如负责加载的LoadingScene、大厅界面HallScene、游戏界面GameScene、可能有不同的游        戏界面可可以写成多个不通的GameScene。
models 游戏中的数据库。存放游戏里面的数据,包括servers里面的几个服务发送过来的数据,程序本身的数据,以及对数据的        简单逻辑处理。程序中用到的数据都要通过它来访问。
managers 顾名思义,管理器存放的地方,比如切换Scene用到的SceneManager,管理弹出窗口的PopupManager,自己封装的便于使用的EventManager、对声音操作的SoundManager、以及可能到本地化的LocalizeManager等。
events 自定义事件,将自定义Event放到这里方便管理。
controllers 控制器,是ui和数据的结合点,逻辑处理的地方。主要是和scenes对应,一个Scene可以对应多个controller,controller的作用是对Scene的功能进行分类,使得逻辑更加清晰。Scene有不同的功能,可以分别建不同的controller。
 
写代码都是要放到src里面,这点跟flashbuilder一样。
编译的时候egret会把我们写的每一个代码文件,分别编译成对应的js文件和js.map文件(map文件是加断点调试用的),然后放在index.html的<!--game_files_start-->和<!--game_files_end-->中间
 
在index.html里面,egret会先加载egret自己的类库,然后加载我们自定义的库,之后加载我们写的代码,最后启动引擎
egret.runEgret({renderMode:"webgl", audioType:0});
egret将代码都加载到同一个环境里。这就是为什么我们写代码的时候不用像as3那样需要通过import将代码引入了。这也是它比较方便的地方,你在这个文件里写的代码,在另外一个文件里可以直接访问。
 
和src并列的还有一个resource文件夹
这个文件夹是存放程序里用到的资源用的,包括并不限于图片,音乐,文本文件等。
resource里面最重要的是default.res.json文件,RES.getRes用到的key来自这个文件。
resource里面的default.thm.json文件是存放exml文件的,这个文件egret会自动修改,不需要我们手动修改。
 
程序的入口是Main.ts文件,这个可以修改,不过一般不用修改,默认就可以了。

浅谈白鹭Egret的更多相关文章

  1. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  2. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  3. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  4. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  7. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  8. Linux特殊符号浅谈

    Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...

  9. 浅谈Angular的 $q, defer, promise

    浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00  博客园-原创精华区 原文  http://www.cnblogs.com/big-snow/ ...

随机推荐

  1. 配置阿里云ESC服务器部署项目

    第一次SSH登录 ECS 服务器: 打开命令行终端(git),键入: > ssh root@39.108.54.110 输入实例密码,进入服务器环境. 配置 root 及应用账号权限 新增管理员 ...

  2. day 51 cooike 与 session

    前情提要: cooike 和session 一:cooike 一.会话跟踪技术   1.什么是会话跟踪技术  我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可 ...

  3. 【GDOI2015】 推箱子 状态压缩+bfs

    请注意$8$是一个美妙的数字 考虑到$8\times 8=64$,而一个unsigned long long是$64$位的,所以考虑用一个$01$状态存储箱子.考虑到箱子能转动,那么四种情况都存一下就 ...

  4. OS之进程管理---实时CPU调度

    引言 一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system).软实时系统不保证会调度关键实时进程,而只保证 ...

  5. openerp QWeb

    1.web 模块 注意,OpenERP 模块中 web 部分用到的所有文件必须被放置在模块内的 static 文件夹里.这是强制性的,出于安全考虑. 事实上,我们创建的文件夹 CSS,JS 和 XML ...

  6. (转)更换镜像rootvg卷组中的硬盘

    F85系统镜像盘更换实录之一:删除原有镜像操作 # cfgmgr # lsdev -Cc disk hdisk0 Available 11-09-00-8,0  16 Bit LVD SCSI Dis ...

  7. maven tomcat插件上传项目到tomcat服务器报错SEVERE: One or more listeners failed to start.

    以前觉了maven依赖设置很简单,就是将手动导入jar包转化为自动下载导入 但发现的一个问题, 在使用maven插件tomcat打包上传工具时 tomcat-maven-plugin <buil ...

  8. Linux-(vmstat,iostat,netstat)

    vmstat命令 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无 ...

  9. 深入理解Java虚拟机:垃圾收集器与内存分配策略

    目录 3.2 对象已死吗 判断一个对象是否可被回收 引用类型 finalize() 回收方法区 3.3. 垃圾收集算法 1.Mark-Sweep(标记-清除)算法 2.Copying(复制)算法 3. ...

  10. 使用axios实现上传图片进度条

    在最近做的项目中,一个手机页面最多要上传几十张图片,虽然对照片做了压缩处理,不过最后还是很大,如果网卡的话,上传的时间很差,如果一直在loading的话,用户都不知道什自己上传了多少,为了更直观的展现 ...