CEGUI 文本超链接的实现

  考虑到本行业的现状,做图形的需求还真不多,把ui改来改去的需求倒是蛮多 .姐现在貌似沦为ui程序了.

 

方法1 这个很简单 在需要的地方 加window 再贴上图片或者字随便你

 

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的lua代码  其实就是算算 位置了  

遇到的问题是  当时不知道lua中 string.sub 是 对param1

从param2 取到 param3 而不是 从param2

那里取param3那么长

 

方法2 :  系统的复杂的宏观的 方法  用 formatting tag  加入对 link的解析 与处理

 link=123 XXXXXX link=0  都以link=0结尾

从前有只npc他很饿,[link='2']他喝了一杯奶茶之[link='0']

 

具体实现的代码太复杂 等有空我再贴

 

 

 

posted on 2011-11-07 15:02  minggoddess  阅读(436)  评论(0编辑  收藏  举报