문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. =백로그 상속 예제= ==예제== ===백로그 상속 예제=== <pre style="color: red">※ 2015년 9월 22일 기준, ClippingNode 는 아직 피니엔진에 추가되지 않았으므로, 본 예제의 실습이 불가능합니다. 업데이트를 기다려 주세요!</pre> <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> ===결과=== http://i.imgur.com/wTUN3PZ.gif PiniApi:BacklogOverride 문서로 돌아갑니다.