Egret社区
白鹭引擎在2.5版本中将Lark与Egret的内核进行整合,原有的Lark引擎框架合并入最新的Egret Engine 2.5,同时适用于游戏和应用开发。以下列出升级2.5常见问题,其他升级问题请发到 技术问答版块我们会根据大家反馈及时总结并更新到该帖中。如有需求也可以参阅EDN相关说明文档Egret Engine 2.5 更新详解 。(由于引擎2.5.0第三方库的使用方式完全更新了,如果您需要升级的项目中,引用了非官方的第三方库,在升级的过程中不会拷贝。请手动拷贝第三方库,按照新的第三方库引入的方式使用,地址http://edn.egret.com/cn/index.php/article/index/id/172
配置完成之后,如果在命令行中,请手动执行一下egret build -e.如果在wing中,请执行一下编译引擎操作。)


1. 从2.0.2升级到2.5.0报错, 手动打命令也一样报错

在EgretWing中执行  项目---升级项目引擎
报错

您正在使用的引擎版本为 2.5.0
正在更新到2.5.0
正在从C:/egretProjects/Shan,拷贝到C:/egretProjects/Shan_new ..
'node' �����ڲ����ⲿ���Ҳ���ǿ����еij���
���������ļ���

升级配置文件损坏,请检查引擎后重试


:这个是命令行的bug,已经修改了,我们会尽快发一个hotfix。您可以采用临时方案先解决一下:手动安装一个nodejs。下载地址:Mac:https://nodejs.org/dist/v0.12.2/node-v0.12.2.pkg  windows: https://nodejs.org/dist/v0.12.2/node-v0.12.2-x86.msi。然后重启命令行,再执行升级命令即可。注意,如果是Mac用户,这个临时方案只能在命令行里手动输入命令,在Wing里无效。

2. 升级2.5之后 stageWidth与 stageheight。
以前的项目升级2.5之后 stageWidth与 stageheight只能去发布后的html里改了么 调试的时候一直是480*800,以前还可以在egret_loader里改下,现在... 想问下,正常情况下应该如何修改默认尺寸

:在项目的index.html改

3. 升级到2.5之后,简单的graphics画图怎么不起作用了?

代码如下:
var shp: egret.Shape = new egret.Shape();
        shp.graphics.lineStyle(1,0x000000);
        shp.graphics.moveTo(0,0);
        shp.graphics.lineTo(100,100);
        this.addChild(shp);


运行出来什么都没有

:shp.graphics.endFill(); 必须加endFill,才会开始绘制。以前不加也能画出来的是个bug。

4. 关于2.5更新后API的问题。在API中的部分方法是否会被废弃?如图所示,其中可能还有别的方法,是否是会被废弃,还是将要被废弃呀?

:将要被废弃。可以使用 startTick  和 stopTick 来代替。关于怎么用直接看api注释就应该知道了。和之前的Ticker的基本一样,只是写法变成了  egret.startTick(function(),  this)); 然后回调里参数是时间戳不是时间片。 Egret 2.0 到 Egret 2.5 版本API变化说明

5. Egret引擎升级2.5.0,项目迁移时,碰到官方没写到或不清晰的

*egret.StageDelegate.getInstance().setDesignSize  的替代方法
*egret.MainContext.instance.netContext.proceed(版本号加载)  的替代方法
*Injector类没有了:egret.Injector.getInstance 获取唯一类的方法怎么迁移
*egret.BlendMode.ERASE_REVERSE功能怎么通过新的mask实现,我之前是用一张png的图来ERASE_REVERSE做裁切,但mask的对象只能是Rectangle那怎么实现裁切
*现在只能用:anchorOffsetX了,那自己做的组件,或图片,有时经常不能及时获取到正确的宽高,那怎么设anchorOffsetX
*_texture_to_render没有了,改用方法怎么用

*egret.StageDelegate.getInstance().setDesignSize  这个就是在 html 中配置的宽高
*egret.MainContext.instance.netContext.proceed(版本号加载)  这个没了,这个是内部使用的方法,按理外部是不会使用到的。
*Injector类没有了:egret.Injector.getInstance。目前只有 gui 和 res 使用的,都有对应的api,如果你自己使用过 Injector,那么请把这个类自行放到你的代码中去解决。
*egret.BlendMode.ERASE_REVERSE,mask 现在是支持2中,Rectangle和DisplayObject。
*现在只能用:anchorOffsetX了,根据加载完后再获取宽高。
*_texture_to_render。首先所有带下划线的都是内部使用的api,请勿使用。另外,如果你真的使用到了,请通过 RenderTexture 的方式来实现自己的需求

6. 根据官方的指引,替换旧项目、升级引擎,处理掉api冲突的代码。 这一步解决好了,但是现在编译就是全局编译啊,连没引用的类也会编译进来,导致原本可以跑的项目 用了新的引擎之后 根本跑不起来,没引用的为何要编译

追加一个新的问题:

第三方类库的引用 原本在以前的引擎是这样的引用的
在 项目下的egretProperties.json
{
  "name": "greensock",
  "path": "src/code/extends/greensock"
},
{
  "name": "jszip",
  "path": "src/code/extends/jszip"
}以前这样写就可以达到导入第三类库,现在这样写 编译 build-e 之后 libs下面的文件夹没导入成功。引擎对这一块有过修改么?

