• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Error

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks
            目前覺得比較好的做法,C++寫具體控件效果,lua處理事件響應(yīng)
            <EventList>
                <Event Name="OnCreate" File="LogonWnd.xml.lua" Func="MSG_OnCreate"/>
            </EventList>

            function MSG_OnCreate(self)
            i = 0
            print(self)
            end

            self為事件源注冊到lua中的類型事例。

            迅雷界面庫中還有另一種做法:

            function OnInit()

            local owner = self:GetOwner()

                          local objFactory = XLGetObject("Xunlei.UIEngine.ObjectFactory")
                          local newIcon = objFactory:CreateUIObject("icon2","ImageObject")
                          local xarManager = XLGetObject("Xunlei.UIEngine.XARManager")
                          newIcon:SetResProvider(xarManager)
                          newIcon:SetObjPos(45,165,45+70,165+70)
                          newIcon:SetResID("app.icon2")
                          local function onClickIcon()
                               XLMessageBox("Don't touch me!")
                          end
                          newIcon:AttachListener("OnLButtonDown",true,onClickIcon)
                          self:AddChild(newIcon)
            end

            直接在lua層處理事件,貌似更舒服了。但是所引用的函數(shù)不能是上層C的,也不能有self參數(shù)了,否則內(nèi)存管理又是一大害處。
            這里的AttachListener應(yīng)該和上層的Wnd類或者對應(yīng)的派發(fā)消息的CPP里邊的《EventList》關(guān)聯(lián),貌似這樣能動態(tài)添加消息處理器,而且不用擔(dān)心對象生命周期管理。


            觀摩了一下迅雷的sdk給的粒子,發(fā)現(xiàn)他們可能修改了虛擬機(jī),發(fā)現(xiàn)在不同的文件中會有相同的函數(shù),而且都是全局的,聯(lián)想到前面配置的時(shí)候要給定一個(gè)文件名和一個(gè)函數(shù)名,要么就傻逼的每次調(diào)用前都要loadfile一次,不然很可能修改lua虛擬機(jī),或者lua api支持按文件索引。

            問題:cpp向lua派發(fā)事件的時(shí)候函數(shù)名,名字沖突。迅雷的做法是文件名+函數(shù)名索引,但是目前我的技術(shù)積累做不到。
            解決辦法:
            1.靠自己約定,即自己確保所有l(wèi)ua文件中都沒有相同的函數(shù)
            2.參考魔獸世界,然后加點(diǎn)佐料的做法:<scripts file="LogonWnd.lua" />  <Event EventName="BtnClick" EventSink="LogonWnd.BtnClick">
            也就是默認(rèn)每個(gè)文件名中的所有函數(shù)都在以文件名為名字控件的作用域下

            posted on 2014-06-19 11:56 Enic 閱讀(399) 評論(0)  編輯 收藏 引用 所屬分類: 從零開始寫棋牌游戲平臺
            97久久天天综合色天天综合色hd| 91精品国产综合久久精品| 精品久久久久一区二区三区| 国产成人精品久久亚洲高清不卡| 国产AV影片久久久久久| 亚洲国产精品无码久久青草 | 99久久99这里只有免费费精品| 国产V亚洲V天堂无码久久久| 欧美与黑人午夜性猛交久久久| 人妻无码αv中文字幕久久| 国产午夜电影久久| 精品久久久无码人妻中文字幕| 久久国产精品99精品国产987| 久久人做人爽一区二区三区 | 国产精品中文久久久久久久| 7777久久亚洲中文字幕| 18禁黄久久久AAA片| 国产成人精品久久亚洲高清不卡| 色欲久久久天天天综合网精品| 久久久网中文字幕| 狠狠色丁香婷综合久久| 2021国产精品午夜久久| 久久亚洲国产精品五月天婷| 国产巨作麻豆欧美亚洲综合久久| 综合人妻久久一区二区精品| 亚洲国产日韩欧美综合久久| 人人狠狠综合久久亚洲| 99久久国产综合精品五月天喷水| 久久国产精品无码HDAV| 亚洲AV日韩AV永久无码久久| 2021最新久久久视精品爱 | 日本福利片国产午夜久久| 久久精品水蜜桃av综合天堂| 久久久久亚洲AV成人网人人网站| 色8激情欧美成人久久综合电| 久久精品国产亚洲AV不卡| 99久久亚洲综合精品成人| 999久久久国产精品| 久久久精品国产Sm最大网站| 久久久久国产亚洲AV麻豆| 久久综合视频网站|