关闭

可操作提示设计思路

179人阅读 评论(0) 收藏 举报
分类:
游戏临近内测,开始做各种可操作提示(图标加红点、光圈)。略一思考便感觉是个庞大的工程。便想着尽量不影响原来基础上增加此功能。二话不说先上代码
local TipHelper = class("TipHelper")
function TipHelper:ctor()
    self.tip_list = {}
    self.tip_visible = {
        [1] = 0,              --主界面装备图标
        [101] = 0,            --装备升级标签页    *100+i
        [102] = 0,            --装备进阶标签页
        [10101] = 0,          --升级界面第一件装备图标
        [10202] = 0,          --紧接界面第二件装备图标
    }
end
--添加提示,加到parent上,但列表中保留对象
function TipHelper:addTips(parent, tag)
    local tip_image = cc.Sprite:create(filename)
    parent:addChild(tip_image)
    self.tip_list[tag] = tip_image
    local flag = self.tip_visible[tag]
    if flag then
        tip_image:setVisible(false)
    end
end
--设置tag状态
function TipHelper:setTipStatus(tag, flag)
    local old_status = self.tip_visible[tag]
    local new_status = old_status
    if flag then
        new_status = old_status + 1
    else
        new_status = old_status - 1
    end
    self.tip_visible[tag] = new_status
    local tip_image = self.tip_list[tag]
    if not tolua.isnull(tip_image) then            --设置红点显示状态
        local flag = (new_status > 0)
        tip_image:setVisible(flag)
    end
    local parent_tag = math.floor(tag / 100)        --更新父节点状态
    if parent_tag == 0 then
        return
    end
    if old_status == 0 then    
        self:setTipStatus(parent_tag, true)
    elseif new_status == 0 then
        self:setTipStatus(parent_tag, false)
    end
end
function TipHelper:checkTipStatus(tag)
    if tag == 10101 then
        self:checkEquipUpgrade()
    end
end
function TipHelper:checkEquipUpgrade()
    local new_status = false
    local old_status = (self.tip_visible[10101] > 0)
    if old_status ~= new_status then
        self:setTipStatus(10101, new_status)
    end
end
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4261次
    • 积分:112
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类