CEGUI 텍스트 하이퍼링크 구현

4012 단어 GUI
본 업계의 현황을 감안하면 도형을 만드는 수요가 정말 많지 않다. ui를 이리저리 바꾸는 수요가 매우 많다.언니는 이제 ui프로그램으로 전락한 것 같아.
 
방법1 이거 쉬워요. 필요한 곳에 윈도우를 넣고 그림이나 글씨를 붙여요. 마음대로 하세요.
 
function AddChatNameBtnLua(channelSize,nameSize,strChat)
local winMgr = CEGUI.WindowManager:getSingleton()
local btn = winMgr:createWindow("feitan_G/Button", "_chatName_btn_"..g_NameNum)

if btn~=nil then
--print("channelSize",channelSize,"nameSize",nameSize,"strchat",strChat)
g_NameNum=g_NameNum+1
local ChatData = ChatTextData:GetInstancePtr()
local strBeforeName=string.sub(strChat,0,channelSize)
local strName=string.sub(strChat,8,8+nameSize-1)

local x = ChatData:GetStringWidth(strBeforeName);
local strWidth=ChatData:GetStringWidth(strName)
local strHeight=20--need to be sent
--print(strBeforeName,strName,"x",x,"width",strWidth)

local rect = string.format("{{0.0,%d},{0.0,0},{0.0,%d},{0.0,%d}}",x,x+strWidth,strHeight)
btn:setProperty("UnifiedAreaRect",rect )

btn:subscribeEvent("MouseButtonUp","TargetNameRC")

local ChatWin = winMgr:getWindow("chatWin"..g_WinIndex)
ChatWin:addChildWindow(btn)
end
end

 
여기는 한 itemlist에 button을 넣은 루아 코드인데 사실은 계산 위치예요.
문제에 부딪힌 것은 당시에 루아 중string을 몰랐다는 것이다.sub은 Param1에 대해서.
param2에서 param3을 얻는 것이지 param2에서 얻는 것이 아니다
거기가 Param3만큼 길어요.
 
방법2: 시스템의 복잡한 거시적 방법은formattingtag로link에 대한 해석과 처리를 추가한다
link=123 XXXXXX link=0 모두 link=0으로 마무리
옛날에 npc 한 마리가 배고팠어요. [link='2'] 그는 밀크티 한 잔을 마셨어요. [link='0']
 
구체적으로 구현된 코드가 너무 복잡해서 시간 나면 붙일게요.
 
 

좋은 웹페이지 즐겨찾기