Egret社区
分享到 :
1 人收藏

30 个回复

倒序浏览
lyy57  斑竹 | 2016-1-22 11:33:49

每周精华问题20160111—0115


1.eui EditableText prompt 如何换行显示?
http://edn.egret.com/cn/apidoc/index/name/eui.EditableText#propertySummary multiline 属性设置

2.egret默认支持那些字体呢?
这个要根据浏览器来定了,引擎渲染字体也是在浏览器基础上。 可以尝试在不用Egret而用HTML本身的css样式设置字体。这个能设置成功的在Egret都成功

3.bg1和bg2是两个不同的背景,进行背景切换,bg1和bg2是两个不同的背景,两个背景都是不动的,一开始是背景bg2,然后折线向右下角移动,bg1慢慢出现,最终bg2消失,bg1显示?
遮罩,程序大部分都在用若干矩形合成遮罩形状,并在每帧改变。 可以从上到下每个锯齿放一个矩形,宽度从0到该锯齿的宽度,高度是锯齿的高度

4.eui皮肤套皮肤怎么写的?
官方的说法是内部类. edn.egret.com/cn/docs/page/506

5.egret.Video移动端默认是全屏播放?

6.项目创建后,还可以修改分辨率吗?
在index.html中修改,或者动态修改(<已经添加到舞台的显示对象>.stage.setContentSize(400,800);)

7.监听事件不移除可以吗?会造成性能下降吗?
安全保险的方式是手动移除。相当于自己写一个析构函数。egret有些是做了一些优化的。可以不移除。可以写一个监听,移除显示列表的时候,把对象上所有的监听都取消掉。理论上,肯定是有部分消耗的。虽然没有触发,但是一直监听着

8. 现在声音不能控制播放在多少毫秒暂停播放吗?看到API里面只能设置开始和循环,暂停到某个时间点,要自己加个定时器去判断吗?
白鹭暂时还没有这功能,可以自己加个定时器。

9. 关于p2物理引擎在白鹭引擎中刚体之间弹力设置的问题?

方法1,设置全局反弹系数,
this.scene.world.defaultContactMaterial.restitution = .3;
方法2,创建ContactMaterial来针对不同材质之间使用弹性
this.wheelMtl = new p2.Material(1000);
        this.groundMtl = new p2.Material(1001);
        this.iceMtl = new p2.Material(1002);
               
        this.cmtl_wheelGround = new p2.ContactMaterial(this.wheelMtl,this.groundMtl,<p2.ContactMaterialOptions>{restitution:0.0,friction:100});
        this.scene.world.addContactMaterial(this.cmtl_wheelGround);
        this.cmtl_wheelIce = new p2.ContactMaterial(this.wheelMtl,this.iceMtl,<p2.ContactMaterialOptions>{restitution:0.0,friction:0.1});
        this.scene.world.addContactMaterial(this.cmtl_wheelIce);

//scene是一个我的成员变量,world的访问路径需要按照自己实际情况 修改一下

http://bbs.egret.com/forum.php?mod=viewthread&tid=16150

