Skip to content

Egret Framework FAQ

DOM edited this page Jun 23, 2014 · 31 revisions

Egret Framework 新人问答集

1. Egret Framework 是什么

Egret Framework是一款使用TypeScript语言构建的开源免费的移动游戏框架。

您可以通过访问Egret官方站点了解更多信息。

2. TypeScript是什么

TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。

TypeScript扩展了 JavaScript 的句法,所以任何现有的JavaScript程序可以不加改变的在TypeScript下工作。TypeScript是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性。

以上内容节选自维基百科

3. 为什么Egret采用TypeScript语言开发

TypeScript是遵循 下一代 ECMAScript 标准( ES6 )的编程语言,而ES6同时也是JavaScript2规范,它通过强类型等更严格的语法检查机制来保证大型项目的可维护性,并且在未来可以无缝过渡到浏览器原生支持的JavaScript2。与此同时,由于 TypeScript 和 Flash ActionScript 3.0 的高度一致性,Egret采用 TypeScript开发也能保证 Flash开发者的最低的迁移成本。

4. TypeScript 和 ActionScript 3.0 有什么区别

5. TypeScript 和 JavaScript 有什么区别

6. 采用TypeScript作为开发语言,调试时是调试TypeScript还是JavaScript ?

在默认情况下是 JavaScript ,也可以通过在 tsc 中添加 --sourcemap 参数来创建映射文件,浏览器会对其自动加载、自动解析,实现可以调试TypeScript的功能

7. 我完全不了解Div/CSS等知识,如何使用Egret开发

Egret并不是使用 Div/CSS 来进行绘制,而是将全部元素绘制到一个Canvas上,几乎全部元素都显示在这个Canvas中,所以开发人员完全无需了解Div/CSS的知识。

8. Egret跟JQuery是类似的吗,能用来开发网页吗?

Egret是一个跨平台游戏框架,与JQuery等操作HTML标签的网页框架不是同一类型。Egret所有的代码都在一个Canvas区域内绘制呈现,并不操作任何HTML标签或CSS,所以不适用于网页开发。

在这个问题上下文中,开发者可以把 Egret 假想成就是一个 Flash,以更方便的对此进行理解。

“ Flash 和 JQuery是类似的么?可以用来开发网页么?”就可以很容易的得出同样的结论,虽然基于 Flash的全站是可以实现,并在数年前是一项流行技术,但是采用 Web标准的开发网页目前已经成为了最主流、也是最方便的方式。

9. Egret 采用的 BSD 协议对开发者有什么限制?

参考 Egret Public Beta ReleaseNote对此的说明:

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

  • 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  • 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  • 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对 商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

简单说,开发者可以随意使用Egret代码,允许任意修改、重新发布、开发商业软件,唯一的限制是必须保留 Egret-Labs 的版权信息,不允许将 Egret代码中置于顶部的版权信息( Egret-Labs )进行随意修改或将其删除。

10. AS3-TS Conversion Tool 是否意味着 Flash游戏能通过工具转换直接移植成 Egret游戏?

答案是否定的。这个工具不是编译器,只是做简单的语法转换,并不保证转换后的代码100%能运行。因为语言特性和底层API限制,Egret无法做到跟Flash 100%兼容。所以开发者仍然需要学习Egret和TypeScript语法,尤其要注意跟Flash/AS3不兼容的地方。提供此工具主要是为了:快速将AS3里可复用的大量类库代码迁移到基于Egret的TypeScript代码。简而言之它是一个解决体力活的工具。将绝大部分有规律的语法转换都自动完成(例如自动给变量加上this关键字,转换基本数据类型等),剩下很小一部分报错借助IDE提示,手动调整即可。在迁移AS3类库过程中,使用此工具能节约大量的时间。

11.我是一名JavaScript开发者,完全不了解 TypeScript语言,请问Egret可以直接用JS写游戏么?

可以,但是 Egret 建议开发者在处理中大型项目时 使用 TypeScript 编写,以更好的维护代码质量

12.什么是node.js,为什么使用Egret需要安装node.js?

node.js是一个基于Chrome JavaScript运行时建立的一个平台,用来方便地搭建快速的,易于扩展的应用。开发者只需要会编写 JavaScript脚本,就能完成跨平台 ( Win / Mac / Linux )的开发。

Egret的全部命令脚本( 如 创建新项目、编译代码、压缩代码、发布为 NativeApp等)都是基于node.js编写的, TypeScript语言的编译器 ( tsc ) 也是运行在 node.js平台上的。所以开发者应在使用 Egret 前安装 node.js

13.Egret官方已经修复的问题,我应该如何更新?

  1. 下载Egret的新版本,或者使用 git pull 来更新引擎代码
  2. 在命令行中 进入 egret 目录,执行 npm install -g 重新安装 Egret
  3. 重新编译你的项目,执行 egret build {your_project} -e

注意,更新 egret 后请务必不要忽略 -e 参数,此命令是在构建项目的同时编译一次引擎代码

14.如何规避this引用错误引起的Bug?

答:和Flash中this总是指向实例自身不同,JavaScript的this指向可能会发生变化,因为Egret是使用TypeScript,而TypeScript最终编译为JavaScript,所以开发者也要是否小心this指向引起的问题。(http://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/)

规避方式是,仔细阅读Egret的文档说明,需要传递this的地方就不能偷懒,比如addEventListener方法;官方禁止的方法也不要使用,比如setTimeout和setInterval,这两个方法的回调函数里this也会失效,请使用Egret的Ticker和Timer来代替。

Clone this wiki locally