这是之前游戏里面用到的,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
思路就是这样 ,里面的代码很乱 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|