
Share Your Code
Browse Code
- All (902)
-
(94)
-
(84)
-
(44)
-
(4)
-
(42)
-
(135)
-
(21)
-
(41)
-
(13)
-
(65)
-
(150)
-
(209)
Multiline text with width in pixels and justified on both sides
Hi
I writes this code for put text justified on both sides. I'm newbie in Corona and it's possible the code is not optimized, but it works! Excuse for my english level also :(
First, you need to add this function to util.lua because she's need the explode function included on it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | ---------------------FUNCIO PER TALLAR I JUSTIFICAR UN TEXT--------- function tallaJustifica(elText, laFont, laMida, elColor, laAmplada) elText =elText or "You need to pass a Text as the first function parameter" laFont = laFont or native.systemFont laMida = tonumber(laMida) or 12 elColor = elColor or {0, 0, 0} laAmplada= laAmplada or display.stageWidth local paraulesBloc=explode(" ", elText) local paraulaInicial=1 local limitParaules = #paraulesBloc local laFraseTemp="" local laFraseJust="" local laFrase="" local iniciBlocJust=1 local finalBlocJust=1 local resultat = display.newGroup() local amplada=0 local comptador= 1 local numeroLinea=1 local ultimaFrase=false while paraulaInicial<limitParaules do for i=paraulaInicial, limitParaules,1 do laFraseTemp= laFraseTemp..paraulesBloc[i].." " local tempLinea = display.newText(laFraseTemp, 0, 0, laFont, laMida ) amplada=tempLinea.width tempLinea:removeSelf() if amplada >laAmplada or (i==limitParaules) then paraulaInicial=i if i==limitParaules then finalBlocJust=paraulaInicial ultimaFrase=true else finalBlocJust=paraulaInicial-1 end amplada=0 break end end if ultimaFrase==false then while amplada<laAmplada do for i=iniciBlocJust, finalBlocJust-1, 1 do laFraseJust=laFraseJust..paraulesBloc[i].." " end laFraseJust=laFraseJust..paraulesBloc[finalBlocJust] local tempLinea = display.newText(laFraseJust, 0, 0, laFont, laMida) amplada=tempLinea.width tempLinea:removeSelf() paraulesBloc[iniciBlocJust+comptador-1]=paraulesBloc[iniciBlocJust+comptador-1].." " comptador=comptador+1 if comptador>(finalBlocJust-iniciBlocJust) then comptador=1 end laFrase=laFraseJust laFraseJust="" end else for i=iniciBlocJust, finalBlocJust-1, 1 do laFrase=laFrase..paraulesBloc[i].." " end laFrase=laFrase..paraulesBloc[finalBlocJust] end laFraseTemp="" amplada=0 iniciBlocJust=finalBlocJust+1 if iniciBlocJust>limitParaules then iniciBlocJust=limitParaules end comptador=1 local linea = display.newText(laFrase, 0, (laMida * 1.3)*numeroLinea, laFont, laMida) linea:setTextColor(elColor[1], elColor[2], elColor[3]) resultat: insert(linea) numeroLinea=numeroLinea+1 laFrase="" end return resultat end ----------------FI FUNCIO TALLA I JUSTIFICA------------------------------------ |
Usage example:
1 2 3 4 5 6 | local util=require ("util") local blocText="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eu velit sit amet sem pulvinar bibendum. Vestibulum in neque elit, non malesuada metus. Sed suscipit hendrerit libero, nec condimentum metus tincidunt in. Duis viverra scelerisque congue. Phasellus convallis vehicula sem vel viverra. Cras bibendum arcu et turpis aliquam ultricies. Vivamus auctor magna eu odio faucibus vel egestas nisl blandit. Duis tristique libero id tortor congue sed viverra lacus convallis." local blocTextObject = util.tallaJustifica(blocText, native.systemFont, 22, {255,255,255}, 660) blocTextObject.x =54 blocTextObject.y = 100 |