cocos2dx lua 上浮提示框

这是之前游戏里面用到的,lua写的。

function PromptBox_FloatAction(promtBoxString, pos)
-- body


    l_PromptBoxindex = l_PromptBoxindex + 1
    l_PromptBoxLabTag = l_PromptBoxLabTag + 1


    local promtboxstringlab = createPromptBoxFrameBg(promtBoxString, pos)--Label:create()
    -- GetGlobalEntity():GetScheduler():UnRegisterScript("MarqueeMove")
    -- promtboxstringlab:setText(promtBoxString)
    -- promtboxstringlab:setFontSize(24)
    if l_PromptBoxindex >= 4 then
       table.remove(l_PromptBoxLabTagtab,1)
       if l_PromptBoxindex % 3 == 0 then
         g_PromptBoxLabLayout:removeChildByTag(3,true)
       else
         local tempIndex = l_PromptBoxindex % 3
         g_PromptBoxLabLayout:removeChildByTag(tempIndex,true)
         l_PromptBoxLabTag = tempIndex
       end    
    end
    table.insert(l_PromptBoxLabTagtab,l_PromptBoxLabTag)
if (pos == nil)then
promtboxstringlab:setPosition(ccp(0,-l_PromptBoxindex * 45))
else
promtboxstringlab:setPosition(ccp(pos.x,pos.y-l_PromptBoxindex * 45))
end
    
    Log("xxxxxxxxxxxxx....========"..l_PromptBoxLabTag)
    g_PromptBoxLabLayout:addChild(promtboxstringlab,l_PromptBoxLabTag,l_PromptBoxLabTag)
    local promptboxX,promptboxY = g_PromptBoxLabLayout:getPosition()
    local FloatAction = CCMoveBy:create(0.5, ccp(0,45))
    g_PromptBoxLabLayout:runAction(FloatAction)
    GetGlobalEntity():GetScheduler():RegisterInfiniteScript( "PromptBox_FadeOutAction", 1.5 * 1000)
end

因为 策划要求 上浮最多3个框,然后后面可以继续来数据,接着上浮,一个顶一个。

由于自己是初学者,所以想到的并不多,也不深,大概思路就是 建立一个table  这个table就是存储数据的,不管来多少数据,我们先存着。数据放在里面,我们不管,这里可以写一个定时器,执行完上浮动作之后,就检测table中数据是否为空。

local l_PromptBoxLabTagtab = {} 


local l_PromptBoxindex = 0 


local l_PromptBoxLabTag = 0 


g_PromptBoxLabLayout = nil 


function PromptBox_FadeOutAction()
-- body
if g_PromptBoxLabLayout ~= nil then
local offsetTime = 0.5
for i = 1,#l_PromptBoxLabTagtab do
local actionArry = CCArray:create()
local delayTime = CCDelayTime:create(offsetTime * (i - 1))
actionArry:addObject(delayTime)
local fadeoutAction = CCFadeOut:create(0.25)
actionArry:addObject(fadeoutAction)
if i == #l_PromptBoxLabTagtab then
local promptbox_faction = CCCallFunc:create(PrompBox_RemoveAll)
actionArry:addObject(promptbox_faction)
end
       local seqAction = CCSequence:create(actionArry)
       g_PromptBoxLabLayout:getChildByTag(l_PromptBoxLabTagtab[i]):runAction(seqAction)
end
    end


    l_PromptBoxindex = 0
l_PromptBoxLabTag = 0
l_PromptBoxLabTagtab = {}
g_PromptBoxLabLayout = nil 
end
end


思路就是这样 ,里面的代码很乱     

你可能感兴趣的:(cocos2dx学习之路)