lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 8917|回复: 4
打印 上一主题 下一主题

LSprite叠加不显示的问题

[复制链接]

31

主题

0

好友

215

积分

帐下督

Rank: 2

跳转到指定楼层
楼主
发表于 2014-7-30 17:05:45 |显示全部楼层 |倒序浏览
       

底层有个var mapLayer = new LSprite();
然后我在某个draw函数内执行如下操作后
var bgBuffer =new LSprite();
bgBuffer.graphics.drawRect(1, 省略不写);


mapLayer.addChild(bgBuffer);//奇怪的是屏幕上显示不出bgBuffer的内容,请问是怎么回事啊?一个LSprite内不能叠加很多LSprite嘛?


回复

使用道具 举报

31

主题

0

好友

215

积分

帐下督

Rank: 2

沙发
发表于 2014-7-30 17:33:21 |显示全部楼层
上面的问题,经过测试后,总结了一下是这个BUG
一个小小的例子重现BUG:

var bg1= null;
function onframe()
{
        if( bg1 == null )//生成红色的背景墙
        {
                bg1= new LSprite();
                bg1.graphics.drawRect(1, "#ff0000",
                        [0, 0, screen_width, screen_height],
                        true,"#ff0000");
        }
          //问题在这里,重复2次removeAllchid和addChild的话 就没办法显示红色的背景墙
        mapLayer.removeAllChild();
        mapLayer.addChild(bg1);

        mapLayer.removeAllChild();
        mapLayer.addChild(bg1);

}
回复

使用道具 举报

31

主题

0

好友

215

积分

帐下督

Rank: 2

板凳
发表于 2014-7-30 17:34:02 |显示全部楼层
ccalm 发表于 2014-7-30 17:33
上面的问题,经过测试后,总结了一下是这个BUG
一个小小的例子重现BUG:

mapLayer.removeAllChild();
mapLayer.addChild(bg1);

这2行代码只调用一次就没问题,2次就显示不了了
回复

使用道具 举报

31

主题

0

好友

215

积分

帐下督

Rank: 2

地板
发表于 2014-7-30 17:54:33 |显示全部楼层
貌似是 LGlobal.destroy ; 造成的,由于一remove就清空了资源,请问有什么办法可以解决这个问题?一个对象的生命周期如何让我们手动来控制?另外一个LSprite在加入A舞台的时候,如果已经在B舞台存在就会移除,那么一个对象如何在2个舞台共同显示?
回复

使用道具 举报

31

主题

0

好友

215

积分

帐下督

Rank: 2

5#
发表于 2014-7-30 19:21:32 |显示全部楼层
lufy 发表于 2014-7-30 18:47
对象一旦被移除的话,是将对象上所有的东西都彻底清空的
如果你要保留原有对象中的内容的话,你需要动态改 ...

这样做的话只保证了本次removeAllChild不会释放对象的资源对吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-20 05:58 , Processed in 0.044706 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部