:第三方库的代码请放到项目外面。问题已经解决,解决的方案是这样的:
1,因为现在的编译的管理是全局编译,也就是不区分代码是被引用 只要在src下面的都会直接编译一起。
2.因为我导入的类库位于src下方的文件目录 导致编译器重复编译。


7. 之前我用gui做了个弹出窗口,现在弹框的背景变透明的了,只有按钮的文字还在。gui不再支持更新了,起码让之前的gui控件能运行起来把!

:麻烦看下素材有没有全部拷过去,可能升级过程中素材没有完全拷过去。另外请确认下 egret.Injector.mapClass("egret.gui.ISkinAdapter", MySkinAdapter) 改成了 egret.gui.mapClass("egret.gui.ISkinAdapter", MySkinAdapter) 有可能是因为升级的时候,没有自动把resource.json拷贝过去。我们已经发现了这个问题,正在修复。


8.打开Inspector调试,空空的,啥都不显示。当初选egret,就是喜欢这个调试工具.

:Inspector 使用最新的 2.4.0版本,是支持 2.5和2.0.x的


9. 新版本的适配模式问题,showAll模式,在浏览器打开总感觉字体画面模糊,改成noScale模式,画面就清晰了。这可能是缩放问题导致的,之前2.0版本没这问题,不会模糊。

:showAll 模式会根据当前的显示区域进行等比拉伸的。所以2.0.x和2.5是完全一样。根据showAll的定义,就是有可能缩放的,缩放了会导致模糊,这个是比较正常的。这版的改动可能是因为默认加了跟随浏览器窗口大小适应,导致效果不一致,各种适配模式的定义具体的适配模式文档,请看 http://edn.egret.com/cn/index.php/article/index/id/553


10. 下了官方的EUI example项目,运行之后效果真不怎么的,1是字体模糊,2是点击按钮,总感觉不顺畅,比如点击弹出一个窗口,会卡顿几十毫秒,可能是在加载资源,但是这体验真不好。还有就是拖动pannel的时候,窗口有明显的震动感,不平滑。

:模糊是因为使用了 showAll 适配模式。可以改成 noScale 模式来看。关于拖动不流畅的问题我们测试下,看看如何解决。

11. eui模式下没有视图吗?

:wing2.1.0 版本暂时不支持eui的编辑,将在几周内发布一个新的版本wing支持eui的编辑。

12. 升级2.5之后的源码问题,请问下 2.5目录下有个 build 目录  这个目录是干嘛的。 引擎引用的类库是extension目录下的。还是build目录下的。比如我要修改res 。我应该修改buildm目录下的res.js 还是 extension->resource 下的我就改了 resource 下的加载源码。肿么重新生成build目录下的。res.js呢?要修改加载类库应该改哪里?

:build是发行版目录,你还是改ts,然后执行egret make命令,就会自动生成到build目录了。

13. 原来做横屏可以添加的egret_loader.js文件中,2.5没有这个js文件了,请问我该添加到哪里呢 ?例如下面这段代码

window.onorientationchange = function(){
        if(isMobile)
        {
            rootContainer.onRotation(window.orientation);
            doResize();
        }


:项目根目录下面有个 index.html 文件,在这里添加。另外关于项目的一般配置,包括背景颜色,横屏,屏幕适配策略,调试显示等都可以在这个文件中设置。参考教程:http://edn.egret.com/cn/index.php/article/index/id/643

14. 单个文件和图片加载进度的支持吗?

:已经实现,但是图片加载进度目前还无法实现,因为浏览器上没有提供任何图片加载进度的接口。虽然有新的接口可以变通实现(就是那个把字节流转换为图片的接口。加载字节流可以有进度。加载完成的时候转成图片对象),但是还没普及。要等一段时间。其他的文件可以有进度。之前无法实现进度的原因就是图片没进度,然后所有加载器都是一个URLLoader,所以统一没进度。现在分成了两个类:ImageLoader和HttpRequest,ImageLoader还是没进度,负责加载图片。HttpRequest加载其他类型,它是有进度的。

15. 引擎升级到2.5后,多个版本之间如何切换?




分享到 :
0 人收藏

79 个回复

倒序浏览
dom  圆转纯熟 | 2015-9-15 11:50:34
顶顶顶,大家有问题快来吐槽啊
ActionScript3.0  略有小成 | 2015-9-15 13:54:59
期待,请不要在折磨我们这些开发者了!
cherrie  登堂入室 | 2015-9-15 14:02:06
dom 发表于 2015-9-15 11:50
顶顶顶,大家有问题快来吐槽啊

吐槽有零食吃吗?
cherrie  登堂入室 | 2015-9-15 14:02:07
dom 发表于 2015-9-15 11:50
顶顶顶,大家有问题快来吐槽啊

吐槽有零食吃吗?
iweryxian  登堂入室 | 2015-9-15 14:41:03
密切关注中~
steven1041  自成一派 | 2015-9-16 08:43:56
啥时能成熟啊
cloudy1982  圆转纯熟 | 2015-9-16 09:41:01
还没发布吧?
请来个一键包,不是一键的不会装。。。昨天jerry说了我去官网和以前的帖子也没翻到哪有一键包,捉急
lissylissy  网站编辑 | 2015-9-16 10:55:42
来顶一下
yicaoyimu  初窥堂奥 | 2015-9-16 11:12:52
顶顶顶~~~~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部