local size = cc.Director:getInstance():getWinSize()
local scheduler = cc.Director:getInstance():getScheduler()
local kTagTileMap = 1
local kTagSpriteManager = 1
local kTagAnimation1 = 1
local kTagBitmapAtlas1 = 1
local kTagBitmapAtlas2 = 2
local kTagBitmapAtlas3 = 3
local kTagSprite1 = 0
local kTagSprite2 = 1
local kTagSprite3 = 2
local kTagSprite4 = 3
local kTagSprite5 = 4
local kTagSprite6 = 5
local kTagSprite7 = 6
local kTagSprite8 = 7
--------------------------------------------------------------------
--
-- LabelAtlasTest
--
--------------------------------------------------------------------
local LabelAtlasTest = {}
LabelAtlasTest.layer = nil
LabelAtlasTest.__index = LabelAtlasTest
local m_time = 0
function LabelAtlasTest.step(dt)
m_time = m_time + dt
local string = string.format("%2.2f Test", m_time)
local label1_origin = LabelAtlasTest.layer:getChildByTag(kTagSprite1)
local label1 = label1_origin
label1:setString(string) --
local label2_origin = LabelAtlasTest.layer:getChildByTag(kTagSprite2)
local label2 = label2_origin
string = string.format("%d", m_time)
label2:setString(string)
end
function LabelAtlasTest.onNodeEvent(tag)
if tag == "exit" then
LabelAtlasTest.layer:unscheduleUpdate()
end
end
function LabelAtlasTest.create()
m_time = 0
local layer = cc.Layer:create()
Helper.initWithLayer(layer)
LabelAtlasTest.layer = layer
local label1 = cc.LabelAtlas:_create("123 Test", "fonts/tuffy_bold_italic-charmap.plist")
layer:addChild(label1, 0, kTagSprite1)
label1:setPosition( cc.p(10,100) )
label1:setOpacity( 200 )--透明度
local label2 = cc.LabelAtlas:_create("0123456789", "fonts/tuffy_bold_italic-charmap.plist")
layer:addChild(label2, 0, kTagSprite2)
label2:setPosition( cc.p(10,200) )
label2:setOpacity( 32 )
layer:scheduleUpdateWithPriorityLua(LabelAtlasTest.step, 0)
Helper.titleLabel:setString("LabelAtlas")
Helper.subtitleLabel:setString("Updating label should be fast")
layer:registerScriptHandler(LabelAtlasTest.onNodeEvent)
return layer
end
--------------------------------------------------------------------
--
-- LabelAtlasColorTest
--
--------------------------------------------------------------------
local LabelAtlasColorTest = {}
LabelAtlasColorTest.layer = nil
LabelAtlasColorTest.__index = LabelAtlasColorTest
local m_time = 0
function LabelAtlasColorTest.step(dt)--dt为1/60 1帧的时间
m_time = m_time + dt
local string = string.format("%2.2f Test", m_time)--字符串拼装处理%2.2 C语言中整数部分占两位 如果1 就显示1 但是占两位 %02则会显示前面的0
local label1_origin = LabelAtlasColorTest.layer:getChildByTag(kTagSprite1)
local label1 = label1_origin
label1:setString(string)
local label2_origin = LabelAtlasColorTest.layer:getChildByTag(kTagSprite2)
local label2 = label2_origin
string = string.format("%d", m_time)
label2:setString(string)--改变label中的字体
end
function LabelAtlasColorTest.actionFinishCallback()
cclog("Action finished")
end
function LabelAtlasColorTest.onNodeEvent(tag)--事件注册函数
if tag == "exit" then
LabelAtlasColorTest.layer:unscheduleUpdate()
end
end
function LabelAtlasColorTest.create()
m_time = 0
local layer = cc.Layer:create()
Helper.initWithLayer(layer)
LabelAtlasColorTest.layer = layer
local label1 = cc.LabelAtlas:_create("123 Test", "fonts/tuffy_bold_italic-charmap.plist")
layer:addChild(label1, 0, kTagSprite1)
label1:setPosition( cc.p(10,100) )
label1:setOpacity( 200 )
local label2 = cc.LabelAtlas:_create("0123456789", "fonts/tuffy_bold_italic-charmap.plist")
layer:addChild(label2, 0, kTagSprite2)
label2:setPosition( cc.p(10,200) )
label2:setColor(cc.c3b(255, 0, 0))
local fade = cc.FadeOut:create(1.0)--颜色消失
local fade_in = fade:reverse()
local cb = cc.CallFunc:create(LabelAtlasColorTest.actionFinishCallback)
local seq = cc.Sequence:create(fade, fade_in, cb)
local repeatAction = cc.RepeatForever:create( seq )
label2:runAction( repeatAction )
layer:registerScriptHandler(LabelAtlasColorTest.onNodeEvent)
layer:scheduleUpdateWithPriorityLua(LabelAtlasColorTest.step, 0)
Helper.titleLabel:setString("LabelAtlas")
Helper.subtitleLabel:setString("Opacity + Color should work at the same time")
return layer
end
--------------------------------------------------------------------
--
-- Atlas3
--
-- Use any of these editors to generate BMFonts:
-- http://glyphdesigner.71squared.com/ (Commercial, Mac OS X)
-- http://www.n4te.com/hiero/hiero.jnlp (Free, Java)
-- http://slick.cokeandcode.com/demos/hiero.jnlp (Free, Java)
-- http://www.angelcode.com/products/bmfont/ (Free, Windows only)
--
--------------------------------------------------------------------
local Atlas3 = {}
Atlas3.layer = nil
Atlas3.__index = Atlas3
function Atlas3.onNodeEvent(tag)
if tag == "exit" then
Atlas3.layer:unscheduleUpdate()
end
end
function Atlas3.create()
cclog("Atlas3.create")
local layer = cc.Layer:create()
Helper.initWithLayer(layer)
Atlas3.layer = layer
m_time = 0
local col = cc.LayerColor:create( cc.c4b(128,128,128,255) )--创建带颜色的图层
layer:addChild(col, -10)--图层添加带颜色的
local label1 = cc.LabelBMFont:create("Test", "fonts/bitmapFontTest2.fnt")
-- testing anchors
label1:setAnchorPoint( cc.p(0,0) )--左下角
layer:addChild(label1, 0, kTagBitmapAtlas1)
local fade = cc.FadeOut:create(1.0)
local fade_in = fade:reverse()
local seq = cc.Sequence:create(fade,fade_in)
local repeatAction = cc.RepeatForever:create(seq)
label1:runAction(repeatAction)
--VERY IMPORTANT
--color and opacity work OK because bitmapFontAltas2 loads a BMP image (not a PNG image)
--If you want to use both opacity and color, it is recommended to use NON premultiplied images like BMP images
--Of course, you can also tell XCode not to compress PNG images, but I think it doesn't work as expected
local label2 = cc.LabelBMFont:create("Test", "fonts/bitmapFontTest2.fnt")
-- testing anchors
label2:setAnchorPoint( cc.p(0.5, 0.5) )
label2:setColor(cc.c3b(255, 0, 0 ))--BMP可以set颜色,PNG会出问题
layer:addChild(label2, 0, kTagBitmapAtlas2)
label2:runAction( repeatAction:clone())
local label3 = cc.LabelBMFont:create("Test", "fonts/bitmapFontTest2.fnt")
-- testing anchors
label3:setAnchorPoint( cc.p(1,1) )--右上角
layer:addChild(label3, 0, kTagBitmapAtlas3)
label1:setPosition( VisibleRect:leftBottom() )
label2:setPosition( VisibleRect:center() )
label3:setPosition( VisibleRect:rightTop() )
layer:registerScriptHandler(Atlas3.onNodeEvent)
layer:scheduleUpdateWithPriorityLua(Atlas3.step, 0)
Helper.titleLabel:setString( "LabelBMFont" )
Helper.subtitleLabel:setString( "Testing alignment. Testing opacity + tint" )
return layer
end
function Atlas3.step(dt)
m_time = m_time + dt
local string = string.format("%2.2f Test j", m_time)
local label1 = Atlas3.layer:getChildByTag(kTagBitmapAtlas1)
label1:setString(string)
local label2 = Atlas3.layer:getChildByTag(kTagBitmapAtlas2)
label2:setString(string)
local label3 = Atlas3.layer:getChildByTag(kTagBitmapAtlas3)
label3:setString(string)
end
--------------------------------------------------------------------
--
-- Atlas4
--
-- Use any of these editors to generate BMFonts:
-- http:--glyphdesigner.71squared.com/ (Commercial, Mac OS X)
-- http:--www.n4te.com/hiero/hiero.jnlp (Free, Java)
-- http:--slick.cokeandcode.com/demos/hiero.jnlp (Free, Java)
-- http:--www.angelcode.com/products/bmfont/ (Free, Windows only)
--
--------------------------------------------------------------------
local Atlas4 = {}
Atlas4.layer = nil
Atlas4.__index = Atlas4
Atlas4.stepEntry = nil
function Atlas4.onNodeEvent(tag)
if tag == "enter" then--进入这一画面时执行定时器
Atlas4.stepEntry = scheduler:scheduleScriptFunc(Atlas4.step, 0.1, false)
elseif tag == "exit" then
scheduler:unscheduleScriptEntry(Atlas4.stepEntry)--退出时销毁定时器
end
end
function Atlas4.create()
cclog("Atlas4.create")
m_time = 0
local layer = cc.Layer:create()
Helper.initWithLayer(layer)
Atlas4.layer = layer
-- Upper Label
local label = cc.LabelBMFont:create("Bitmap Font Atlas", "fonts/bitmapFontTest.fnt")
layer:addChild(label)
local s = cc.Director:getInstance():getWinSize()
label:setPosition( cc.p(s.width/2, s.height/2) )
label:setAnchorPoint( cc.p(0.5, 0.5) )
local BChar = label:getChildByTag(0)--LabelBMFont的特性可以通过字母的位置get出来
local FChar = label:getChildByTag(7)
local AChar = label:getChildByTag(12)
local rotate = cc.RotateBy:create(2, 360)
local rot_4ever = cc.RepeatForever:create(rotate)
local scale = cc.ScaleBy:create(2, 1.5)--过程时间,放大倍数
local scale_back = scale:reverse()
local scale_seq = cc.Sequence:create(scale, scale_back)
local scale_4ever = cc.RepeatForever:create(scale_seq)
local jump = cc.JumpBy:create(0.5, cc.p(0, 0), 60, 1)
local jump_4ever = cc.RepeatForever:create(jump)
local fade_out = cc.FadeOut:create(1)
local fade_in = cc.FadeIn:create(1)
local seq = cc.Sequence:create(fade_out, fade_in)
local fade_4ever = cc.RepeatForever:create(seq)
BChar:runAction(rot_4ever)--两个动画同时执行
BChar:runAction(scale_4ever)--两个动画同时执行
FChar:runAction(jump_4ever)
AChar:runAction(fade_4ever)
-- Bottom Label
local label2 = cc.LabelBMFont:create
lua 之 label
最新推荐文章于 2023-06-13 00:03:23 发布
这篇博客介绍了使用Lua编程时如何创建和操作Label Atlas及BitmapFont Atlas。通过示例展示了如何更新Label内容、颜色变化以及位图字体的对齐和动画效果。文章涵盖了多个场景,如Label Atlas的步进更新、颜色测试、位图字体的多行对齐等。
摘要由CSDN通过智能技术生成