2016년 3월 27일 일요일

make game as corona sdk (Fly a rocketman)(6) - custom Font


이런 핑게 저런 핑게 대다보니 요즘 통 작업을 못진행한것 같네요.
2016 project인 만큼 빨리 마무리 될 수 있도록 힘을 내보도록 하겠습니다.

사용법은 아래에서 참고 하면됩니다.

https://docs.coronalabs.com/api/library/display/newText.html

두가지 방법으로 사용이 가능하며,
display.newText( [parentGroup,] text, x, y, font [, fontSize] )
display.newText( [parentGroup,] text, x, y [, width, height], font [, fontSize] )
display.newText( options )
font 인자는 아래의 값을 이용 할 수 있습니다.
font (required)
StringUserdata, or Constant. This can be one of the following:

오늘 주제에서는 custom font 이므로 font 를 외부에서 가져왔다고 할때
string형태로 입력을 하게됩니다.

예제입니다.
-- Standard text object
local displayText = display.newText( "Hello World", 150, 80, "CoolCustomFont.ttf", 24 )

저는 용량이 작고 멋있는걸로 "homespun.ttf" 폰트를 구했습니다.
일단 license관련해서 꼭 확인해서 사용하시기 바랍니다.

homespun.ttf
---------------
-The font(s) in this zip file were created by me (Brian Kent).  All
of my Fonts are Freeware, you can use them any way you want to
(Personal use, Commercial use, or whatever).


fota관련해서는 코드를 추가하였습니다.
화면에서 날아오는 글자라고 생각하고 구현하였습니다. 예를 들어 점수 같은게 날아올 수 있습니다.

    self.typeCreateData = {
   -- type 1
   --    name , x  , y ,xsz,ysz,xspeed,categoryBits,maskBits,etc
    {
    {"rect",-100, 30, 40, 80, -300,self.blockCategory,self.blockMask},
    {"rect", 100,-30, 40, 80, -300,self.blockCategory,self.blockMask},
    },
    -- type 2
    {
    {"rect",-100,  0, 40, 80, -300,self.blockCategory,self.blockMask},
    },
    -- type 3
    {
    {"rect",-100,  0, 40, 80, -300,self.blockCategory,self.blockMask},
    },
    -- type 4
    {
    {"font",-100,  0, 40, 80, -200,self.blockCategory,self.blockMask,24,"abcDEF123","homespun"},
    },
    }




function M:runEvent()
local y = self.data[self.currentGroupNum][self.currentPC][2]
local gtype = self.data[self.currentGroupNum][self.currentPC][3]

if(self.data[self.currentGroupNum][self.currentPC][4]=="randomType")then
gtype = random(self.data[self.currentGroupNum][self.currentPC][5],self.data[self.currentGroupNum][self.currentPC][6])
end

local firstTime = self.typeActionData[gtype][1][1]

local cdata = self.typeCreateData[gtype]
local count = #cdata
for i = 1, count, 1 do
local object
if( cdata[i][1] == "rect" ) then
object = display.newRect( self.cwidth + self.cwidth/2 + cdata[i][2], y + cdata[i][3], cdata[i][4], cdata[i][5] )
physics.addBody(object,"dynamic",{ density=1,filter={categoryBits=cdata[i][7],maskBits=cdata[i][8]} })
object:setLinearVelocity(cdata[i][6],0)
elseif( cdata[i][1] == "font" ) then
object = display.newText( cdata[i][10], self.cwidth + self.cwidth/2 , y, cdata[i][11], cdata[i][9] )
physics.addBody(object,"dynamic",{ density=1,filter={categoryBits=cdata[i][7],maskBits=cdata[i][8]} })
object:setLinearVelocity(cdata[i][6],0)
end
if( object~=nil ) then
object.name = "block"
self.objCount = self.objCount + 1
print("objs:",self.objCount)
end

if( object~=nil and firstTime >= 0 ) then
object.actionPC = 1
object.actionObjectType = gtype;
--print("fristTime",firstTime)
if( firstTime == 0 ) then
self:timerActionCB(object)
else
timer.performWithDelay(firstTime, function() self:timerActionCB(object) end)
end
end
end
end




댓글 없음:

댓글 쓰기