백로그 상속 예제
예제
백로그 상속 예제
피니엔진 LNX 소스코드
local function m(fileName) |
--[스크립트] 매크로가 불리는 시점에 실행 될 루아 코드를 적어주세요. |
local original = pini.BacklogType -- 기존 BacklogType 형식입니다. |
local newBacklog=class(original) -- original 을 부모로 상속받아 newBacklog 클래스 타입을 정의합니다. |
function newBacklog:show(xPos, yPos, contentWidth) -- show 함수를 재정의합니다. |
local font = self.configs.fontName or "NanumBarunGothic" -- 미리 설정해둔 폰트를 세팅합니다. |
self.clipNode = pini.ClippingNode(pini:GetUUID()) -- ClippingNode 를 생성합니다. |
self.clipNode:setPosition(0,0) |
self.clipNode:setClippingSize(640, -360, 1200, 400) -- 640, -360 을 중심으로 하고, 폭이 1200, 높이가 400 인 영역으로 자릅니다. |
self.clipNode:setZ(10000000) -- 항상 최상단에 보이게 됩니다. |
pini:AttachDisplay(self.clipNode) -- 화면에 표기합니다. |
self.yPos = 0 |
local y = yPos |
local prevHeight = 0 |
for k,v in ripairs(self.logdatas) do -- 기록된 로그를 역순으로 하나씩 순회합니다. |
local label = pini.Label(pini:GetUUID(),v[2],font,self.configs.fontSize,{contentWidth,0}) -- 로그를 생성합니다. |
table.insert(self.labelContainer, label) |
pini:AttachDisplay(label, self.clipNode.id) -- ClippingNode 에 붙입니다. |
label:setColor(self.configs.fontColor[1] or 255,self.configs.fontColor[2] or 255,self.configs.fontColor[3] or 255) |
label:setZ(10000000) |
local currentHeight = label:contentSize().height |
y = y - currentHeight - (self.configs.lineMargin or 10) |
prevHeight = currentHeight |
label:setPosition(xPos,y) |
label:setAnchorPoint(0,1) |
if v[1] and v[1] ~= "" then -- 이름이 존재하면 |
local nameLabel = pini.Label(pini:GetUUID(),"\n"..v[1],font,self.configs.fontSize) -- 이름을 생성합니다. |
table.insert(self.labelContainer, nameLabel) |
pini:AttachDisplay(nameLabel, self.clipNode.id) -- 이름 또한 ClippingNode 에 붙입니다. |
nameLabel:setColor(self.configs.fontColor[1] or 255,self.configs.fontColor[2] or 255,self.configs.fontColor[3] or 255) |
nameLabel:setZ(10000000) |
nameLabel:setPosition(xPos - (self.configs.namePos or 150),y) |
nameLabel:setAnchorPoint(0,1) |
end |
end |
self.limitYPos = y - 200 |
self.motherNode = motherNode |
self.isShowing = true |
end |
function newBacklog:hide() |
if self.isShowing then |
for k,v in ipairs(self.labelContainer) do -- 화면에 표기했던 백로그를 모두 제거합니다. |
pini:DetachDisplay(v,true) |
end |
self.isShowing = false |
self.labelContainer = {} |
if self.clipNode then |
pini:DetachDisplay(self.clipNode) -- ClippingNode 를 제거합니다. |
self.clipNode = nil |
end |
end |
end |
pini.Backlog = newBacklog() -- 상속받아 새로 만든 백로그를, 기존 백로그에 덮어 씌웁니다. |
end |
return m |
결과