条条大路通罗马,其实实现的方法有多种,下面我就写2种吧。。
第1种:通过ClippingNode画一个遮罩即可完成,带遮罩内部显示,外部隐藏.
function updateRollTime(self)
self.richTip:setPositionX(self.richTip:getPositionX() - 3)
if self.richTip:getPositionX() < -(self.richTip:getRealWidth() + self.bgSize.width/2 + 30) then --1条滚动完了
table.remove(self.showTipTb, 1) --移除第1条
if #self.showTipTb == 0 then
self:delTimer(self.rollTimer)
self.rollTimer = nil
self.rollGroup:setVisible(false)
else
self:showRollTip(self.showTipTb[1])
end
end
end
function addRollTip(self, msg)
table.insert(self.showTipTb, msg)
if not self.rollTimer then
self:showRollTip(self.showTipTb[1])
end
end
function showRollTip(self, tip)
self.showTipNum = self.showTipNum + 1
self.rollGroup:setVisible(true)
self.richTip:setString(tip)
self.richTip:setVisible(true)
self.richTip:setPositionX(self.bgSize.width - 70)
if not self.rollTimer then
self.rollTimer = self:addTimer(updateRollTime, 0.01, -1)
end
end
--用法:Master:dispatchEvent(Event.AddRollTip, str)
第2种:通过scrollView实现。在scrollView里面添加一个text即可。
self._scrollView = self:getWidget("ScrollView_2")
self._scrollText = self._scrollView:getChildByName("Text_3")
self._scrollText:setText("我是测试公告我是测试公告")
local posX,posY = self._scrollText:getPosition()
local function callback()
self._scrollText:setPosition(posX,posY)
self._scrollText:moveTo({x=-200,y=self._scrollText:getPositionY(),time=10,onComplete=callback})
end
self._scrollText:moveTo({x=-200,y=self._scrollText:getPositionY(),time=10,onComplete=callback})