PiniApi:BacklogOverride

피니엔진위키미러
이동: 둘러보기, 검색

백로그 상속 예제

예제

백로그 상속 예제

<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


</lnx>


결과

wTUN3PZ.gif