这是之前游戏里面用到的,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
思路就是这样 ,里面的代码很乱
原文链接:https://www.f2er.com/cocos2dx/346207.html