10. eui.button是否能模鼠标拟点击的效果?用代码触发,要和鼠标触发效果一样(按钮有按下的状态,然后弹起,eui.button是否可以做到?如果eui.button做不到是否有其他方法可以实现?

button.currentState = "down";
button是eui.Button。则可以这样来实现自动点击:
        egret.setTimeout( ()=>{
            button.dispatchEventWith( egret.TouchEvent.TOUCH_TAP );
        }, this, 2000 );
理解了吧?所有的交互事件都可以通过这种方式来程序模拟~

11. 在一些游戏中需要使用到按键,Egert本身并没有(应该没有吧?)虚拟按键功能所以需要开发者自己建立.我之前一直想这么干来着,把上图区分为1,2,3,4 四个区域,用户点击到那个区域就可以触发对应的事件.我之前用叉乘来算点到底在哪个位置,死活不成功,不知道有没有碰到过类似情况的同学,不想切成几个图或者图形来完成的?

用点击点和中心之间的线段的角度来确定所属范围,三角函数

12. 有没有方法能把所有的声音都停掉啊?例如点了一个按钮,把正在播的声音和音效都停掉?

取到所有声音的引用,或者你已经写了声音管理类来处理一下就可以了.
http://bbs.egret.com/forum.php?m ... id=11789&extra=
我曾经写过一个版本 不过那个是2.0.5的

http://bbs.egret.com/forum.php?mod=viewthread&tid=16030

13. 项目创建完成后如何更改属性?如帧率、缩放模式等。帧率一开始就没有找到设置的地方,缩放模式、旋转模式当项目创建后就找不到更改的地方

项目根目录下的 index.html 里面其中修改 div 属性
data-orientation="auto"
data-scale-mode="showAll"
data-frame-rate="30"
详细说明看这里
http://edn.egret.com/cn/docs/page/643

14. DragonBones 中基本动画疑惑,var armatureDisplay = armature.display;
this.addChild(armatureDisplay);
这里并没有显示出来 这是为什么?这样取不到高度和宽度
animation.gotoAndPlay(curAnimationName, 0, -1);
播放动画之后才显示出来 可以取高度宽度 请问有没有办法在添加舞台之后就显示出来呢?

这是基本动画,目前是这样的设计的,初始是不显示,你如果希望显示,可以gotoAndStop(1);视情况,引擎也许会加默认帧显示~当时设计的时候没有考虑周全,后续版本会解决这个问题的

15. 动视图里面的内容,怎么循环滚动?

目前没有这样的功能,而且大多数UI系统也不提供,这种需求很少见。因为循环意味着无头无尾,容易给用户造成混乱体验。确实需要,你可以用一种hack的方法自己实现滚动,根据滚动位置调整容器内首尾组件的位置到另一端,思路就是这样。

16.  停止声音的代码是什么?小白求助

var sound:egret.Sound = RES.getRes("xxxxx");//多种方式
var channel =sound.play(0,-1);//参数具体看api
channel.stop();//停止

http://bbs.egret.com/forum.php?mod=viewthread&tid=16238

17. 运用EUI中将LIST添加到了Scroller上碰到的问题
我给list添加了this.fb_content_list.addEventListener(eui.ItemTapEvent.ITEM_TAP,this.onClick,this);这个事件,就是item的点击事件,然后我的item里面也有个按钮,我添加了this.btn.addEventListener(egret.TouchEvent.TOUCH_TAP,this.btnEvent,this);这个事件,对了。说一下,list里面的数据是ItemRenderer的对象,我自己item继承了它,so,我想要的效果是,没点击到item上的btn时,是响应this.onClick这个方法的,而当点击item上的按钮的时候是响应this.btnEvent这个方法,但是现在出现了。我点击了item上的按钮的时候这两个方法都响应了。求问官方是这么设计的,还是有属性可以设置?我自己想到了一个给item加变量进行控制,可以避免这种情况出现。我想请教一个官方的解决方案?

之前我问过,button的touch_start或touch_end方法里,阻止事件冒泡 event.stopPropagation();
然后在button的touch_start里或touch_tap里做逻辑处理都可以。本质上ItemTap事件是在ItemRenderer上的,而Button在ItemRenderer里,所以Button也算是ItemRenderer的一部分,点到Button当然也算是点到了ItemRenderer。这是事件流本身的定义。你可以在Button里阻止事件冒泡,不会传送到父级ItemRenderer,ItemTap就抛不出来了。注意的是,这里比较特别,ItemTap实际上监听不是TouchTap的冒泡事件,而是TouchEnd事件。所以你应该在Button上监听TouchEnd,然后阻止TouchEnd的冒泡,ItemTap才会被阻止掉。

http://bbs.egret.com/forum.php?mod=viewthread&tid=16283

18. 如何实现在播放一个声音后,播放另一个声音?如果用声音监听事件的话,该如何使用?

http://bbs.egret.com/forum.php?mod=viewthread&tid=16288

19. egret canvas里面的bitmap可以上传后端服务器不?

http://bbs.egret.com/forum.php?mod=viewthread&tid=13560
lyy57  斑竹 | 2016-1-22 11:33:50

每周精华问题20150104—0108


1.如何获取用户手机是android还是IOS,用户打开一个页面  ?我怎么获取他的手机是android还是IOS?

egret.Capabilities.os
返回值.
/**
         * @language zh_CN
         * 指示当前的操作系统。os 属性返回下列字符串.
         * <ul>
         * <li>苹果手机操作系统     "iOS"</li>
         * <li>安卓手机操作系统     "Android"</li>
         * <li>微软手机操作系统     "Windows Phone"</li>
         * <li>微软桌面操作系统     "Windows PC"</li>
         * <li>苹果桌面操作系统     "Mac OS"</li>
         * <li>未知操作系统        "Unknown"</li>
         * </ul>
         * @version Egret 2.4
         * @platform Web,Native
         */

2.第三方头像链接地址获取后怎么动态加载并使用
http://edn.egret.com/cn/docs/page/590加载位图文件

3.按钮如何使用自定义字体
BitmapLabel,wing组件库中第一个就是

4.ts如何读取本地的csv文件?
http://bbs.egret.com/forum.php?m ... =6714&highlight=csv
http://bbs.egret.com/forum.php?m ... 15565&highlight=csv
可以看下这里的,如果非要使用csv。可以看下这里的http://edn.egret.com/cn/docs/page/551

5.gif文件通过 Texture Merger 导出的文件如何调用
http://edn.egret.com/cn/docs/page/596 MovieClip序列帧动画 按这个弄就行了  

6.Lakeshore怎么播放音效和背景音乐
直接拖一个声音组件就可以了,面板上可以设置它的属性http://edn.egret.com/cn/docs/page/726

7. android如何把log都屏蔽了
在web版本中,把egret.log使用的屏蔽掉。如果要使用egret.log。建议添加一个if(DEUBG){egret.log("")} 不输入log的时候,直接设置DEBUG = false

8.粒子系统如何设置大小
http://edn.egret.com/cn/docs/page/175 粒子系统教程
lyy57  斑竹 | 2016-1-22 11:33:51

每周精华问题20151228—1231


1. tween 执行完后 需要手动调用removeTweens()去释放吗? 还是引擎会自动释放的?

不需要手动 结束后的移除和你removeTweens执行的内容是一样的,除非是缓动过程没结束时停止,否则不需要手动释放

2. list刷新,list列表呈现一些数据,这些数据是动态变化的?
dataProvider = 新的数据 或者arrayCollection.source = 新的数组

3. 白鹭怎么实现卡牌翻转效果?
scaleX从1到-1,可以吗?锚点设在宽度中心,先显示牌背面,然后scaleX从1到0,给资源换成牌正面的图,然后scaleX从0到1
http://bbs.egret.com/forum.php?m ... =15827&extra=page=4
4. list的高亮条,自己定制的list,点击项目时看不到高亮条,这个要怎么做?
覆盖itemRender的getCurrentSkinState()方法,if判断如果item的selected=true那么把底图设为另外一个颜色的图,如果不是则显示默认的

5. bitmap或者sprite能否截取显示?
http://edn.egret.com/cn/docs/page/500  

6. 怎么获取帧时间,或则当前时间之类?
egret.getTimer() 获取系统时间的毫秒值

7. 打包apk发布电视上,怎么给egret.TextField的input类型调出输入状态和关闭状态呢?这个egret.TextField变量已经拿到,给这个变量dispatchEventWith(egret.TouchEvent.TOUCH_TAP)不能调用输入状态,求教调出输入和关闭状态的方法?

你把 begin、end 都派发一下看看
http://bbs.egret.com/forum.php?mod=viewthread&tid=15687

8.我的需求是点击一个按钮弹出一个窗口,里面有list列表呈现一些数据,这些数据是动态变化的,能否实现看到窗口中列表数据动态变化?我在数据变化后发出一个事件通知,然后接收到通知,对list表应用dataProviderRefreshed(),但窗口开着是看不到变化,需要关闭窗口重新打开才能开到数据变化

dataProvider = 新的数据,或者arrayCollection.source = 新的数组
http://bbs.egret.com/forum.php?mod=viewthread&tid=15758

9.Bitmap的bitmapdata和texture有什么区别?分别在什么时候用,好像一般都是给texture赋值,bitmapdata这个属性干嘛的?

一样的,调用的都是同一个方法 this.$setBitmapData(value);

public set texture(value:Texture) {
            this.$setBitmapData(value);
        }

public set bitmapData(value:BitmapData) {
            this.$setBitmapData(value);
        }

http://bbs.egret.com/forum.php?m ... =15771&extra=page=6

10. Egret Engine工作原理谁能给讲一下吗?引擎安装后会自动在环境变量注入参数吗,注入到哪个变量里了?引擎安装后会有什么服务一直开启中吗?nodejs是随引擎安装的吗,被安装到哪里了? 也有环境变量自动配置了吗之类的~想了解

Egret engine 使用 nodejs 来编译项目,为了避免对系统的依赖,所以node是放在引擎的安装目录中的。

windows 下 在 C:\Program Files\Egret\EgretEngine\win
mac 在 /Applications/EgretEngine.app/Contents/Resources/mac/node

安装后  egret 的命令会 放到 npm 的目录,如果没有安装 npm engine会创建跟 npm 相同的目录结构,并添加到PATH环境变量
windows 在 C:\Users\zcjob\AppData\Roaming\npm
mac 在 /usr/local/bin/egret

为了实现增量编译,后台会有一个 build server,这个进程在第一次执行 build 命令的时候开启,闲置5分钟的时候自动结束


11.不同类的方法之间的互相调用传值的正确写法?比如在Main类中有这个变量:public M:any,
和方法:public A(){B.b()};它调用了B类的b方法:
publick b(){C.c()},在这个方法里,又调用了C类的方法c:
publick c(){Main.M="ok"};这个方法将值赋给了Main类的M变量,这种功能的正确写法是怎样的?还有如何在M变量被赋值的第一时间得到通知?

自定义事件demo,参考附件
http://bbs.egret.com/forum.php?mod=viewthread&tid=15807

12. 如何进行url编码呢?类似java里的urlencode

直接写就可以
var url = encodeURI(window.location.href)
http://bbs.egret.com/forum.php?m ... =15820&extra=page=5

13.为啥 graphics.drawArc 和 graphic.drawCircle 画出来的都是 实心圆 (圆形)?我只要一个圆弧怎么办?

设置lineStyle不要设置beginFill就行了,请参考
http://bbs.egret.com/forum.php?m ... =15843&extra=page=5

14. 請問是否可(如何)step by step debug或者是否可設定中斷點看某變數的值???我IDE使用EgretWing,如果此IDE不行是否有可行的IDE

EgretWing就可以,在行前双击加入断点,debug启动项目

15. 请教一下,下面的图像应该是怎么实现?http://bbs.egret.com/forum.php?m ... =15844&extra=page=5

用skewY可以设置一个偏转角度
比如 img.skewY = 10  大概可以出来你第一张图效果,其他类似

16. 打个Native版本的包在Runtime环境下跑, 如何跳转页面呢 ? ' 如同修改 location.href

暂时还没有此功能
http://bbs.egret.com/forum.php?m ... =14365&extra=page=4

17. gui中的alert在eui中有没有相同功能的api?虽然也可以写啦,不过gui中都有了,总不能eui中没了吧

是这样的,那个功能特别容易实现,就没有额外封装,并且有这个Alert的话,还依赖全局必须有个UIStage,这个也是初学吐槽比较多的。所以去掉了。具体可以这么做。你自己定个组件继承Panel的。把它往stage上addChild就是那个show的功能。够简单吧?自己也可以加个静态方法给你全局调用。

18. mask遮罩后,遮罩层的透明度和颜色,怎么设置?
http://bbs.egret.com/forum.php?m ... =15866&extra=page=4

遮罩层是看不见的,被遮罩的对象只有被遮罩层图形覆盖的部分能显示出来,所以给遮罩层设置颜色是没有用的

19. 粒子要怎么用啊,官方案例感觉有点凌乱啊,
var texture = RES.getRes("pao");
        var config = RES.getRes("pao_json");
        var hit = new particle.GravityParticleSystem(texture,config);


这个particle和GravityParticleSystem要自己写吗?还是怎么样的?从官方案例扣过来的代码感觉好多啊,有精简一点的吗?

要使用粒子库
这里有第三库下载 和demo
https://github.com/egret-labs/eg ... ree/master/particle

http://edn.egret.com/cn/docs/page/172
第三方库配置

http://bbs.egret.com/forum.php?m ... =15877&extra=page=4

20. 怎样保证web发布的main.min.js的每次都下载最新的?main.min.js可以像资源那样在后面加个?v=XXXXXX这样的标志吗?让手机能够及时下载最新的main.min.js

index.html文件(注:是发布后的index.html里才有)
在main.min.js后面加上如下。当然也可以用JS获取系统时间来当做ver版本号。
<script src="main.min.js?ver=1512201320"></script>
http://bbs.egret.com/forum.php?mod=viewthread&tid=15859

21.list如何设置初选条目,同时让其变成高亮状态selectindex好像不行?
this.list.selectedIndex = 0;
            this.list.dispatchEventWith(egret.Event.CHANGING,false,true);
http://bbs.egret.com/forum.php?m ... =15889&extra=page=3

22. 发布后的libs文件夹里面的JS文件有700多K,在3G环境下,打开较慢,有没有什么办法减小啊?

减不了了,剩下的靠服务器开启 gzip 来压缩减少,= = 到lib下的js文件里把没用到代码都删了
http://bbs.egret.com/forum.php?m ... =15743&extra=page=3
lyy57  斑竹 | 2016-1-22 11:33:52

每周精华问题20151221—1225

1.如何在发布的url中带入参数
直接在链接后面带上参数,然后通过document.location.href 来获取请求的地址,然后自己截取参数。


2.使用List的dataProvider实例化列表,是立即完成吗?
不是立即的,可以设置selecedIndex


3.怎么做滚动内容
滚动控制容器http://edn.egret.com/cn/docs/page/611,普通的可以用egret.ScrollView
http://edn.egret.com/cn/apidoc/index/name/egret.ScrollView
是属于game库的


4.wing里面自带的字体是否都可以用?
要用户系统有这种字体才可以,如果想要所有用户看到的字体都一样可以使用位图字体,http://bbs.egret.com/forum.php?m ... d=90&highlight=位图字体
[工具分享] 使用ShoeBox制作fnt格式的位图字体


5.微信分享
http://edn.egret.com/cn/docs/page/607可以看下这个,分享出去的地址就是自定义分享内容接口中的link


6.加载资源组和异步加载资源是哪个优先,还是同步的?
是在同一个队列中的,如果加载资源组和异步加载资源是先后执行的,那么闲加载资源组的内容再异步加载,加载顺序是一个数组,优先级高的组会给添加到这个数组的末尾,然后下一次加载会从这个数组末尾一个资源开始加载,直到这个数组全部加载完成,才会触发complete事件


7.怎么实现切水果的分割线
画线,或者用位图模拟线,参照AS里面的实现. http://bbs.9ria.com/thread-85043-1-1.html http://bbs.9ria.com/thread-86564-1-1.html


8.做一个扇形的进度条
http://edn.egret.com/cn/article/index/id/673 看下这个例子,有源代码

9. list中订制itemrenderer带4个label,一个button,按钮是带状态皮肤的,能不能做,这些单位赋值要怎么写,比如在datamanage中,我大概看了所有的教程和论坛的相关文章,好像没有涉及多个标签按钮的示例,如果没有示例,能否简单写个?

只需要写一个ItemRendererSkin就行了。 你自己对照默认的那个ItemRendererSkin稍加扩展就能写出来.给一个例子:
http://bbs.egret.com/forum.php?mod=viewthread&tid=15628

10. 关于Child的前后遮挡问题,和ZOrder或ZIndex有关?最近在实现一个ARPG游戏,发现前后的遮挡关系,setChildIndex数值只是内部的Children的Index位置,如果设置超过最大,会添加到最后一个位置,所以,想问一下,是否有类似Zorder或zIndex类似的设置选项,比如说有两个Role,一个位置在(100,110),另外一个是(100,100),那么第一个应该遮挡才对,目前我用的是比较粗暴的方法解决,在之前先保存在gameobjects里面,做个定时器定期去进行排序操作,然后setChildIndex。

都是这样实现的定时排序的方式 最简单的就是每200ms  遍历排序一下,只是切换index的深度而且,并不会太消耗性能, 遍历的算法稍稍改进一下即可。

11. 请问白鹭用什么方法"tel:13800138000"调用电话接口?

var label: egret.TextField = new egret.TextField();
        label.width = 480;
        //label.textAlign = egret.HorizontalAlign.CENTER;
        label.textFlow = new egret.HtmlTextParser().parser("<a href='tel:13800138000' > 13800138000 </a>");
        label.textFlow[0].style.href = "tel:13800138000";
        label.textFlow[0].style.underline = true;
        label.y = 100;


我们现在在开发一款app,需要调用电话接口 传统的前端js实现方式 是<a href='tel:13800138000' > 13800138000 </a>就可以 ,请问通过白鹭应该如何实现呢,我尝试了很多办法,如上,但是连接始终点击没有任何反应,请问应该如何写呢?

不支持<a标签,超链接这样写 http://bbs.egret.com/forum.php?mod=viewthread&tid=15461

12.打包Android apk设置横屏,无法全屏。在打包成Android apk 设置Android项目 android:screenOrientation="landscape"属性,使得Android app项目成为横屏,那么问题来了成为横屏却无法全屏显示。那将无法在电视上全屏显示,求教一个在电视上显示全屏横版方法?

看下native_require.js中的DesignSize和scaleMode是否设置正确  http://bbs.egret.com/forum.php?mod=viewthread&tid=15527

13.Wing安装不成功:Egretnull安装异常? http://bbs.egret.com/forum.php?mod=viewthread&tid=15662

没安装引擎吧?
http://www.egret.com/egretengine

14. ResDepot发布不同文件夹的同名文件报错问题解决办法?比如我在a文件夹下面有m和n两个文件夹,然后m和n里面都有一个图片名字为1.png我期望的是吧这两个文件都打包到同一个json中,直接操作会导致报错有没有解决办法?
资源类的json就一个,不能重名冲突。在人物图片前面加前缀来区分吧。百度找个批量修改图片名的工具。

15. 关于2.5后的计时器选择问题?是用Ticker,还是用Timer哦。。我的需求是需要监测每帧,然后里面会有个时间累计,这个该如何选着,比如在检测的方法里面的一个逻辑是需要10秒后触发的,该如何选择?

还是可以用这个啊,某一时刻你想10秒后做某一件事就添加一个setTimeOut,不影响你的主要逻辑.要是时间累加,你也可以算每次累加ticker的时间间隔,达到10秒再执行也可以,要自己封装一下方法 http://bbs.egret.com/forum.php?mod=viewthread&tid=15597

16. Wing打包native无法在ios上运行,这个有人知道要如何解决吗?是不是要在mac下才行呢?
如果打包ios,需要在mac系统下面。windows无法打包ios

17. 求个消除类游戏的源码,A闪哥的视频教程,还没出完。
http://bbs.egret.com/forum.php?mod=viewthread&tid=15250

18. 求一个ResDepot生成的资源json在typeScript中的使用的deom或链接?http://bbs.egret.com/forum.php?mod=viewthread&tid=15695

http://edn.egret.com/cn/docs/page/123
http://edn.egret.com/cn/docs/page/121

19.划线检测碰撞问题, 如切水果那样,只要切割线触碰到图片上的任何一点就算切成功,这个检测该如何来做?hitTestPoint只能是点与物体碰撞. 还望给个思路.

手指划过屏会有一条连续的坐标(Point),然后,你用hitPointtest,试下。http://bbs.egret.com/forum.php?mod=viewthread&tid=15716

20. 有没有办法在使用了布局之后,在中间再加一个?

this.typeList.addChildAt(item,this.group1.numChildren - 2);

21. JS调用TS?求助,egret,Main里的一个函数,比如
public A(){
console.log("123");
}
index.html里的JS怎么才能调用它?

把A方法改成静态的
public static A(){}
在js中Main.A();这样就行了
http://bbs.egret.com/forum.php?mod=viewthread&tid=15723

22. 求教半透明背景问题!现在要实现一个弹窗后有一个黑色半透明全覆盖屏幕背景。那么现在我的方案是 在eui中直接拖一个rect 设置全屏半透明,但是我师傅认为用一个3*3的黑色半透明黑色图片,然后拉大做背景。那么问题来了:这俩个方法都能实现效果,但是俩个方法的优劣势各在哪?各位推荐用哪种方法呢?

第一种的缺点是操作了透明度,第二种的缺点是要额外使用一张图片
在不大量使用的情况下,差别完全可以忽略,用哪个随意
http://bbs.egret.com/forum.php?mod=viewthread&tid=15717

23.有没有办法做一个扇形的进度条?
http://edn.egret.com/cn/article/index/id/673 看下这个例子,有源代码

lyy57  斑竹 | 2016-1-22 11:33:53

每周精华问题20151214—1218


1. 怎么删除的动画中有Tween和定时器

Tween.removeTweens(target); 删除某个对象的tween,Tween.removeAllTweens(); 删除项目中所有用到的tween 定时器是timer的话timer.stop(); 其他动画是movieclip的话删除就直接移除舞台

2. TiledMap导出的tmx文件如何加入loading加载缓存,应该在resource.json中如何配置
预加载应该不支持tmx文件, tmx属于第三方库了,加那些代码很容易,在预加载complete事件中增加即可,然后在加载tmx的complete后再执行创建游戏界面逻辑

3. 如何加载tmx并显示地图
https://github.com/egret-labs/eg ... y/tree/master/tiled 有最新版本demo

4. 通过getResByUrl能不能获取服务器资源组
loadGroup就是一个加载队列,自己封装一个都可以,一组资源依次加载,一个加载完成再加载下一个

5. CDN缓存
每次发布不是都会有一个时间戳的版本号文件夹,直接把这个文件夹复制到cdn目录里,不要改名字。开放浏览的页面不用用静态html,要用php或者其他的动态语言,不然肯定被cdn缓存。在这个页面里加一个iframe,iframe指向那个版本号文件夹里的index.html。这样,每次更新发布版本,都复制到cdn目录下,再修改开放浏览页面里的iframe的src即可,这样玩家看到的就是最新的版本了。记得修改开放浏览页面的css,100% + overflow:hidden

6. 怎么在android实现退出功能
egret本身不能控制android的关闭,你需要egret代码调用java,用java调用系统方法关闭应用

7. 对象被删除,它的监听事件也会被跟随删除吗
有些会有些不会,最好是删除前移除一下事件

8.一直按住屏幕怎样收到touch信息
要先侦听TOUCH_BEGIN,按下的处理中侦听TOUCH_MOVE,然后可以用个enterframe事件,或者计时器事件来触发你要的信息,这取决于你要触发多次还是只是一次,TOUCH_MOVE如果被触发了则中断

9. Tween 有来回移动的方法
egret.Tween.get(this,{"loop":true}).to({"x":100},1000).to({"x":300},1000);位置自己改,主要是loop:true就可以了


10. getResByUrl 这个url地址怎么写?获取服务器端的资源时 这个url怎么写?
使用的不是很多,但是可以试相对和绝对路径。
RES.getResByUrl('resource/assets/map/map02.jpg'
RES.getResByUrl("http://thirdapp2.qlogo.cn/qzopenapp/a"
http://bbs.egret.com/forum.php?mod=viewthread&tid=15349

11. function 的用法?这个查遍帖子也没找到用法?
比如
private num:number;
public addTestEvent(num:number,fun:Funtion):void
{                     this.num=num;


}

punblic updata():void
{
this.num++;
if(this.num==5)
{
执行fun方法?
}
}
;
这种模仿回到函数怎么写?
test.addTestEvent(0,callBack)
private callBack():void
{
}

http://bbs.egret.com/forum.php?m ... =15343&extra=page=8

public addTestEvent(num:number,fun:Funtion,_arg:any):void
{                    
        fun.call(_arg);
}


test.addTestEvent(0,callBack,this);

12. 请问打包成Android和IOS程序,底层是用Runtime吗?请问打包成Android和IOS程序,底层是用Runtime吗?你们有没有对Runtime和H5版做过性能测试呢?
底层用的是呢,性能肯定runtime要比h5高的,我们也在继续优化性能呢

13. 市面上好像很少有TS的相关书籍,目前只会C和C#。直接学javascript可以吗?
这是两种完全不同的语言。TS是面向对象语言,你学了C#或Java或AS3,理解TS就很容易了。当然最好的是你对JS也有基本的了解。
http://bbs.egret.com/forum.php?mod=viewthread&tid=15239

14. 如何判断当前的运行环境 h5 or 安卓 or ios
egret.Capabilities.os

返回值:
/**
         * @language zh_CN
         * 指示当前的操作系统。os 属性返回下列字符串:
         * <ul>
         * <li>苹果手机操作系统     "iOS"</li>
         * <li>安卓手机操作系统     "Android"</li>
         * <li>微软手机操作系统     "Windows Phone"</li>
         * <li>微软桌面操作系统     "Windows PC"</li>
         * <li>苹果桌面操作系统     "Mac OS"</li>
         * <li>未知操作系统        "Unknown"</li>
         * </ul>
         * @version Egret 2.4
         * @platform Web,Native
         */
http://bbs.egret.com/forum.php?mod=viewthread&tid=15391

15. 白鹭里面怎么刷新本页面和页面地址跳转啊?
js里面是这么写的:
document.location.href.reload()和
document.location.href=xxxx
白鹭里面是怎么写的?

白鹭里面貌似是没有封装的,都是直接用js的。egret 实质也是 js, 直接按js的写法就可以了,可以调用页面js函数
http://bbs.egret.com/forum.php?mod=viewthread&tid=15405

16.请问怎么识别是微信还是QQ还是浏览器啊?
判断微信
public isWeiXin():boolean
    {
        var ua:string = navigator.userAgent.toString();

        var str:any=ua.match(/MicroMessenger/i);
        if(str=="MicroMessenger") {
             return true;
         } else {
               return false;
         }

    }
其他浏览器你在那个浏览器中运行一下,输出一下navigator.userAgent.toString(),然后根据结果在这里加个类似的if判断就可以了

17. 放别人cdn上什么都缓存了,连html都缓存了版本更新怎么解决   访问不变的地址但不去访问到缓存,目前想法是在自己服务器上写一个html,不会缓存,手动更改里面版本号,来跳转到别人cdn上相应的最新版本.都是担心别人收藏或分享,这样他以后通过收藏或分享进来的就可能就是旧版本

我来说个解决方案哦,也是我们在用的。

每次发布不是都会有一个时间戳的版本号文件夹吗,直接把这个文件夹复制到cdn目录里,不要改名字哦。
开放浏览的页面不用用静态html,要用php或者其他的动态语言,不然肯定被cdn缓存。在这个页面里加一个iframe,iframe指向那个版本号文件夹里的index.html。
这样,每次更新发布版本,都复制到cdn目录下,再修改开放浏览页面里的iframe的src即可,这样玩家看到的就是最新的版本了。

记得修改开放浏览页面的css哦,100% + overflow:hidden,看你了!!!
http://bbs.egret.com/forum.php?mod=viewthread&tid=12793

18. 请问白鹭用什么方法"tel:13800138000"调用电话接口?
var label: egret.TextField = new egret.TextField();
        label.width = 480;
        //label.textAlign = egret.HorizontalAlign.CENTER;
        label.textFlow = new egret.HtmlTextParser().parser("<a href='tel:13800138000' > 13800138000 </a>");
        label.textFlow[0].style.href = "tel:13800138000";
        label.textFlow[0].style.underline = true;
        label.y = 100;
我们现在在开发一款app,需要调用电话接口 传统的前端js实现方式 是<a href='tel:13800138000' > 13800138000 </a>就可以 ,请问通过白鹭应该如何实现呢,我尝试了很多办法,如上,但是连接始终点击没有任何反应,请问应该如何写呢?

http://bbs.egret.com/forum.php?mod=viewthread&tid=15461

19.dragonBones.Armature和tween不能同时使用吗?
var tweenMove = egret.Tween.get(armature);
tweenMove.to({ alpha: 0 },1000,egret.Ease.circIn);
tween的动画完全没有反应啊,Armature倒是正常播的。

你要用armature.display,你播的时候也是用的armature.display

20. gui里面的UIAssets对应eui里面的哪个?也就是this.test = new egret.gui.UIAsset;翻译到eui里面可以用什么替换?
这个组件不是被替换了 是去掉了,看你UIAssets都做了什么事,如果是把sprite之类的元素赋值给它了,那么eui中可以不用UIAssets,直接添加sprite了,如果是图片,那么可以用Image组件替代

21. Tween在运行的过程中可以停止不
egret.Tween.pauseTweens

22. Tween 有来回移动的方法吗?
egret.Tween.get(this,{"loop":true}).to({"x":100},1000).to({"x":300},1000);位置自己改,主要是loop:true就可以了

23.皮肤视图状态切换不了
如题  不知道是自己代码问题还是什么东西没用对在第一次调用show()方法的时候 死活没法把this.skin.currentState = "no";切换到“no”这个状态   第二次调用的时候从能切换   哪位大神帮忙看一下    我也逛了一下帖子  这个是不是 视图验证失效什么的啊   

http://bbs.egret.com/forum.php?m ... =15473&extra=page=1
lyy57  斑竹 | 2016-1-22 11:33:54

每周精华问题20151207—1211


1. 碰撞检测可以用在缓动的物体对象上面么?

实现的方式,可以监听egret.Event.ENTER_FRAME事件,每帧检测碰撞

2. Tween 和 movieclip哪个效率高 耗资源小
用tween比较明智,movieclip要多张图片,多次渲染。而tween只是改变一张图片的属性,即使也是多次渲染,明显消耗资源会少些,这也是动画补间的优势。当然,动画补间是有局限的,一般只用作一些简单的渐变行为,如果涉及到骨诺,动作之类的就要用多张贴图来完成了。movieclip效率高:
1,换图片对于每帧都整体刷新的动画机制来说,对性能没有影响.
2,tween动画一般都会涉及displayobject的缩放,斜切等等的形变,而这些设置了形变的displayobject渲染开销会增高,因为会增多canvas的状态改变次数。在egret引擎中,不设置形变属性的displayobject将会有更高效的渲染方式(见HTML5CanvasRender.js)。但是movieclip将会增加资源大小,作图也麻烦,具体使用还需取舍

3. DataGroup 配合 Scroller使用时,怎么设置初始位置在底部啊
http://edn.egret.com/cn/index.php/article/index/id/611 可以好好看下文档或者搜索一下论坛http://bbs.egret.com/forum.php?m ... &highlight=Scroller

4. 游戏分辨率问题
那是你选的适配方式导致的,要想都兼顾不太可能,要不然不会有那么多适配方式了 你可以用noBorder或fixedWidth,保证一个方向不会被裁掉,比如宽度保持,高度可能被裁掉,这样在屏幕下部的元素可以使用相对坐标 a.y = this.stage.stageHeight - 30 ,类似控制元素与屏幕下边缘的距离

5. 用ie浏览器打开黑屏
egret主要是针对手机的游戏引擎,不支持低版本的ie。2.0引擎需要ie9以上,2.5引擎需要ie10以上。

6.如何降低gui项目的drawcall
如果是说通用优化技巧,都差不多,尽可能地降低显示列表的复杂度。能少创建显示对象就少创建,drawCall是直接跟你的显示对象个数相关的。用最简洁的方式组织你的界面就行了。如果是九宫格,可以开启一下cacheAsBitmap。就不会当做九个图绘制的,不过是以内存换性能的方式。不要开太多。另外一方面,drawCall并不完全反应性能水平。有的图很大,有的图很小,都算一个drawCall,但是耗时完全不一样。看看就好了。总体还是要看帧率的。要获得更好的性能,建议使用新版本的EUI库替代GUI。

7. 2.5版本以后的egret入口在哪里修改
解答7:index.html中的data-entry-class

8. native下同一个声音重叠播放的问题
2.0通过res获取的同一个声音只能播放一次。2.5解决了这个问题

9. 如何关闭List的滑动功能
可以尝试在TOUCH_BEGIN或者TOUCH_MOVE事件的捕获阶段阻止事件冒泡,从而屏蔽滚动

10. egret 怎么实现游戏整体加速
MovieClip可以单独改帧率,tween可以改执行时间, 你可以定义个系数,新创建的MovieClip帧率=默认帧率*系数,tween执行时间=时间/系数 这样你改这个系数之后新的动画和缓动就执行新的时间了,当然已经存在的MovieClip如果也要控制就要遍历一下然后修改帧率

11. 怎么判断是单点触控还是多点触控呢
如果封装了多点触摸的事件,那么就是增加事件侦听,哪个事件触发 https://github.com/egret-labs/eg ... tree/master/gesture 多点触摸第三方库,有demo

12. 编译运行后提示:GET http://****.com/favicon.ico 404 (Not Found),这个是说少了个favicon.ico
这个可以忽略,这个是chrome浏览器默认加载一个页面小图标,没有也没关系,不是你项目有问题 新版引擎已经修复这个了

13. 为什么做好的游戏放到服务器上会黑屏一段时间?我做了一个小游戏本地调试的时候运行的很好但是后来放到服务器上就在进去游戏的时候会出现一段黑屏出现和黑屏的时间在游戏进度条之前出现!这是怎么一回事啊有解决的方法没

新出炉的blog,就是针对这个问题
http://city-10.com/cell/show-preloading-before-egret-play/

14. Tween 和 movieclip哪个效率高 耗资源小?

这样的话,明显用tween比较明智,movieclip要多张图片,多次渲染。而tween只是改变一张图片的属性,即使也是多次渲染,明显消耗资源会少些,这也是动画补间的优势。当然,动画补间是有局限的,一般只用作一些简单的渐变行为,如果涉及到骨诺,动作之类的就要用多张贴图来完成了。

15. H5项目如何或许当前的URL?想请教下,如何获取当前的URL, Egret 有相应的方法么?前面一个朋友说 好像可以在index.html里获取。。但是不知道怎么把它丢过来

有些问题都是需要用原生语言解决的,var url: string = window.location.href;

16. 白鹭怎么限制地理位置啊,就是必须在那个省才能有一个特别的功能?

http://bbs.egret.com/forum.php?m ... 0&highlight=GPS
你的需求必须用到地图厂商提供的服务了!没有他们你怎么知道一个省的地理坐标范围?!你可去高德或百度的网站查一下他们的服务如何能满足你的需求。高德可移步这里 http://lbs.amap.com/

17. 请问Egret怎么跟外部HTML或者JS交互?

在Main中或者你需要的类中写一个静态方法 http://bbs.egret.com/forum.php?m ... =15146&extra=page=5

18. eui自定义皮肤状态怎么写?在gui中,我在ts中自定义皮肤状态都会写
//获取皮肤当前状态
    public getCurrentSkinState(): string {
        switch(this.type) {
            case "loading":
                return "loading";
                break;
            case "fight":
                return "fight";
                break;
            case "theme1":
                return "theme1";
                break;
            default:
                return "loading";
                break;
        }
    }

    public set setCurrentSkinState(state: string) {
        if(this.type == state) return;
        this.type = state;
    }

然后在
public constructor() {
        super();
        this.type = 'loading';
    }

把type声明下就能应用自定义皮肤了,
在eui中自定义皮肤要怎么写,求解
因为gui的写法在eui中失效了


我写的自定义视图状态的Demo,看一下有没有帮助

Test1是视图,Test1Skin是视图的皮肤,有3个状态,点击屏幕3个状态切换, http://bbs.egret.com/forum.php?m ... =14934&extra=page=5

19. List好像自带上下滑动功能,怎么关闭这个功能。我还是想要响应鼠标的,不能用touchEnable=false.请问List有这个方法吗?

可以尝试在TOUCH_BEGIN或者TOUCH_MOVE事件的捕获阶段阻止事件冒泡,从而屏蔽滚动。http://bbs.egret.com/forum.php?m ... d=7055&extra=page=4

20. 哪位大神有用TypeScript实现过【事件总线】?在做游戏的时候,经常要使用到事件,当所需要的监听的事件过多的时候,代码里就全是addEventListener,特别不方便的是,当我需要发布事件的时候我还要先拿到监听对象。造成类中的私有变量定义得非常多。      

继承EventDispather写个单例类或静态类就可以用它派发事件和侦听事件,http://bbs.egret.com/forum.php?m ... =15172&extra=page=4

21. 引擎内判断横竖屏,我记得有个帖子里实现过了的   我找了半天,没找到  麻烦给个链接... 谢谢?

window["onorientationchange"] = function() {

if(window["orientation"] != 0) {

          //页面被旋转了->做某件事

}
            }

http://bbs.egret.com/forum.php?m ... =15192&extra=page=3

22. panel组件的关闭事件是不是监听不到的?this.addEventListener(egret.Event.CLOSE, this.GamePanel.closeTips, this);这个监听貌似监听不到

可以侦听Event.REMOVE_FROM_STAGE,从舞台移除的事件, 或UIEvent.CLOSING
http://bbs.egret.com/forum.php?m ... =15135&extra=page=3

23. 请问有没有关于时间的函数啊?获取当前时间或者游戏运行时间之类的时间值。

egret.getTimer()  获取游戏运行的毫秒数

24. 生成的.apk无法在pc的x86模拟器上运行,360青春版和荣耀p6手机上可以正常运行,但是电脑上的模拟器不行,这是正常的吗?

因为我们现在的这个没有x86架构的,最近的两个版本会推出android全架构的,具体时间看我们的测试进度,谢谢关注
http://bbs.egret.com/forum.php?m ... =14940&extra=page=2

25. egret 对shader支持的计划是怎么样的呢?白鹭准备以后推出这方面的接口吗?有没有统一的跨平台着色器程序应用的解决方案呢,目前实现这个的瓶颈在哪里?

看看最近Unity的动向也应该能知道,未来大的趋势是大家都会往webgl靠拢,会使用webgl标准的shader语言,在各个平台上webgl都有对应的封装实现。甚至windows都有,底层直接映射到dx。所以用webgl就好了。我们以后也会尝试替换webgl移动端的底层实现,比如ios上换成metal,android上换成vulcan,但是会保持上层webgl接口实现不变。


26. 各位前辈~怎么判断是单点触控还是多点触控呢?

如果封装了多点触摸的事件,那么就是增加事件侦听,哪个事件触发
https://github.com/egret-labs/eg ... tree/master/gesture
多点触摸第三方库,有demo

27. Tween缓动位移
egret.Tween.get(this.pen,{loop:true,onchange:this.onChange}).to({x:this.penmod.x+this.penmod.width,y:this.pen.y},200).
    to({x:this.penmod.x,y:this.pen.y+this.moveY},200).call(function(){

        console.log(this.pen.y);
    },this);
this.pen.y的值没有持续增加

就是加入if判断,满足你的条件不继续调用就可以了

你可以定义一个开关变量
private onOrOff:boolean = false;

private doTween(): void {
            if(this.onOrOff == true){
                return;
            }
            egret.Tween.get(this.sp).to({ x: this.sp.x + 20 },1000).call(this.doTween,this);
        }

在你需要的地方改变onOrOff 的值就可以控制循环是否继续了

http://bbs.egret.com/forum.php?m ... =15269&extra=page=1

28. egret实现shape一半透明一半不透明,类似于canvas刮奖的效果?

http://bbs.egret.com/forum.php?m ... =15275&extra=page=1
lyy57  斑竹 | 2016-1-22 11:33:55

每周精华问题20151130—1204


1. 请问音频用什么格式的?MP3?m4a?ogg?


答:多种,这是引擎Resource源码 http://bbs.egret.com/forum.php?mod=viewthread&tid=15003
private getTypeByUrl(url:string):string{
            var suffix:string = url.substr(url.lastIndexOf(".")+1);
            if(suffix){
                suffix = suffix.toLowerCase();
            }
            var type:string;
            switch(suffix){
                case ResourceItem.TYPE_XML:
                case ResourceItem.TYPE_JSON:
                case ResourceItem.TYPE_SHEET:
                    type = suffix;
                    break;
                case "png":
                case "jpg":
                case "gif":
                case "jpeg":
                case "bmp":
                    type = ResourceItem.TYPE_IMAGE;
                    break;
                case "fnt":
                    type = ResourceItem.TYPE_FONT;
                    break;
                case "txt":
                    type = ResourceItem.TYPE_TEXT;
                    break;
                case "mp3":
                case "ogg":
                case "mpeg":
                case "wav":
                case "m4a":
                case "mp4":
                case "aiff":
                case "wma":
                case "mid":
                    type = ResourceItem.TYPE_SOUND;
                    break;
                default:
                    type = ResourceItem.TYPE_BIN;
                    break;
            }
            return type;
        }

2. egret.ticker方法被废弃了,官网上的那个骨骼动画移动的例子中使用的egret.ticker现在不能用,有什么办法替代?

答:egret.startTick   egret.stopTick
http://bbs.egret.com/forum.php?mod=viewthread&tid=15002

3. 为什么做好的游戏放到服务器上会黑屏一段时间?我做了一个小游戏本地调试的时候运行的很好但是后来放到服务器上就在进去游戏的时候会出现一段黑屏出现和黑屏的时间在游戏进度条之前出现!这是怎么一回事啊有解决的方法没?

答:新出炉的blog,就是针对这个问题
http://city-10.com/cell/show-preloading-before-egret-play/

4.  请问tween动画能不能设次数的?例如官方的例子一个小方块在一个正方形轨道上运动的动画,我能不能设置它播放3次这样的。

答:/**
         * @language zh_CN
         * 激活一个对象,对其添加 Tween 动画
         * @param target {any} 要激活 Tween 的对象
         * @param props {any} 参数,支持loop(循环播放) onChange(变化函数) onChangeObj(变化函数作用域)
         * @param pluginData {any} 暂未实现
         * @param override {boolean} 是否移除对象之前添加的tween,默认值false
         * @version Egret 2.4
         * @platform Web,Native
         */
        public static get(target:any, props:any = null, pluginData:any = null, override:boolean = false):Tween {
            if (override) {
                Tween.removeTweens(target);
            }
            return new Tween(target, props, pluginData);
        }

get中的第二个参数中可以设置是否循环,但是没有设置次数,你可以自己计数,循环了多少次

5. 使用ios uiwebview没有声音,使用ios uiwebview没有声音  有碰到的吗?测试链接http://112.124.16.159:8080/dgz/version6/index.html?uId=20657

答:请在点击后播放,touchEvent之后,直接play,不要先加载在播放,或者带有 setTimeout 等延迟处理后在播放
lyy57  斑竹 | 2016-1-22 11:33:56

每周精华问题20151123—1127

1.当多次切换界面后,如何释放占用浏览器的图片内存?
在每个界面关闭时,不建议调用资源组的destory方法来把此界面从显示列表中移除,建议如下:
1.项目的图片存在交叉引用的情况时,如果有些图片是其他UI正在引用,这时你去dispose这些图片会,引起发一些奇怪的情况;
2.如果可以,建议是尽量是复用图片的资源,其实加来加去,UI上的图片资源占用的内存按照常规情况来说不会很多,UI有风格体系的存在,很多都可以共用,另外,多利用九宫格概念,提供加载速度,降低占用内存的大小,如果是对于特效类型的位图序列帧的话,这种就要做好及时的内存清除占用


2.如何动态创建Button皮肤?
http://edn.egret.com/cn/index.php/article/index/id/504


3.Egret编译引擎失败[新手注意
增加的库保证不冲突,例如euigui是无法同时加载的


4.TiledMap导出的tmx文件如何加入loading加载缓存?
预加载应该不支持tmx文件, tmx属于第三方库了 加那些代码很容易,在预加载complete事件中增加即可,然后在加载tmxcomplete后再执行创建游戏界面逻辑


5.egret.MainContext MainContext是游戏的核心跨平台接口,如何获取?
2.5之后把一些东西从核心库放到了game库,主要是为了精简核心库。MainContext也被放到了game库。如果你需要用到game库里面的东西,可以通过修改项目配置文件来添加。默认创建的新项目是带game库的


6.关于在DataGroup 中配合 Scroller使用的若干问题
http://edn.egret.com/cn/index.php/article/index/id/611


7.sheet里面的图片怎么设置九宫格
http://bbs.egret-labs.org/thread-1878-1-1.html
wing中把资源拖到皮肤上的时候,选中皮肤中的资源然后在设计师模式下,右侧的属性面板的“资源名”旁边 也有九宫格按钮


8.GUIEUI有什么差别


9. 微信分享可以在浏览器中被调用吗?如题,想做h5的微信QQ分享,但是不知道h5在浏览器中能不能像app中那样直接分享,有的说h5只能在微信中分享,现在有些乱,有谁能帮我解答一下?具体需求:有一个h5游戏,游戏中加入了微信分享,这个游戏在非微信浏览器中可以打开玩,我想知道这个时候可以使用微信进行分享吗?


答:可以参考微信的公共平台:
http://mp.weixin.qq.com/wiki/7/a ... f8dd9148dd613f.html, 白鹭提供的 weixinapi 第三方库只是便于在 TypeScript 中使用微信的 JS-SDK,所有这些SDK提供的功能仅限于运行于微信,不可用于非微信环境浏览器。 这应该是不行的,微信转发朋友圈的链接,不能是未经微信认证过的公众号的URL,如果你非要转发到微信,微信从用户安全性上考虑,不会做这方面的支持。仅是猜测。(http://bbs.egret.com/forum.php?mod=viewthread&tid=13436


10. 为什么我的一个简单的HelloWord , 访问的时候会出现这个错误呢 ?不知道是哪里的原因。


答:这个错误没有关系,是chrome浏览器默认加载的一个小图标icon,这个错误可以忽略,不会对你的程序造成影响
http://bbs.egret.com/forum.php?mod=viewthread&tid=14768


11. Android包热更新的建议
目前Android网络包热更新会一次性把resource目录全部下载下来。
遇到版本更新会整体全部再下一次。

不是非常环保。建议:
1)遇到版本更新的时候,能增量更新。
目前我们web版都在resource.json里的资源项的url后面加上了md5码。
像这样:
{
                "name":"theme_thm",
                "type":"bin",
                "url":"theme.thm?m=ab7b3ae50ac9004732ef30cdc201a078"
}

这样配合浏览器缓存设置可以最大化的使用本地缓存。
如果Android包也利用类似的方法,在检测到更新后,对比一下resource.json文件里的md5和本地缓存的md5可以实现增量更新。

2)是否要一开始把所有资源都下载下来,由程序决定。
看个人项目,有的时候我觉得第一次用到再加载(和web的策略一样)也挺好。



答:你把 runtime_loader.js 文件内容复制到 native_loader.js 就是和web一样了。 这个的原理是一样的,只是实现不一样,都有本地缓存的。


12. EgretVS VS中开发 添加第三方库要怎么搞?要自己手动添加所有文件夹之类的吗
答:模块化配置和第三方库的使用方法 http://edn.egret.com/cn/docs/page/172
自己找到了,VS右键项目选项中有个Egret,编译一下就好了·


13. 怎么实现类似这种拖拉上下滑的效果?
http://gala.59store.com/59day/?f ... mp;isappinstalled=0  我想不到有啥控件可以直接用的.
答:取得当前滚动位置,除以每个item高度,四舍五入,滚动回弹到某个item位置。http://bbs.egret.com/forum.php?mod=viewthread&tid=14691

14. 怎么强制类型转换?想把一个变量强转成另一个类型,语句怎么写?
as3 里面用 as DisplayObject as Sprite
ts 里面怎么写?
答:var aa:className = <className>xxxxxx 或可以直接用any  var abc = <any>x;


15.手机锁屏后,锁屏时间长的话,解锁后游戏会卡很久。请问有什么解决方案吗,强联网的?

答:使用enterframe去做动画的时候 用帧间隔派发得出的时间差去做动画
减少entertFrame的使用  
这样应该是可以提快的 减少计算量
根本的底层 可能还是需要白鹭底层框架去控制
感觉现在派发的 不太合适
as3时期 出现这种情况 是只 处理底层的计时器是正常的 上层业务的 都是业务自行去规避这个情况。


16. euiscroller滚动不到最下面去
scroller里面放了一张图片,
舞台尺寸为 480x800
scroller设置width:100%height:100%,
图片设置为480x1000
滚动不到最下面去,有没有人遇到过?

答:http://edn.egret.com/cn/docs/page/611 查看这里的教程


17. index.html写了三方的回调,然后需要更新游戏场景,如何在index.html调用到游戏里面的代码啊?总不能重新刷新整个游戏吧?

答:我是这么写的
Mainname属性设置_mainMain下有个continuebuy函数,
然后html中这么调用
egret.MainContext.instance.stage.getChildByName("_main").continuebuy();


18.egret启动后如何停止?网页版egret.web.js启动时会调用egret.runEgret();请问有没有终止的方法?

答:你这样的做法建议这样
egret是控制canvas的  所以你设置一个div  egret控制的canvas一个id   播完动画就给 隐藏掉就好。
框架是不会提供这种停止需求,因为本身的项目是需要持续的运转,只是你不需要显示 可以考虑修改显示的分辨率  让用户在页面上看不到 或者是隐藏掉egret里面的内容。 从业务手段去解决你现在遇到的问题。引擎级别上的东西  这个不需要那么复杂的



19. dragonBones骨骼动画可否动态换图。?例如获取到一个微信用户头像,然后替换骨骼动画中的一个插槽里面的图,可否替换到?

答:http://edn.egret.com/cn/docs/page/694
http://bbs.egret.com/forum.php?mod=viewthread&tid=14692



20. 获取微信头像以后,如何加到界面中?取到了后台数据,不清楚如何添加,正常的Bitmap添加不行,求指导。




21. TextureMerger编辑MovieClip,为何不能修改之前的啊?每次新增一个动画,或者修改一个动画,都要全部修改一遍,好痛苦啊。这是为啥啊?

答:一般使用TextureMerger制作的MovieClip,都是FLASH中做好的。 所以源在FLASH。如果是Sprite Sheet可以保存
http://bbs.egret.com/forum.php?mod=viewthread&tid=14572

ZXQ  初窥堂奥 | 2016-1-22 11:45:05
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部