使用filter滤镜导致界面布局混乱问题

问题描述:

公司有部分产品里面有使用filter滤镜(比如将一个精灵置灰),导致场景内的布局混乱,临床表现为:精灵位置发生大幅度偏移,或放大,或变小等。这是一个非必现的问题,有时正常,有时不正常。这种问题是使用滤镜效果引起的,具体原因不明。所以只能走曲线救国的办法解决问题。

首先找到问题代码:

添加效果代码大概长这样:

local spr= D.img("xxx/xxx.png",{ class = CCFilteredSpriteWithOne }):to(parent):p(x, y)
-- 滤镜
local filters = filter.newFilter("GRAY", {})
spr:setFilter(filters)

local spr= U.loadSpriteFilter({
    imgName = xxx/xxx.png,
    filters = "GRAY",
}):to(parent):p(x, y)

恢复正常显示的代码:

local filters = filter.newFilter("BRIGHTNESS", {})
spr:setFilter(filters)
目前使用的解决方法是用 CCGraySprite 来代替用filter实现的精灵置灰效果(目前只发现使用灰色效果),原理是获取精灵的纹理然后创建一个和精灵一模一样的灰色精灵覆盖在上面,方法如下:

1.找到添加滤镜处的代码用下面的方法替换:

local spr= D.img("xxx/xxx.png"):to(parent):p(x, y)
-- 创建灰色精灵覆盖在 spr 上面
local gray = CCGraySprite:createWithTexture(spr:getTexture(), spr:getTextureRect())
gray = CCNodeExtend.extend(gray)
--添加到精灵spr同一位置就行了
gray:to(parent):p(x, y)  
-- 可以把灰色精灵绑定为spr的一个属性方便移除对应精灵的灰色效果
spr.gray = gray

2.恢复显示的代码替换为以下方法即可:
spr.gray:remove()


  • author :lan

  • date :2016-06-14
    更多

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,194评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,035评论 25 709
  • 风筝需要风 也需要线 一生太短 不要等千万 晚安要说两遍 一遍遂我愿 一遍入你帘
    安静的复苏918阅读 1,020评论 0 1
  • 店铺开门了, 大街热闹了, 车站疯狂了, 春节安静了, 一年开始了, 我们上班了。
    橘子洲的鱼阅读 4,524评论 0 0
  • 我哭的时候样子很丑,根本不是自己想象中的梨花带雨,娇柔无力,我看了一下镜子,决定以后再不哭了。 因为...
    瓦全阅读 4,849评论 2 4