quick-cocos2dx之特效按钮——BubbleButton

来源:互联网 发布:如何进入it行业 知乎 编辑:程序博客网 时间:2024/05/21 08:56
local BubbleButton = {}-- create bubble buttonfunction BubbleButton.new(params)    local listener = params.listener    local button -- pre-reference    params.listener = function(tag)        if params.prepare then            params.prepare()        end        local function zoom1(offset, time, onComplete)            local x, y = button:getPosition()            local size = button:getContentSize()            size.width = 200            size.height = 200            local scaleX = button:getScaleX() * (size.width + offset) / size.width            local scaleY = button:getScaleY() * (size.height - offset) / size.height            transition.moveTo(button, {y = y - offset, time = time})            transition.scaleTo(button, {                scaleX     = scaleX,                scaleY     = scaleY,                time       = time,                onComplete = onComplete,            })        end        local function zoom2(offset, time, onComplete)            local x, y = button:getPosition()            local size = button:getContentSize()            size.width = 200            size.height = 200            transition.moveTo(button, {y = y + offset, time = time / 2})            transition.scaleTo(button, {                scaleX     = 1.0,                scaleY     = 1.0,                time       = time,                onComplete = onComplete,            })        end        --按钮执行效果期间设置为不可点击        button:setButtonEnabled(false)        zoom1(40, 0.08, function()            zoom2(40, 0.09, function()                zoom1(20, 0.10, function()                    zoom2(20, 0.11, function()                        --按钮执行效果完成后设置为可以点击                        button:setButtonEnabled(true)                        listener(tag)                    end)                end)            end)        end)    end    button =  cc.ui.UIPushButton.new({normal = params.image})    button:onButtonClicked(function(tag)        params.listener(tag)    end)    return buttonendreturn BubbleButton

使用方法:

self.startButton = BubbleButton.new({            image = "#MenuSceneStartButton.png",            sound = GAME_SFX.tapButton,            prepare = function()                audio.playSound(GAME_SFX.tapButton)                self.startButton:setButtonEnabled(false)            end,            listener = function()                --do something            end,        })        :align(display.CENTER, display.right - 150, display.bottom + 300)        :addTo(self)

这里写图片描述

0 0
原创粉丝点击