lua 之newlabel
来源:互联网 发布:麦当劳改名金拱门知乎 编辑:程序博客网 时间:2024/06/17 07:57
local size = cc.Director:getInstance():getWinSize()local scheduler = cc.Director:getInstance():getScheduler()local kTagTileMap = 1local kTagSpriteManager = 1local kTagAnimation1 = 1local kTagBitmapAtlas1 = 1local kTagBitmapAtlas2 = 2local kTagBitmapAtlas3 = 3local kTagSprite1 = 0local kTagSprite2 = 1local kTagSprite3 = 2local kTagSprite4 = 3local kTagSprite5 = 4local kTagSprite6 = 5local kTagSprite7 = 6local kTagSprite8 = 7------------------------------------------------------------------------ LabelFNTColorAndOpacity----------------------------------------------------------------------local LabelFNTColorAndOpacity = {}LabelFNTColorAndOpacity.layer = nilLabelFNTColorAndOpacity.__index = LabelFNTColorAndOpacityfunction LabelFNTColorAndOpacity.onNodeEvent(tag) if tag == "exit" then LabelFNTColorAndOpacity.layer:unscheduleUpdate()--layer:scheduleUpdateWithPriorityLua(LabelFNTColorAndOpacity.step, 0)成对使用 endendfunction LabelFNTColorAndOpacity.create() cclog("LabelFNTColorAndOpacity.create") local layer = cc.Layer:create() Helper.initWithLayer(layer) LabelFNTColorAndOpacity.layer = layer m_time = 0 local col = cc.LayerColor:create( cc.c4b(128,128,128,255) ) layer:addChild(col, -10) local label1 = cc.Label:createWithBMFont("fonts/bitmapFontTest2.fnt", "Test") -- 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) local label2 = cc.Label:createWithBMFont("fonts/bitmapFontTest2.fnt", "Test") -- testing anchors label2:setAnchorPoint( cc.p(0.5, 0.5) ) label2:setColor(cc.c3b(255, 0, 0 )) layer:addChild(label2, 0, kTagBitmapAtlas2) label2:runAction(repeatAction:clone()) local label3 = cc.Label:createWithBMFont("fonts/bitmapFontTest2.fnt", "Test") -- 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(LabelFNTColorAndOpacity.onNodeEvent) layer:scheduleUpdateWithPriorityLua(LabelFNTColorAndOpacity.step, 0) Helper.titleLabel:setString( "New Label + .FNT file" ) Helper.subtitleLabel:setString( "Testing opacity + tint" ) return layerendfunction LabelFNTColorAndOpacity.step(dt) m_time = m_time + dt local string = string.format("%2.2f Test j", m_time) local label1 = LabelFNTColorAndOpacity.layer:getChildByTag(kTagBitmapAtlas1) label1:setString(string) local label2 = LabelFNTColorAndOpacity.layer:getChildByTag(kTagBitmapAtlas2) label2:setString(string) local label3 = LabelFNTColorAndOpacity.layer:getChildByTag(kTagBitmapAtlas3) label3:setString(string)end------------------------------------------------------------------------ LabelFNTSpriteActions----------------------------------------------------------------------local LabelFNTSpriteActions = {}LabelFNTSpriteActions.layer = nilLabelFNTSpriteActions.__index = LabelFNTSpriteActionsLabelFNTSpriteActions.stepEntry = nilfunction LabelFNTSpriteActions.onNodeEvent(tag) if tag == "enter" then LabelFNTSpriteActions.stepEntry = scheduler:scheduleScriptFunc(LabelFNTSpriteActions.step, 0.1, false)--scheduler:unscheduleScriptEntry(LabelFNTSpriteActions.stepEntry)配合使用 elseif tag == "exit" then scheduler:unscheduleScriptEntry(LabelFNTSpriteActions.stepEntry)--Schedule与ScheduleUpdate()的区别Schedule与ScheduleUpdate()函数相同,但是ScheduleUpdate()默认每一帧都会调用update()函数,而schedule则可以自定义调用更新函数的时间间隔。 endendfunction LabelFNTSpriteActions.create() cclog("LabelFNTSpriteActions.create") m_time = 0 local layer = cc.Layer:create() Helper.initWithLayer(layer) LabelFNTSpriteActions.layer = layer -- Upper Label local label = cc.Label:createWithBMFont("fonts/bitmapFontTest.fnt", "Bitmap Font Atlas") 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:getLetter(0) local FChar = label:getLetter(7) local AChar = label:getLetter(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.Label:createWithBMFont("fonts/bitmapFontTest.fnt", "00.0") layer:addChild(label2, 0, kTagBitmapAtlas2) label2:setPosition( cc.p(s.width/2.0, 80) ) local lastChar = label2:getLetter(3)--得到第三个字符 lastChar:runAction(rot_4ever:clone()) layer:registerScriptHandler(LabelFNTSpriteActions.onNodeEvent) Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString( "Using fonts as Sprite objects. Some characters should rotate.") return layerendfunction LabelFNTSpriteActions.draw() local s = cc.Director:getInstance():getWinSize() cc.DrawPrimitives.drawLine( cc.p(0, s.height/2), cc.p(s.width, s.height/2) ) cc.DrawPrimitives.drawLine( cc.p(s.width/2, 0), cc.p(s.width/2, s.height) )endfunction LabelFNTSpriteActions.step(dt) m_time = m_time + dt local string = string.format("%04.1f", m_time) local label1 = LabelFNTSpriteActions.layer:getChildByTag(kTagBitmapAtlas2) label1:setString(string)end------------------------------------------------------------------------ LabelFNTPadding----------------------------------------------------------------------local LabelFNTPadding = {}LabelFNTPadding.layer = nilfunction LabelFNTPadding:create() local layer = cc.Layer:create() Helper.initWithLayer(layer) LabelFNTPadding.layer = layer local label = cc.Label:createWithBMFont("fonts/bitmapFontTest4.fnt", "abcdefg") 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) ) Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString("Testing padding") return layerend------------------------------------------------------------------------ LabelFNTOffset----------------------------------------------------------------------local LabelFNTOffset = {}LabelFNTOffset.layer = nilfunction LabelFNTOffset:create() cclog("LabelFNTOffset:create") local layer = cc.Layer:create() Helper.initWithLayer(layer) LabelFNTOffset.layer = layer local s = cc.Director:getInstance():getWinSize() local label = cc.Label:createWithBMFont("fonts/bitmapFontTest5.fnt", "FaFeFiFoFu") layer:addChild(label) label:setPosition( cc.p(s.width/2, s.height/2+50) ) label:setAnchorPoint( cc.p(0.5, 0.5) ) label = cc.Label:createWithBMFont("fonts/bitmapFontTest5.fnt", "fafefifofu") layer:addChild(label) label:setPosition( cc.p(s.width/2, s.height/2) ) label:setAnchorPoint( cc.p(0.5, 0.5) ) label = cc.Label:createWithBMFont("fonts/bitmapFontTest5.fnt", "aeiou") layer:addChild(label) label:setPosition( cc.p(s.width/2, s.height/2-50) ) label:setAnchorPoint( cc.p(0.5, 0.5) ) Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString("Rendering should be OK. Testing offset") return layerend------------------------------------------------------------------------ LabelFNTColor----------------------------------------------------------------------local LabelFNTColor = { layer= nil }function LabelFNTColor:create() local layer = cc.Layer:create() LabelFNTColor.layer = layer Helper.initWithLayer(layer) local s = cc.Director:getInstance():getWinSize() local label = cc.Label:createWithBMFont("fonts/bitmapFontTest5.fnt", "Blue") label:setColor( cc.c3b(0, 0, 255 )) layer:addChild(label) label:setPosition( cc.p(s.width/2, s.height/4) ) label:setAnchorPoint( cc.p(0.5, 0.5) ) label = cc.Label:createWithBMFont("fonts/bitmapFontTest5.fnt", "Red") layer:addChild(label) label:setPosition( cc.p(s.width/2, 2*s.height/4) ) label:setAnchorPoint( cc.p(0.5, 0.5) ) label:setColor( cc.c3b(255, 0, 0) ) label = cc.Label:createWithBMFont("fonts/bitmapFontTest5.fnt", "Green") layer:addChild(label) label:setPosition( cc.p(s.width/2, 3*s.height/4) ) label:setAnchorPoint( cc.p(0.5, 0.5) ) label:setColor( cc.c3b(0, 255, 0 )) label:setString("Green") Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString("Testing color") return layerend------------------------------------------------------------------------ LabelTTFColor----------------------------------------------------------------------local LabelTTFColor = { layer= nil }function LabelTTFColor:create() local layer = cc.Layer:create() LabelTTFColor.layer = layer Helper.initWithLayer(layer) local s = cc.Director:getInstance():getWinSize() local ttfConfig = {} ttfConfig.fontFilePath="fonts/arial.ttf" ttfConfig.fontSize=18 local label1 = cc.Label:createWithTTF(ttfConfig,"Green", cc.VERTICAL_TEXT_ALIGNMENT_CENTER, s.width)--字体路径、字、布局、宽度 label1:setTextColor( cc.c4b(0, 255, 0, 255)) layer:addChild(label1) label1:setPosition( cc.p(s.width/2, s.height/5 * 1.5) ) label1:setAnchorPoint( cc.p(0.5, 0.5) ) local label2 = cc.Label:createWithTTF(ttfConfig, "Red", cc.VERTICAL_TEXT_ALIGNMENT_CENTER, s.width) layer:addChild(label2) label2:setPosition( cc.p(s.width/2, s.height/5 * 2.0) ) label2:setAnchorPoint( cc.p(0.5, 0.5) ) label2:setTextColor( cc.c4b(255, 0, 0, 255) ) local label3 = cc.Label:createWithTTF(ttfConfig, "Blue", cc.VERTICAL_TEXT_ALIGNMENT_CENTER, s.width) layer:addChild(label3) label3:setPosition( cc.p(s.width/2, s.height/5 * 2.5) ) label3:setAnchorPoint( cc.p(0.5, 0.5) ) label3:setTextColor( cc.c4b(0, 0, 255, 255)) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Uses the new Label with TTF. Testing Color") return layerend------------------------------------------------------------------------ LabelFNTHundredLabels----------------------------------------------------------------------local LabelFNTHundredLabels = { layer = nil }function LabelFNTHundredLabels:create() local layer = cc.Layer:create() Helper.initWithLayer(layer) LabelFNTHundredLabels.layer = layer math.randomseed(os.time()) -- Upper Label local i = 0 for i = 0, 100, 1 do local str = string.format("-%d-", i) local label = cc.Label:createWithBMFont("fonts/bitmapFontTest.fnt", str) layer:addChild(label) local s = cc.Director:getInstance():getWinSize() local p = cc.p( math.random() * s.width, math.random() * s.height) label:setPosition( p ) label:setAnchorPoint(cc.p(0.5, 0.5)) end Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString("Creating several Labels using the same FNT file should be fast") return layerend------------------------------------------------------------------------ LabelFNTMultiLine------------------------------------------------------------------------local LabelFNTMultiLine = {}function LabelFNTMultiLine:create() local layer = cc.Layer:create() Helper.initWithLayer(layer) local s = nil -- Left local label1 = cc.Label:createWithBMFont("fonts/bitmapFontTest3.fnt", " Multi line\nLeft") label1:setAnchorPoint(cc.p(0,0)) layer:addChild(label1, 0, kTagBitmapAtlas1) s = label1:getContentSize() cclog("content size: %.2fx%.2f", s.width, s.height) -- Center local label2 = cc.Label:createWithBMFont("fonts/bitmapFontTest3.fnt", "Multi line\nCenter") label2:setAnchorPoint(cc.p(0.5, 0.5)) layer:addChild(label2, 0, kTagBitmapAtlas2) s= label2:getContentSize() cclog("content size: %.2fx%.2f", s.width, s.height) -- right local label3 = cc.Label:createWithBMFont("fonts/bitmapFontTest3.fnt", "Multi line\nRight\nThree lines Three") label3:setAnchorPoint(cc.p(1, 1)) layer:addChild(label3, 0, kTagBitmapAtlas3) s = label3:getContentSize() cclog("content size: %.2fx%.2f", s.width, s.height) label1:setPosition(VisibleRect:leftBottom()) label2:setPosition(VisibleRect:center()) label3:setPosition(VisibleRect:rightTop()) Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString("Multiline + anchor point") return layerend------------------------------------------------------------------------ LabelFNTandTTFEmpty----------------------------------------------------------------------local LabelFNTandTTFEmpty = {}LabelFNTandTTFEmpty.layer = nilLabelFNTandTTFEmpty.setEmpty = falseLabelFNTandTTFEmpty.updateEntry = nilfunction LabelFNTandTTFEmpty.onNodeEvent(tag) if tag == "enter" then LabelFNTandTTFEmpty.updateEntry = scheduler:scheduleScriptFunc(LabelFNTandTTFEmpty.updateStrings, 1.0, false)--函数只有一个入参 elseif tag == "exit" then scheduler:unscheduleScriptEntry(LabelFNTandTTFEmpty.updateEntry) endendfunction LabelFNTandTTFEmpty.create() cclog("LabelFNTandTTFEmpty.create") local layer = cc.Layer:create() LabelFNTandTTFEmpty.layer = layer Helper.initWithLayer(layer) local s = cc.Director:getInstance():getWinSize() -- cc.LabelBMFont local label1 = cc.Label:createWithBMFont("fonts/bitmapFontTest3.fnt", "", cc.TEXT_ALIGNMENT_CENTER,s.width) layer:addChild(label1, 0, kTagBitmapAtlas1) label1:setPosition(cc.p(s.width/2, s.height-100)) -- cc.LabelTTF local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 24 local label2 = cc.Label:createWithTTF(ttfConfig, "", cc.TEXT_ALIGNMENT_CENTER, s.width) layer:addChild(label2, 0, kTagBitmapAtlas2) label2:setAnchorPoint(cc.p(0.5, 0.5)) label2:setPosition(cc.p(s.width/2, s.height/2)) layer:registerScriptHandler(LabelFNTandTTFEmpty.onNodeEvent) LabelFNTandTTFEmpty.setEmpty = false Helper.titleLabel:setString("New Label : .FNT file & .TTF file") Helper.subtitleLabel:setString("2 empty labels: new Label + .FNT and new Label + .TTF") return layerendfunction LabelFNTandTTFEmpty.updateStrings(dt) local label1 = LabelFNTandTTFEmpty.layer:getChildByTag(kTagBitmapAtlas1) local label2 = LabelFNTandTTFEmpty.layer:getChildByTag(kTagBitmapAtlas2) if( LabelFNTandTTFEmpty.setEmpty == false) then label1:setString("not empty") label2:setString("not empty") LabelFNTandTTFEmpty.setEmpty = true else label1:setString("") label2:setString("") LabelFNTandTTFEmpty.setEmpty = false endend------------------------------------------------------------------------ LabelFNTRetina----------------------------------------------------------------------local LabelFNTRetina = { }function LabelFNTRetina.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) local s = cc.Director:getInstance():getWinSize() -- cc.LabelBMFont local label1 = cc.Label:createWithBMFont("fonts/konqa32.fnt", "TESTING RETINA DISPLAY") label1:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(label1) label1:setPosition(cc.p(s.width/2, s.height/2)) Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString("loading arista16 or arista16-hd") return layerend------------------------------------------------------------------------ LabelFNTGlyphDesigner----------------------------------------------------------------------local LabelFNTGlyphDesigner = {}function LabelFNTGlyphDesigner.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) local s = cc.Director:getInstance():getWinSize() local label1 = cc.Label:createWithBMFont("fonts/futura-48.fnt", "TESTING RETINA DISPLAY") label1:setAnchorPoint(cc.p(0.5, 0.5)) layer:addChild(label1) label1:setPosition(cc.p(s.width/2, s.height/2)) Helper.titleLabel:setString("New Label + .FNT file") Helper.subtitleLabel:setString("Testing Glyph Designer: you should see a font with shawdows and outline") return layerend--/ LabelTTFUnicodeChineselocal LabelTTFUnicodeChinese = {}function LabelTTFUnicodeChinese.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF file Chinese") Helper.subtitleLabel:setString("Testing new Label + TTF with Chinese character") local s = cc.Director:getInstance():getWinSize() local ttfConfig = {} ttfConfig.fontFilePath="fonts/wt021.ttf" ttfConfig.fontSize=28 ttfConfig.glyphs=cc.GLYPHCOLLECTION_CUSTOM ttfConfig.customGlyphs="美好的一天啊" local label1 = cc.Label:createWithTTF(ttfConfig,"美好的一天啊", cc.TEXT_ALIGNMENT_CENTER, s.width) label1:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(label1) label1:setPosition(cc.p(s.width/2, s.height/2)) return layerend-------------- LabelFNTUnicodeChinese------------local LabelFNTUnicodeChinese = {}function LabelFNTUnicodeChinese.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) local size = cc.Director:getInstance():getWinSize() local lable = cc.Label:createWithBMFont("fonts/bitmapFontChinese.fnt", "中国") lable:setAnchorPoint(cc.p(0.5,0.5)) lable:setPosition(cc.p(size.width / 2, size.height /2)) layer:addChild(lable) Helper.titleLabel:setString("New Label + .FNT file Chinese") Helper.subtitleLabel:setString("Testing new Label + FNT with Chinese character") return layerend-- LabelFNTMultiLineAlignmentlocal LongSentencesExample = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."local LineBreaksExample = "Lorem ipsum dolor\nsit amet\nconsectetur adipisicing elit\nblah\nblah"local MixedExample = "ABC\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt\nDEF"local ArrowsMax = 0.95local ArrowsMin = 0.7local LeftAlign = 0local CenterAlign = 1local RightAlign = 2local LongSentences = 0local LineBreaks = 1local Mixed = 2local alignmentItemPadding = 50local menuItemPaddingCenter = 50local LabelFNTMultiLineAlignment = { _pLabelShouldRetain = nil, _pArrowsBarShouldRetain = nil, _pArrowsShouldRetain = nil, _pLastSentenceItem = nil, _drag = false,}function LabelFNTMultiLineAlignment.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) -- ask director the the window size local size = cc.Director:getInstance():getWinSize() -- create and initialize a Label LabelFNTMultiLineAlignment._pLabelShouldRetain = cc.Label:createWithBMFont("fonts/markerFelt.fnt", LongSentencesExample, cc.TEXT_ALIGNMENT_CENTER, size.width/1.5) LabelFNTMultiLineAlignment._pLabelShouldRetain:setAnchorPoint(cc.p(0.5, 0.5)) LabelFNTMultiLineAlignment._pLabelShouldRetain:retain() LabelFNTMultiLineAlignment._pArrowsBarShouldRetain = cc.Sprite:create("Images/arrowsBar.png") LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:retain() LabelFNTMultiLineAlignment._pArrowsShouldRetain = cc.Sprite:create("Images/arrows.png") LabelFNTMultiLineAlignment._pArrowsShouldRetain:retain() cc.MenuItemFont:setFontSize(20) local longSentences = cc.MenuItemFont:create("Long Flowing Sentences") longSentences:registerScriptTapHandler(LabelFNTMultiLineAlignment.stringChanged) local lineBreaks = cc.MenuItemFont:create("Short Sentences With Intentional Line Breaks") lineBreaks:registerScriptTapHandler(LabelFNTMultiLineAlignment.stringChanged) local mixed = cc.MenuItemFont:create("Long Sentences Mixed With Intentional Line Breaks") mixed:registerScriptTapHandler(LabelFNTMultiLineAlignment.stringChanged)--传两个参数 第一个tag 第二个对象 local stringMenu = cc.Menu:create() stringMenu:addChild(longSentences) stringMenu:addChild(lineBreaks) stringMenu:addChild(mixed) stringMenu:alignItemsVertically() longSentences:setColor(cc.c3b(255, 0, 0)) LabelFNTMultiLineAlignment._pLastSentenceItem = longSentences longSentences:setTag(LongSentences) lineBreaks:setTag(LineBreaks) mixed:setTag(Mixed) cc.MenuItemFont:setFontSize(30) local left = cc.MenuItemFont:create("Left") left:registerScriptTapHandler(LabelFNTMultiLineAlignment.alignmentChanged) local center = cc.MenuItemFont:create("Center") center:registerScriptTapHandler(LabelFNTMultiLineAlignment.alignmentChanged) local right = cc.MenuItemFont:create("Right") right:registerScriptTapHandler(LabelFNTMultiLineAlignment.alignmentChanged) local alignmentMenu = cc.Menu:create() alignmentMenu:addChild(left) alignmentMenu:addChild(center) alignmentMenu:addChild(right) alignmentMenu:alignItemsHorizontallyWithPadding(alignmentItemPadding) center:setColor(cc.c3b(255, 0, 0)) LabelFNTMultiLineAlignment._pLastAlignmentItem = center left:setTag(LeftAlign) center:setTag(CenterAlign) right:setTag(RightAlign) -- position the label on the center of the screen LabelFNTMultiLineAlignment._pLabelShouldRetain:setPosition(cc.p(size.width/2, size.height/2)) LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:setVisible(false) local arrowsWidth = (ArrowsMax - ArrowsMin) * size.width LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:setScaleX(arrowsWidth / LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:getContentSize().width) LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:setPosition( ((ArrowsMax + ArrowsMin) / 2) * size.width, LabelFNTMultiLineAlignment._pLabelShouldRetain:getPositionY() ) LabelFNTMultiLineAlignment.snapArrowsToEdge() stringMenu:setPosition(cc.p(size.width/2, size.height - menuItemPaddingCenter)) alignmentMenu:setPosition(cc.p(size.width/2, menuItemPaddingCenter+15)) layer:addChild(LabelFNTMultiLineAlignment._pLabelShouldRetain) layer:addChild(LabelFNTMultiLineAlignment._pArrowsBarShouldRetain) layer:addChild(LabelFNTMultiLineAlignment._pArrowsShouldRetain) layer:addChild(stringMenu) layer:addChild(alignmentMenu) layer:registerScriptHandler(LabelFNTMultiLineAlignment.onNodeEvent) local function onTouchesBegan(touches, event) local location = touches[1]:getLocationInView() if cc.rectContainsPoint(LabelFNTMultiLineAlignment._pArrowsShouldRetain:getBoundingBox(), cc.p(location.x, location.y)) then LabelFNTMultiLineAlignment._drag = true LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:setVisible(true) end end local function onTouchesMoved(touches, event) if LabelFNTMultiLineAlignment._drag == false then return end local winSize = cc.Director:getInstance():getWinSize() local location = touches[1]:getLocationInView() LabelFNTMultiLineAlignment._pArrowsShouldRetain:setPosition( math.max(math.min(location.x, ArrowsMax*winSize.width), ArrowsMin*winSize.width), LabelFNTMultiLineAlignment._pArrowsShouldRetain:getPositionY()) local labelWidth = math.abs(LabelFNTMultiLineAlignment._pArrowsShouldRetain:getPositionX() - LabelFNTMultiLineAlignment._pLabelShouldRetain:getPositionX()) * 2 LabelFNTMultiLineAlignment._pLabelShouldRetain:setMaxLineWidth(labelWidth) end local function onTouchesEnded(touch, event) LabelFNTMultiLineAlignment._drag = false LabelFNTMultiLineAlignment.snapArrowsToEdge() LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:setVisible(false) end local listener = cc.EventListenerTouchAllAtOnce:create() listener:registerScriptHandler(onTouchesBegan,cc.Handler.EVENT_TOUCHES_BEGAN ) listener:registerScriptHandler(onTouchesMoved,cc.Handler.EVENT_TOUCHES_MOVED ) listener:registerScriptHandler(onTouchesEnded,cc.Handler.EVENT_TOUCHES_ENDED ) local eventDispatcher = layer:getEventDispatcher() eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer) return layerendfunction LabelFNTMultiLineAlignment.onNodeEvent(tag) if tag == "onexit" then LabelFNTMultiLineAlignment._pLabelShouldRetain:release() LabelFNTMultiLineAlignment._pArrowsBarShouldRetain:release() LabelFNTMultiLineAlignment._pArrowsShouldRetain:release() endendfunction LabelFNTMultiLineAlignment.stringChanged(tag, sender) local item = sender item:setColor(cc.c3b(255, 0, 0)) LabelFNTMultiLineAlignment._pLastAlignmentItem:setColor(cc.c3b(255, 255, 255)) LabelFNTMultiLineAlignment._pLastAlignmentItem = item if item:getTag() == LongSentences then LabelFNTMultiLineAlignment._pLabelShouldRetain:setString(LongSentencesExample) elseif item:getTag() == LineBreaks then LabelFNTMultiLineAlignment._pLabelShouldRetain:setString(LineBreaksExample) elseif item:getTag() == Mixed then LabelFNTMultiLineAlignment._pLabelShouldRetain:setString(MixedExample) end LabelFNTMultiLineAlignment.snapArrowsToEdge()endfunction LabelFNTMultiLineAlignment.alignmentChanged(tag, sender) -- cclog("LabelFNTMultiLineAlignment.alignmentChanged, tag:"..tag) local item = sender item:setColor(cc.c3b(255, 0, 0)) LabelFNTMultiLineAlignment._pLastAlignmentItem:setColor(cc.c3b(255, 255, 255)) LabelFNTMultiLineAlignment._pLastAlignmentItem = item if tag == LeftAlign then cclog("LeftAlign") LabelFNTMultiLineAlignment._pLabelShouldRetain:setAlignment(cc.TEXT_ALIGNMENT_LEFT) elseif tag == CenterAlign then LabelFNTMultiLineAlignment._pLabelShouldRetain:setAlignment(cc.TEXT_ALIGNMENT_CENTER) elseif tag == RightAlign then LabelFNTMultiLineAlignment._pLabelShouldRetain:setAlignment(cc.TEXT_ALIGNMENT_RIGHT) end LabelFNTMultiLineAlignment.snapArrowsToEdge()endfunction LabelFNTMultiLineAlignment.snapArrowsToEdge() LabelFNTMultiLineAlignment._pArrowsShouldRetain:setPosition( LabelFNTMultiLineAlignment._pLabelShouldRetain:getPositionX() + LabelFNTMultiLineAlignment._pLabelShouldRetain:getContentSize().width/2, LabelFNTMultiLineAlignment._pLabelShouldRetain:getPositionY() )end----------------------------------------- LabelFNTUNICODELanguages------------------------------------local LabelFNTUNICODELanguages = {}function LabelFNTUNICODELanguages.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .FNT + UNICODE") Helper.subtitleLabel:setString("You should see 3 differnt labels:\nIn Spanish, Chinese, and Japanese") local s = cc.Director:getInstance():getWinSize() local label1 = cc.Label:createWithBMFont("fonts/arial-unicode-26.fnt", "Buen día", cc.TEXT_ALIGNMENT_CENTER, 200) label1:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(label1) label1:setPosition(cc.p(s.width/2, s.height/4*3)) local label2 = cc.Label:createWithBMFont("fonts/arial-unicode-26.fnt", "美好的一天") label2:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(label2) label2:setPosition(cc.p(s.width/2, s.height/4*2)) local label3 = cc.Label:createWithBMFont("fonts/arial-unicode-26.fnt", "良い一日を") label3:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(label3) label3:setPosition(cc.p(s.width/2, s.height/4*1)) return layerend--------------------------------------------------------------- LabelTTFAlignmentNew----------------------------------------------------------local LabelTTFAlignmentNew = {}function LabelTTFAlignmentNew.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + TTF") Helper.subtitleLabel:setString("Tests alignment values") local s = cc.Director:getInstance():getWinSize() local ttfConfig = {} ttfConfig.fontFilePath="fonts/tahoma.ttf" ttfConfig.fontSize=16 local ttf0 = cc.Label:createWithTTF(ttfConfig, "Alignment 0\nnew line", cc.TEXT_ALIGNMENT_LEFT) ttf0:setPosition(cc.p(s.width/2,(s.height/6)*2 - 30)) ttf0:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(ttf0) local ttf1 = cc.Label:createWithTTF(ttfConfig, "Alignment 1\nnew line", cc.TEXT_ALIGNMENT_CENTER) ttf1:setPosition(cc.p(s.width/2,(s.height/6)*3 - 30)) ttf1:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(ttf1) local ttf2 = cc.Label:createWithTTF(ttfConfig, "Alignment 2\nnew line", cc.TEXT_ALIGNMENT_RIGHT) ttf2:setPosition(cc.p(s.width/2,(s.height/6)*4 - 30)) ttf2:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(ttf2) return layerend------------------------------------------ LabelTTFUnicodeNew-------------------------------------local LabelTTFUnicodeNew = {}function LabelTTFUnicodeNew.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + TTF unicode") Helper.subtitleLabel:setString("Uses the new Label with TTF. Testing unicode") local s = cc.Director:getInstance():getWinSize() local vStep = s.height/9 local vSize = s.height local ttfConfig = {} ttfConfig.fontFilePath="fonts/arial.ttf" ttfConfig.fontSize=23 ttfConfig.glyphs=cc.GLYPHCOLLECTION_ASCII local label1 = cc.Label:createWithTTF(ttfConfig,"Buen día, ¿cómo te llamas?", cc.TEXT_ALIGNMENT_CENTER, s.width) label1:setAnchorPoint(cc.p(0.5,0.5)) label1:setPosition(cc.p(s.width/2, vSize - vStep * 4.5)) layer:addChild(label1) local label2 = cc.Label:createWithTTF(ttfConfig, "In welcher Straße haben Sie gelebt?", cc.TEXT_ALIGNMENT_CENTER, s.width) label2:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(label2) label2:setPosition(cc.p(s.width/2, vSize - vStep * 5.5)) ttfConfig.fontFilePath = "fonts/wt021.ttf" ttfConfig.glyphs = cc.GLYPHCOLLECTION_CUSTOM ttfConfig.customGlyphs = "美好的一天" local label3 = cc.Label:createWithTTF(ttfConfig, "美好的一天", cc.TEXT_ALIGNMENT_CENTER, s.width) label3:setAnchorPoint(cc.p(0.5,0.5)) layer:addChild(label3) label3:setPosition(cc.p(s.width/2, vSize - vStep * 6.5)) return layerend--------------------------------------LabelFNTBounds------------------------------------local LabelFNTBounds = {}function LabelFNTBounds.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .FNT + Bounds") Helper.subtitleLabel:setString("You should see string enclosed by a box") local s = cc.Director:getInstance():getWinSize() local colorlayer = cc.LayerColor:create(cc.c4b(128,128,128,255)) layer:addChild(colorlayer, -10) -- cc.LabelBMFont local label1 = cc.Label:createWithBMFont("fonts/boundsTestFont.fnt", "Testing Glyph Designer", cc.TEXT_ALIGNMENT_CENTER, s.width) label1:setAnchorPoint(cc.p(0.5, 0.5)) layer:addChild(label1) label1:setPosition(cc.p(s.width/2, s.height/2)) return layerendfunction LabelFNTBounds.draw() -- cc.size labelSize = label1:getContentSize() -- cc.size origin = cc.Director:getInstance():getWinSize() -- origin.width = origin.width / 2 - (labelSize.width / 2) -- origin.height = origin.height / 2 - (labelSize.height / 2) -- cc.p vertices[4]= -- cc.p(origin.width, origin.height), -- cc.p(labelSize.width + origin.width, origin.height), -- cc.p(labelSize.width + origin.width, labelSize.height + origin.height), -- cc.p(origin.width, labelSize.height + origin.height) -- end -- ccDrawPoly(vertices, 4, true)end------------------------------------------------------------- LabelTTFLongLineWrapping--------------------------------------------------------local LabelTTFLongLineWrapping = {}function LabelTTFLongLineWrapping.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Uses the new Label with TTF. Testing auto-wrapping") local s = cc.Director:getInstance():getWinSize() local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 14 local label1 = cc.Label:createWithTTF(ttfConfig, LongSentencesExample, cc.TEXT_ALIGNMENT_LEFT, s.width) label1:setAnchorPoint(cc.p(0.5,1.0)) label1:setPosition(cc.p(s.width/2, s.height/2)) layer:addChild(label1) return layerend------------------------------------------------------------------------ LabelTTFDynamicAlignment----------------------------------------------------------------------local LabelTTFDynamicAlignment = { _layer = nil, _label = nil, _eHorizAlign = cc.TEXT_ALIGNMENT_LEFT,}function LabelTTFDynamicAlignment.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) LabelTTFDynamicAlignment._layer = layer LabelTTFDynamicAlignment._label = nil LabelTTFDynamicAlignment._eHorizAlign = cc.TEXT_ALIGNMENT_LEFT local s = cc.Director:getInstance():getWinSize() local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 23 LabelTTFDynamicAlignment._label = cc.Label:createWithTTF(ttfConfig, LongSentencesExample, cc.TEXT_ALIGNMENT_CENTER, s.width) LabelTTFDynamicAlignment._label:setPosition( cc.p(s.width/2, s.height/2) ) LabelTTFDynamicAlignment._label:setAnchorPoint(cc.p(0.5, 0.5)) layer:addChild(LabelTTFDynamicAlignment._label) cc.MenuItemFont:setFontSize(30) local item1 = cc.MenuItemFont:create("Left") item1:registerScriptTapHandler(LabelTTFDynamicAlignment.setAlignmentLeft) local item2 = cc.MenuItemFont:create("Center") item2:registerScriptTapHandler(LabelTTFDynamicAlignment.setAlignmentCenter) local item3 = cc.MenuItemFont:create("Right") item3:registerScriptTapHandler(LabelTTFDynamicAlignment.setAlignmentRight) local menu = cc.Menu:create() menu:addChild(item1) menu:addChild(item2) menu:addChild(item3) menu:alignItemsVerticallyWithPadding(4) menu:setPosition(cc.p(50, s.height / 4)) layer:addChild(menu) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Uses the new Label with TTF. Testing alignment") LabelTTFDynamicAlignment.updateAlignment() return layerendfunction LabelTTFDynamicAlignment.updateAlignment() local s = cc.Director:getInstance():getWinSize() LabelTTFDynamicAlignment._label:setAlignment(LabelTTFDynamicAlignment._eHorizAlign)endfunction LabelTTFDynamicAlignment.setAlignmentLeft(pSender) LabelTTFDynamicAlignment._eHorizAlign = cc.TEXT_ALIGNMENT_LEFT LabelTTFDynamicAlignment.updateAlignment()endfunction LabelTTFDynamicAlignment.setAlignmentCenter(pSender) LabelTTFDynamicAlignment._eHorizAlign = cc.TEXT_ALIGNMENT_CENTER LabelTTFDynamicAlignment.updateAlignment()endfunction LabelTTFDynamicAlignment.setAlignmentRight(pSender) LabelTTFDynamicAlignment._eHorizAlign = cc.TEXT_ALIGNMENT_RIGHT LabelTTFDynamicAlignment.updateAlignment()end------------------------------------------------------------- LabelTTFCJKWrappingTest--------------------------------------------------------local LabelTTFCJKWrappingTest = {}function LabelTTFCJKWrappingTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString( "New Label with CJK + ASCII characters\n" .. "Characters should stay in the correct position") local size = cc.Director:getInstance():getVisibleSize() local ttfConfig = {} ttfConfig.fontFilePath = "fonts/wt021.ttf" ttfConfig.fontSize = 25 ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC ttfConfig.customGlyphs = nil ttfConfig.distanceFieldEnabled = false local drawNode = cc.DrawNode:create() drawNode:setAnchorPoint(cc.p(0, 0)) layer:addChild(drawNode) drawNode:drawSegment( cc.p(size.width * 0.1, size.height * 0.8), cc.p(size.width * 0.1, 0), 1, cc.c4f(1, 0, 0, 1)) drawNode:drawSegment( cc.p(size.width * 0.85, size.height * 0.8), cc.p(size.width * 0.85, 0), 1, cc.c4f(1, 0, 0, 1)) local label1 = cc.Label:createWithTTF( ttfConfig, "你好,Cocos2d-x v3的New Label。", cc.TEXT_ALIGNMENT_LEFT, size.width * 0.75) label1:setTextColor(cc.c4b(128, 255, 255, 255)) label1:setPosition(cc.p(size.width * 0.1, size.height * 0.6)) label1:setAnchorPoint(cc.p(0, 0.5)) layer:addChild(label1) local label2 = cc.Label:createWithTTF( ttfConfig, "早上好,Cocos2d-x v3的New Label。", cc.TEXT_ALIGNMENT_LEFT, size.width * 0.75) label2:setTextColor(cc.c4b(255, 128, 255, 255)) label2:setPosition(cc.p(size.width * 0.1, size.height * 0.4)) label2:setAnchorPoint(cc.p(0, 0.5)) layer:addChild(label2) local label3 = cc.Label:createWithTTF( ttfConfig, "美好的一天啊美好的一天啊美好的一天啊", cc.TEXT_ALIGNMENT_LEFT, size.width * 0.75) label3:setColor(cc.c4b(255, 255, 128, 255)) label3:setPosition(cc.p(size.width * 0.1, size.height * 0.2)) label3:setAnchorPoint(cc.p(0, 0.5)) layer:addChild(label3) return layerend------------------------------------------------------------- LabelTTFFontsTestNew--------------------------------------------------------local LabelTTFFontsTestNew = {}function LabelTTFFontsTestNew.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + TTF") Helper.subtitleLabel:setString("") local s = cc.Director:getInstance():getWinSize() local ttfPaths = { "fonts/A Damn Mess.ttf", "fonts/Abberancy.ttf", "fonts/Abduction.ttf", "fonts/American Typewriter.ttf", "fonts/Paint Boy.ttf", "fonts/Schwarzwald Regular.ttf", "fonts/Scissor Cuts.ttf", } local ttfConfig = {} ttfConfig.fontFilePath = ttfPaths[0] ttfConfig.fontSize = 20 for i=1, table.getn(ttfPaths) do ttfConfig.fontFilePath = ttfPaths[i] local label = cc.Label:createWithTTF( ttfConfig, ttfPaths[i], cc.TEXT_ALIGNMENT_CENTER, 0)--第一个入参是字符配置,是个table值,两个元素分别是字体路径和大小 if nil ~= label then label:setPosition( cc.p(s.width/2, ((s.height * 0.6)/table.getn(ttfPaths) * (i -1)) + (s.height/5))) layer:addChild(label) label:setAnchorPoint(cc.p(0.5, 0.5)) else print(string.format("ERROR: Cannot load: %s",ttfPaths[i])) end end return layerend------------------------------------------------------------- LabelBMFontTestNew--------------------------------------------------------local LabelBMFontTestNew = {}function LabelBMFontTestNew.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + FNT") Helper.subtitleLabel:setString("Uses the new Label with .FNT file") local s = cc.Director:getInstance():getWinSize() local label1 = cc.Label:createWithBMFont("fonts/bitmapFontTest2.fnt", "Hello World, this is testing the new Label using fnt file", cc.TEXT_ALIGNMENT_CENTER, s.width) label1:setAnchorPoint(cc.p(0.5,0.5)) label1:setPosition(cc.p(s.width/2, s.height/2)) layer:addChild(label1) return layerend------------------------------------------------------------- LabelTTFDistanceField--------------------------------------------------------local LabelTTFDistanceField = {}function LabelTTFDistanceField.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Testing rendering base on DistanceField") local s = cc.Director:getInstance():getWinSize() local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 40 ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC--使用的字符集 ttfConfig.customGlyphs = nil ttfConfig.distanceFieldEnabled = true--是否让文字显得紧凑?默认为false local label1 = cc.Label:createWithTTF(ttfConfig,"Distance Field",cc.TEXT_ALIGNMENT_CENTER,s.width) label1:setAnchorPoint(cc.p(0.5,0.5)) label1:setPosition(cc.p(s.width/2, s.height/2)) label1:setTextColor( cc.c4b(0, 255, 0, 255) ) local action = cc.Sequence:create(cc.DelayTime:create(1.0), cc.ScaleTo:create(6.0,5.0,5.0), cc.ScaleTo:create(6.0,1.0,1.0)) label1:runAction(cc.RepeatForever:create(action)) layer:addChild(label1) local label2 = cc.Label:createWithTTF(ttfConfig,"Distance Field",cc.TEXT_ALIGNMENT_CENTER,s.width) label2:setPosition( cc.p(s.width/2, s.height/5) ) label2:setTextColor( cc.c4b(255, 0, 0, 255)) label2:setAnchorPoint(cc.p(0.5, 0.5)) layer:addChild(label2) return layerend------------------------------------------------------------- LabelOutlineAndGlowTest--------------------------------------------------------local LabelOutlineAndGlowTest = {}function LabelOutlineAndGlowTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Testing outline and glow of label") local s = cc.Director:getInstance():getWinSize() local col = cc.LayerColor:create( cc.c4b(200, 191, 231, 255)) layer:addChild(col) local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 40 ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC ttfConfig.customGlyphs = nil ttfConfig.distanceFieldEnabled = true ttfConfig.outlineSize = 0 local label1 = cc.Label:createWithTTF(ttfConfig,"Glow",cc.TEXT_ALIGNMENT_CENTER,s.width) label1:setAnchorPoint(cc.p(0.5,0.5)) label1:setPosition(cc.p(s.width/2, s.height * 0.7)) label1:setTextColor( cc.c4b(0, 255, 0, 255) ) label1:enableGlow(cc.c4b(255, 255, 0, 255)) layer:addChild(label1) ttfConfig.outlineSize = 1 local label2 = cc.Label:createWithTTF(ttfConfig,"Outline",cc.TEXT_ALIGNMENT_CENTER,s.width) label2:setPosition( cc.p(s.width/2, s.height * 0.6)) label2:setTextColor( cc.c4b(255, 0, 0, 255)) label2:setAnchorPoint(cc.p(0.5, 0.5)) label2:enableOutline(cc.c4b(0,0,255,255)) layer:addChild(label2) ttfConfig.outlineSize = 2 local label3 = cc.Label:createWithTTF(ttfConfig,"Outline",cc.TEXT_ALIGNMENT_CENTER,s.width) label3:setPosition( cc.p(s.width/2, s.height * 0.48)) label3:setTextColor( cc.c4b(255, 0, 0, 255)) label3:setAnchorPoint(cc.p(0.5, 0.5)) label3:enableOutline(cc.c4b(0,0,255,255))--两种用法一在字体配置时设置outlinesize参数,或者提供两个入参1颜色2轮廓 layer:addChild(label3) return layerend------------------------------------------------------------------------ LabelCharMapTest----------------------------------------------------------------------local LabelCharMapTest = {}function LabelCharMapTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + char map file") Helper.subtitleLabel:setString("Updating label should be fast.") time = 0 local label1 = cc.Label:createWithCharMap("fonts/tuffy_bold_italic-charmap.plist") layer:addChild(label1, 0, kTagSprite1) label1:setPosition( cc.p(10,100) ) label1:setOpacity( 200 ) local label2 = cc.Label:createWithCharMap("fonts/tuffy_bold_italic-charmap.plist") layer:addChild(label2, 0, kTagSprite2) label2:setPosition( cc.p(10,160) ) label2:setOpacity( 32 ) local label3 = cc.Label:createWithCharMap("fonts/tuffy_bold_italic-charmap.png", 48, 64, 32)--32 means Space key label3:setString("123 Test") layer:addChild(label3, 0, kTagSprite3) label3:setPosition(cc.p(10,220)) local function step(dt) time = time + dt local info = string.format("%2.2f Test", time) local label1 = layer:getChildByTag(kTagSprite1) label1:setString(info) local label2 = layer:getChildByTag(kTagSprite2) info = string.format("%d",time) label2:setString(info) end layer:scheduleUpdateWithPriorityLua(step, 0) function onNodeEvent(tag) if tag == "exit" then layer:unscheduleUpdate() end end layer:registerScriptHandler(onNodeEvent) return layerend------------------------------------------------------------- LabelCrashTest--------------------------------------------------------local LabelCrashTest = {}function LabelCrashTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Testing rendering base on DistanceField") local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 40 ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC ttfConfig.customGlyphs = nil ttfConfig.distanceFieldEnabled = true local s = cc.Director:getInstance():getWinSize() local label1 = cc.Label:createWithTTF(ttfConfig,"Test崩溃123", cc.TEXT_ALIGNMENT_CENTER, s.width) label1:setPosition( cc.p(s.width/2, s.height/2) ) label1:setAnchorPoint(cc.p(0.5, 0.5)) layer:addChild(label1) return layerend------------------------------------------------------------- LabelTTFLargeText--------------------------------------------------------local LabelTTFLargeText = {}function LabelTTFLargeText.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Uses the new Label with TTF. Testing large text") local ttfConfig = {} ttfConfig.fontFilePath = "fonts/wt021.ttf" ttfConfig.fontSize = 18 ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC local s = cc.Director:getInstance():getWinSize() local text = cc.FileUtils:getInstance():getStringFromFile("commonly_used_words.txt")--打开文件获得文档 local label = cc.Label:createWithTTF(ttfConfig, text, cc.TEXT_ALIGNMENT_CENTER, s.width) label:setPosition( cc.p(s.width/2, s.height/2) ) layer:addChild(label) return layerend------------------------------------------------------------- LabelShadowTest--------------------------------------------------------local LabelShadowTest = {}function LabelShadowTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + .TTF") Helper.subtitleLabel:setString("Testing shadow of label") local size = cc.Director:getInstance():getWinSize() local bg = cc.LayerColor:create(cc.c4b(200,191,231,255)) layer:addChild(bg) local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 40 ttfConfig.glyphs = cc.GLYPHCOLLECTION_DYNAMIC ttfConfig.customGlyphs = nil ttfConfig.distanceFieldEnabled = true local shadowLabelTTF = cc.Label:createWithTTF(ttfConfig, "TTF:Shadow") shadowLabelTTF:setPosition(cc.p(size.width/2, size.height*0.65)) shadowLabelTTF:setTextColor(cc.c4b(255, 0, 0, 255)) shadowLabelTTF:enableShadow(cc.c4b(0, 0, 0, 255)) layer:addChild(shadowLabelTTF) local shadowLabelOutline = cc.Label:createWithTTF(ttfConfig,"TTF:Shadow") shadowLabelOutline:setPosition(cc.p(size.width/2, size.height*0.5)) shadowLabelOutline:setTextColor(cc.c4b(255, 0, 0, 255)) shadowLabelOutline:enableOutline(cc.c4b(255, 255, 0, 255), 1) shadowLabelOutline:enableShadow(cc.c4b(0, 0, 0, 255)) layer:addChild(shadowLabelOutline) local shadowLabelBMFont = cc.Label:createWithBMFont("fonts/bitmapFontTest.fnt", "BMFont:Shadow") shadowLabelBMFont:setPosition( cc.p(size.width/2, size.height*0.35) ) shadowLabelBMFont:setColor(cc.c3b(255, 0, 0)) shadowLabelBMFont:enableShadow(cc.c4b(0, 255, 0, 255)) layer:addChild(shadowLabelBMFont) local function sliderEvent(sender, eventType--滑动回调函数 if eventType == ccui.SliderEventType.percentChanged then local slider = layer:getChildByTag(1) local slider2 = layer:getChildByTag(2) local offset = cc.size(slider:getPercent() - 50,50 - slider2:getPercent())--根据两个滑动条计算xy方向便宜 shadowLabelTTF:enableShadow(cc.c4b(0, 0, 0, 255),offset) shadowLabelBMFont:enableShadow(cc.c4b(0, 255, 0, 255),offset) shadowLabelOutline:enableShadow(cc.c4b(0, 0, 0, 255),offset) end end local slider = ccui.Slider:create()--创建触控滑条 slider:setTag(1) slider:setTouchEnabled(true) slider:loadBarTexture("cocosui/sliderTrack.png")--滑条背景 slider:loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", "")--按键 slider:loadProgressBarTexture("cocosui/sliderProgress.png")--进展 slider:setPosition(cc.p(size.width / 2.0, size.height * 0.15 + slider:getSize().height * 2.0)) slider:setPercent(52) slider:addEventListenerSlider(sliderEvent)--添加监听器 layer:addChild(slider) local slider2 = ccui.Slider:create() slider2:setTag(2) slider2:setTouchEnabled(true) slider2:loadBarTexture("cocosui/sliderTrack.png") slider2:loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", "") slider2:loadProgressBarTexture("cocosui/sliderProgress.png") slider2:setPosition(cc.p(size.width * 0.15, size.height / 2.0)) slider2:setRotation(90)--垂直 slider2:setPercent(52) slider2:addEventListenerSlider(sliderEvent) layer:addChild(slider2) return layerend------------------------------------------------------------- LabelCharMapColorTest--------------------------------------------------------local LabelCharMapColorTest = {}function LabelCharMapColorTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label + CharMap") Helper.subtitleLabel:setString("Opacity + Color should work at the same time") local label1 = cc.Label:createWithCharMap( "fonts/tuffy_bold_italic-charmap.png", 48, 64, 32)--32 means Space key layer:addChild(label1, 0, kTagSprite1) label1:setAnchorPoint(cc.p(0.0, 0.0)) label1:setPosition( cc.p(10,100) ) label1:setOpacity( 200 ) local label2 = cc.Label:createWithCharMap("fonts/tuffy_bold_italic-charmap.png", 48, 64, 32)--32 means Space key layer:addChild(label2, 0, kTagSprite2) label2:setAnchorPoint(cc.p(0.0, 0.0)) 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 function actionFinishCallback(sender) print("Action finished") end local cb = cc.CallFunc:create(actionFinishCallback) local seq = cc.Sequence:create(fade, fade_in, cb) local repeatForever = cc.RepeatForever:create( seq ) label2:runAction( repeatForever ) local scheduleTime = 0 local function step(dt) scheduleTime = scheduleTime + dt local strInfo = string.format("%2.2f Test", scheduleTime) local label1 = layer:getChildByTag(kTagSprite1) label1:setString(strInfo) local label2 = layer:getChildByTag(kTagSprite2) strInfo = string.format("%d", scheduleTime) label2:setString(strInfo) end local function onNodeEvent(event) if tag == "exit" then layer:unscheduleUpdate() end end layer:registerScriptHandler(onNodeEvent) layer:scheduleUpdateWithPriorityLua(step, 0) return layerend------------------------------------------------------------- LabelFontNameTest--------------------------------------------------------local LabelFontNameTest = {}function LabelFontNameTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label Test") Helper.subtitleLabel:setString("create label by font name,compatible with old labelTTF") local size = cc.Director:getInstance():getWinSize() local label1 = cc.Label:create() label1:setString("Default Font") label1:setPosition( cc.p(size.width/2, size.height * 0.7) ) layer:addChild(label1) local label3 = cc.Label:createWithTTF("fonts/Marker Felt.ttf","fonts/Marker Felt.ttf",32) label3:setPosition( cc.p(size.width/2, size.height * 0.5) ) layer:addChild(label3) return layerend------------------------------------------------------------- LabelAlignmentTest--------------------------------------------------------local LabelAlignmentTest = { _layer = nil, _label = nil, _horizAlign = cc.TEXT_ALIGNMENT_LEFT, _vertAlign = cc.VERTICAL_TEXT_ALIGNMENT_TOP,}function LabelAlignmentTest.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("Testing New Label") Helper.subtitleLabel:setString("Select the buttons on the sides to change alignment") local blockSize = cc.size(200, 160) local s = cc.Director:getInstance():getWinSize() local pos = cc.p((s.width - blockSize.width) / 2, (s.height - blockSize.height) / 2) local colorLayer = cc.LayerColor:create(cc.c4b(100, 100, 100, 255), blockSize.width, blockSize.height) colorLayer:setAnchorPoint(cc.p(0.0, 0.0)) colorLayer:setPosition(pos) layer:addChild(colorLayer) cc.MenuItemFont:setFontSize(30) local item1 = cc.MenuItemFont:create("Left") item1:registerScriptTapHandler(LabelAlignmentTest.setAlignmentLeft) local item2 = cc.MenuItemFont:create("Center") item2:registerScriptTapHandler(LabelAlignmentTest.setAlignmentCenter) local item3 = cc.MenuItemFont:create("Right") item3:registerScriptTapHandler(LabelAlignmentTest.setAlignmentRight) local menu = cc.Menu:create() menu:addChild(item1) menu:addChild(item2) menu:addChild(item3) menu:alignItemsVerticallyWithPadding(4) menu:setPosition(cc.p(50, s.height / 2 - 20)) layer:addChild(menu) menu = cc.Menu:create() item1 = cc.MenuItemFont:create("Top") item1:registerScriptTapHandler(LabelAlignmentTest.setAlignmentTop) item2 = cc.MenuItemFont:create("Middle") item2:registerScriptTapHandler(LabelAlignmentTest.setAlignmentMiddle) item3 = cc.MenuItemFont:create("Bottom") item3:registerScriptTapHandler(LabelAlignmentTest.setAlignmentBottom) menu:addChild(item1) menu:addChild(item2) menu:addChild(item3) menu:alignItemsVerticallyWithPadding(4) menu:setPosition(cc.p(s.width - 50, s.height / 2 - 20)) layer:addChild(menu) LabelAlignmentTest._layer = layer LabelAlignmentTest._label = nil LabelAlignmentTest._horizAlign = cc.TEXT_ALIGNMENT_LEFT LabelAlignmentTest._vertAlign = cc.VERTICAL_TEXT_ALIGNMENT_TOP local ttfConfig = {} ttfConfig.fontFilePath="fonts/arial.ttf" ttfConfig.fontSize = 32 local label = cc.Label:create() label:setDimensions(200,160) label:setAlignment(LabelAlignmentTest._horizAlign,LabelAlignmentTest._vertAlign) label:setTTFConfig(ttfConfig) label:setString(LabelAlignmentTest.getCurrentAlignment()) label:setAnchorPoint(cc.p(0.0, 0.0)) label:setPosition(pos) layer:addChild(label) LabelAlignmentTest._label = label return layerendfunction LabelAlignmentTest.updateAlignment() if nil ~= LabelAlignmentTest._label then LabelAlignmentTest._label:setHorizontalAlignment(LabelAlignmentTest._horizAlign) LabelAlignmentTest._label:setVerticalAlignment(LabelAlignmentTest._vertAlign) LabelAlignmentTest._label:setString(LabelAlignmentTest.getCurrentAlignment()) end endfunction LabelAlignmentTest.setAlignmentLeft(sender) LabelAlignmentTest._horizAlign = cc.TEXT_ALIGNMENT_LEFT LabelAlignmentTest.updateAlignment()endfunction LabelAlignmentTest.setAlignmentCenter(sender) LabelAlignmentTest._horizAlign = cc.TEXT_ALIGNMENT_CENTER LabelAlignmentTest.updateAlignment()endfunction LabelAlignmentTest.setAlignmentRight(sender) LabelAlignmentTest._horizAlign = cc.TEXT_ALIGNMENT_RIGHT LabelAlignmentTest.updateAlignment()endfunction LabelAlignmentTest.setAlignmentTop(sender) LabelAlignmentTest._vertAlign = cc.VERTICAL_TEXT_ALIGNMENT_TOP LabelAlignmentTest.updateAlignment()endfunction LabelAlignmentTest.setAlignmentMiddle(sender) LabelAlignmentTest._vertAlign = cc.VERTICAL_TEXT_ALIGNMENT_CENTER LabelAlignmentTest.updateAlignment()endfunction LabelAlignmentTest.setAlignmentBottom(sender) LabelAlignmentTest._vertAlign = cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM LabelAlignmentTest.updateAlignment()endfunction LabelAlignmentTest.getCurrentAlignment() local vertical = nil local horizontal = nil if LabelAlignmentTest._vertAlign == cc.VERTICAL_TEXT_ALIGNMENT_TOP then vertical = "Top" elseif LabelAlignmentTest._vertAlign == cc.VERTICAL_TEXT_ALIGNMENT_CENTER then vertical = "Middle" elseif LabelAlignmentTest._vertAlign == cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM then vertical = "Bottom" end if LabelAlignmentTest._horizAlign == cc.TEXT_ALIGNMENT_LEFT then horizontal = "Left" elseif LabelAlignmentTest._horizAlign == cc.TEXT_ALIGNMENT_CENTER then horizontal = "Center" elseif LabelAlignmentTest._horizAlign == cc.TEXT_ALIGNMENT_RIGHT then horizontal = "Right" end return string.format("Alignment %s %s", vertical, horizontal)end------------------------------------------------------------- LabelIssue4428Test--------------------------------------------------------local LabelIssue4428Test = { }function LabelIssue4428Test.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New Label Bugs Test") Helper.subtitleLabel:setString("Reorder issue #4428.The label should be flipped vertically.") local size = cc.Director:getInstance():getWinSize() local label = cc.Label:createWithBMFont( "fonts/bitmapFontTest3.fnt", "123\n456") label:setPosition(cc.p(size.width /2.0, size.height / 2.0)) label:setAnchorPoint(cc.p(0.5, 0.5)) layer:addChild(label) local len = label:getStringLength() for i = 0, len -1 do local sprite = label:getLetter(i) if nil ~= sprite then sprite:setFlippedY(true)--字符颠倒 end end return layerend------------------------------------------------------------- LabelTTFOldNew--------------------------------------------------------local LabelTTFOldNew = { }function LabelTTFOldNew.create() local layer = cc.Layer:create() Helper.initWithLayer(layer) Helper.titleLabel:setString("New / Old TTF") Helper.subtitleLabel:setString("Comparison between old(red) and new(white) TTF label") local s = cc.Director:getInstance():getWinSize() local delta = s.height/4 local label1 = cc.Label:createWithSystemFont("Cocos2d-x Label Test", "arial", 24) layer:addChild(label1, 0, kTagBitmapAtlas1) label1:setPosition(cc.p(s.width/2, delta * 2)) label1:setColor(cc.c3b(255, 0, 0)) local ttfConfig = {} ttfConfig.fontFilePath = "fonts/arial.ttf" ttfConfig.fontSize = 24 local label2 = cc.Label:createWithTTF(ttfConfig, "Cocos2d-x Label Test") layer:addChild(label2, 0, kTagBitmapAtlas2) label2:setPosition(cc.p(s.width/2, delta * 2)) local function onDraw(transform, transformUpdated) kmGLPushMatrix() kmGLLoadMatrix(transform) local label1 = layer:getChildByTag(kTagBitmapAtlas1) local labelSize = label1:getContentSize() local origin = cc.Director:getInstance():getWinSize() origin.width = origin.width / 2 - (labelSize.width / 2) origin.height = origin.height / 2 - (labelSize.height / 2) local vertices = { cc.p(origin.width, origin.height), cc.p(labelSize.width + origin.width, origin.height), cc.p(labelSize.width + origin.width, labelSize.height + origin.height), cc.p(origin.width, labelSize.height + origin.height), } cc.DrawPrimitives.drawColor4B(255, 0, 0, 255) cc.DrawPrimitives.drawPoly(vertices, 4, true) local label2 = layer:getChildByTag(kTagBitmapAtlas2) labelSize = label2:getContentSize() origin = cc.Director:getInstance():getWinSize() origin.width = origin.width / 2 - (labelSize.width / 2) origin.height = origin.height / 2 - (labelSize.height / 2) local vertices2 = { cc.p(origin.width, origin.height), cc.p(labelSize.width + origin.width, origin.height), cc.p(labelSize.width + origin.width, labelSize.height + origin.height), cc.p(origin.width, labelSize.height + origin.height), } cc.DrawPrimitives.drawColor4B(255, 255, 255, 255) cc.DrawPrimitives.drawPoly(vertices2, 4, true) kmGLPopMatrix() end local glNode = gl.glNodeCreate() glNode:setContentSize(cc.size(s.width, s.height)) glNode:setAnchorPoint(cc.p(0.5, 0.5)) glNode:setPosition( s.width / 2, s.height / 2) glNode:registerScriptDrawHandler(onDraw) layer:addChild(glNode,-10) return layerend------------function LabelTestNew() cclog("LabelTestNew") m_time = 0 local scene = cc.Scene:create() Helper.createFunctionTable = { LabelFNTColorAndOpacity.create, LabelFNTSpriteActions.create, LabelFNTPadding.create, LabelFNTOffset.create, LabelFNTColor.create, LabelTTFLongLineWrapping.create, LabelTTFLargeText.create, LabelTTFColor.create, LabelFNTHundredLabels.create, LabelFNTMultiLine.create, LabelFNTandTTFEmpty.create, LabelFNTRetina.create, LabelFNTGlyphDesigner.create, LabelTTFUnicodeChinese.create, LabelFNTUnicodeChinese.create, LabelFNTMultiLineAlignment.create, LabelFNTUNICODELanguages.create, LabelTTFUnicodeNew.create, LabelTTFAlignmentNew.create, LabelFNTBounds.create, LabelTTFDynamicAlignment.create, LabelTTFCJKWrappingTest.create, LabelTTFFontsTestNew.create, LabelBMFontTestNew.create, LabelTTFDistanceField.create, LabelOutlineAndGlowTest.create, LabelShadowTest.create, LabelCharMapTest.create, LabelCharMapColorTest.create, LabelCrashTest.create, LabelTTFOldNew.create, LabelFontNameTest.create, LabelAlignmentTest.create, LabelIssue4428Test.create, } scene:addChild(LabelFNTColorAndOpacity.create()) scene:addChild(CreateBackMenuItem()) return sceneend
0 0
- lua 之newlabel
- lua学习之--liu.lua
- 【Lua】Lua之面向对象
- Lua 基础之 Lua 程序
- lua笔记之表达式
- Lua程序设计之协同
- Lua之coroutine基础
- LUA学习之编译
- Lua学习之function
- lua之OO学习
- lua之metatable
- Lua之变量环境
- lua之字符串格式化
- lua 之弱引用
- lua之class
- lua之数据类型
- lua之table学习
- Lua学习之function
- strong and weak 强引用和弱引用的区别
- C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
- 二叉树的链式存储与实现(C++)
- 全国大中学生体测取消选测 长跑成为必测项目
- 怎样让吐司机器中三个任务相互协作
- lua 之newlabel
- poj 3258-River Hopscotch
- Python集合(set)类型的操作
- mysql中“Table ‘’ is read only”的解决办法
- 织梦如何调用文件保存目录名
- 2014年在美国上市的中国企业名单(截止2014年10月17日)
- Android学习日志04__参考资源
- myeclipse集成weblogic服务器
- NO_4在二元树中找出和为某一值的所有路径