考虑到本行业的现状,做图形的需求还真不多,把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']
具体实现的代码太复杂 等有空我再贴