两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于引擎Lua腳本應(yīng)用和引擎與Lua腳本相互調(diào)用方法及裝置制造方法

文檔序號:6629981閱讀:394來源:國知局
基于引擎Lua腳本應(yīng)用和引擎與Lua腳本相互調(diào)用方法及裝置制造方法【專利摘要】本發(fā)明實施例公開了一種基于引擎Lua腳本應(yīng)用和引擎與Lua腳本相互調(diào)用方法及裝置,所述的基于引擎Lua腳本應(yīng)用方法,包括:在Lua腳本中注冊所有事件;在引擎中定義發(fā)送列表和接收列表;插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;插入事件消息到發(fā)送列表中;采用本實施例所提供的技術(shù)方案,能夠封裝引擎并通過提供相應(yīng)的接口供Lua腳本與引擎進(jìn)行交互,避免引擎與Lua腳本中的事件嵌套調(diào)用,有效的降低引擎中各個模塊之間的耦合度。由于其獨立性,同時也可以從游戲中分離應(yīng)用與其他的多款游戲中,有利于提高開發(fā)的效率,也方便游戲的升級和更新?!緦@f明】基于引擎Lua腳本應(yīng)用和引擎與Lua腳本相互調(diào)用方法及裝置【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及計算機(jī)軟件領(lǐng)域,尤其涉及一種基于引擎Lua腳本應(yīng)用和引擎與Lua腳本相互調(diào)用方法及裝置?!?br>背景技術(shù)
】[0002]引擎(Engine)是電子平臺上開發(fā)程序或系統(tǒng)的核心組件。利用引擎,開發(fā)者可迅速建立、鋪設(shè)程序所需的功能,或利用其輔助程序的運轉(zhuǎn)。一般而言,引擎是一個程序或一套系統(tǒng)的支持部分。常見的程序引擎有游戲引擎、搜索引擎、殺毒引擎等。[0003]在游戲中,玩家所體驗到的劇情、關(guān)卡、美工、音樂、操作等內(nèi)容都是由游戲的引擎直接控制的,它扮演著中場發(fā)動機(jī)的角色,把游戲中的所有元素捆綁在一起,在后臺指揮它們同時、有序地工作。簡單地說,引擎就是"用于控制所有游戲功能的主程序,從計算碰撞、物理系統(tǒng)和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等。"[0004]Lua是一個小巧的腳本語言。該語言的設(shè)計目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。Lua腳本可以很容易的被C/C++代碼調(diào)用,也可以反過來調(diào)用C/C++的函數(shù),這使得Lua在應(yīng)用程序中可以被廣泛應(yīng)用。Lua提供了非常易于使用的擴(kuò)展接口和機(jī)制,幾乎在所有操作系統(tǒng)和平臺上都可以編譯和運行。[0005]在程序開發(fā)中,一部分事件會注冊在Lua腳本中,另一部分則注冊在引擎中,由系統(tǒng)在執(zhí)行中執(zhí)行嵌套調(diào)用。在程序修改調(diào)試時,由于事件函數(shù)經(jīng)常在Lua腳本與引擎之間相互調(diào)用,雜亂無章、會使程序員感覺無從下手;此外,現(xiàn)有的程序開發(fā)周期較短,后期維護(hù)升級次數(shù)較多,事件注冊分散在Lua腳本與引擎中會給升級維護(hù)帶來極大的麻煩。[0006]有鑒于此,如何能將引擎封裝并提供的相應(yīng)接口使得Lua腳本與引擎之間能夠相互調(diào)用是當(dāng)前所要解決的問題。【
發(fā)明內(nèi)容】[0007]本發(fā)明的目的在于提出一種基于引擎Lua腳本應(yīng)用方法和Lua腳本與引擎相互調(diào)用的方法及裝置,利用LUA腳本編寫游戲上層邏輯事件處理機(jī)制和UI(界面設(shè)計)部分事件,能夠封裝引擎并通過提供相應(yīng)的接口供Lua腳本與引擎進(jìn)行交互,避免引擎與Lua腳本中的事件嵌套調(diào)用,有效的降低引擎中各個模塊之間的耦合度,由于其獨立性,同時也可以從游戲中分離應(yīng)用與其他的多款游戲中,有利于提高開發(fā)的效率,也方便游戲的升級和更新。[0008]第一方面,本發(fā)明實施例提供了一種基于引擎高效的Lua腳本應(yīng)用方法,包括:[0009]在Lua腳本中注冊所有事件;[0010]在引擎中定乂發(fā)送列表和接收列表;[0011]插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;[0012]插入事件消息到發(fā)送列表中;[0013]第二方面,本發(fā)明實施例提供了一種基于引擎高效的Lua腳本應(yīng)用的裝置,包括:[0014]注冊單元,用于在Lua腳本中注冊所有事件;[0015]定義單元,用于在引擎中定義發(fā)送列表和接收列表;[0016]接收列表插入單元,用于插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;[0017]發(fā)送列表插入單元,用于插入事件消息到發(fā)送列表中;[0018]采用本實施例所提供的技術(shù)方案,能夠封裝引擎并通過提供相應(yīng)的接口供Lua腳本與引擎進(jìn)行交互,避免引擎與Lua腳本中的事件嵌套調(diào)用,有效的降低引擎中各個模塊之間的耦合度。[0019]第三方面,本發(fā)明實施例提供了一種Lua腳本與引擎相互調(diào)用的方法,包括:[0020]在Lua腳本中注冊所有事件;[0021]在引擎中定義發(fā)送列表和接收列表;[0022]插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;[0023]插入事件消息到發(fā)送列表中;[0024]遍歷發(fā)送列表,確定接收列表與發(fā)送列表事件名相同,調(diào)用接收列表的該事件的回調(diào)函數(shù)。[0025]第四方面,本發(fā)明實施例還提供了一種Lua腳本與引擎相互調(diào)用的裝置,包括:[0026]注冊單元,用于在Lua腳本中注冊所有事件;[0027]定義單元,用于在引擎中定義發(fā)送列表和接收列表;[0028]接收列表插入單元,用于插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;[0029]發(fā)送列表插入單元,用于插入事件消息到發(fā)送列表中;[0030]遍歷單元,用于遍歷發(fā)送列表;[0031]調(diào)用處理單元,用于確定接收列表與發(fā)送列表事件名相同,調(diào)用接收列表的該事件的回調(diào)函數(shù)。[0032]采用本實施例所提供的技術(shù)方案,能夠?qū)崿F(xiàn)在引擎封裝的基礎(chǔ)上,通過相應(yīng)的接口使Lua腳本與引擎進(jìn)行交互,借助Lua的輕量級、可拓展的優(yōu)點降低開發(fā)過程中開發(fā)成本及風(fēng)險,提高了開發(fā)的效率?!緦@綀D】【附圖說明】[0033]圖1是本發(fā)明第一實施例提供的基于引擎Lua腳本應(yīng)用方法的流程圖;[0034]圖2是本發(fā)明第二實施例提供的基于引擎Lua腳本應(yīng)用方法的流程圖;[0035]圖3是本發(fā)明第三實施例提供的基于引擎Lua腳本應(yīng)用方法的流程圖;[0036]圖4是本發(fā)明第四實施例提供的基于引擎Lua腳本應(yīng)用裝置的結(jié)構(gòu)圖;[0037]圖5是本發(fā)明第五實施例提供的Lua腳本與引擎相互調(diào)用方法的流程圖;[0038]圖6是本發(fā)明第六實施例提供的Lua腳本與引擎相互調(diào)用裝置的結(jié)構(gòu)圖。【具體實施方式】[0039]下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。[0040]圖1示出了本發(fā)明的第一實施例。[0041]圖1是本發(fā)明第一實施例提供的引擎與Lua腳本相互調(diào)用的方法的流程圖,所述的引擎與Lua腳本相互調(diào)用的方法包括:[0042]步驟S101,在Lua腳本中注冊所有事件。[0043]Lua腳本是基于事件的驅(qū)動,這種事件可以是控制角色運動、鍵盤、鼠標(biāo)、網(wǎng)絡(luò)、自定義事件消息等。Lua最流行的應(yīng)用場景是在游戲中作為處理邏輯的腳本,即用來編寫游戲的任務(wù)腳本,以實現(xiàn)游戲的可配置性和可擴(kuò)展性。例如與游戲中的相應(yīng)劇本發(fā)展、故事情節(jié)等都是由相應(yīng)的腳本系統(tǒng)來完成。[0044]在Lua腳本中利用關(guān)鍵字regevent注冊事件,這樣可以保證Lua腳本調(diào)用C++函數(shù),其定義格式為:[0045]regevent(注冊事件名,事件回調(diào)函數(shù),過濾參數(shù))[0046]其中注冊事件名為:事件消息名,例如鼠標(biāo)事件、鍵盤事件、網(wǎng)絡(luò)事件等,事件回調(diào)函數(shù),與注冊事件名相對應(yīng),每一個事件消息對應(yīng)一個事件回調(diào)函數(shù)。過濾參數(shù),觸發(fā)該消息事件需要滿足一定的條件才可以回調(diào)消息函數(shù),例如:當(dāng)觸發(fā)按下鍵盤A鍵時,才會回調(diào)按下A鍵時的回調(diào)函數(shù),而不是只要有鍵盤的任意鍵按下就觸發(fā)的。Lua采用通用類型的表(table),用它可以實現(xiàn)數(shù)組、哈希表、集合、對象語言內(nèi)置模式匹配。[0047]通過在Lua腳本中注冊全部的事件,將與游戲中設(shè)定劇本的事件全部放在Lua腳本中,不必在引擎中編寫相應(yīng)的復(fù)雜且臃腫的硬編碼,可以保持引擎內(nèi)核的完整性,便于封裝引擎。[0048]步驟S102,在引擎中定義發(fā)送列表和接收列表。[0049]引擎(Engine)是電子平臺上開發(fā)程序或系統(tǒng)的核心組件。利用引擎,開發(fā)者可迅速建立、鋪設(shè)程序所需的功能,或利用其輔助程序的運轉(zhuǎn)。一般而言,引擎是一個程序或一套系統(tǒng)的支持部分。常見的程序引擎有游戲引擎,搜索引擎,殺毒引擎等。[0050]游戲引擎是指一些已編寫好的可編輯電腦游戲系統(tǒng)或者一些交互式實時圖像應(yīng)用程序的核心組件。這些系統(tǒng)為游戲設(shè)計者提供各種編寫游戲所需的各種工具,其目的在于讓游戲設(shè)計者能容易和快速地做出游戲程式而不用由零開始。[0051]游戲引擎是一個為運行某一類游戲的機(jī)器設(shè)計的能夠被機(jī)器識別的代碼(指令)集合。游戲引擎則是按游戲設(shè)計的要求順序的調(diào)用這些資源。在游戲引擎中引入腳本系統(tǒng)主要是靈活的控制游戲的,還能對其進(jìn)行及時拓展和升級。對于殺毒引擎和搜索引擎來說,引入腳本可以方便的拓展其所對應(yīng)的功能。[0052]首先在引擎中定義兩個表,分別為發(fā)送列表與接收列表,發(fā)送列表用以存儲事件消息的相應(yīng)名稱,接收列表用以存儲事件消息的相應(yīng)名稱及該事件所對應(yīng)的回調(diào)函數(shù)。[0053]引擎包括起控制作用的代碼,可以采用C語言、C++或者VB等多種語言來實現(xiàn),可以通過上述語言實現(xiàn)定義發(fā)送列表和接收列表。[0054]步驟S103,插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。[0055]當(dāng)加載LUA腳本時,可以獲取到相應(yīng)事件消息的回調(diào)函數(shù),并將該事件消息的名稱及該事件消息所調(diào)用的事件函數(shù)插入到接收列表中。有些回調(diào)函數(shù)還會有相應(yīng)的過濾參數(shù),一些觸發(fā)該消息事件還需要滿足一定的條件才可以回調(diào)消息函數(shù),例如:當(dāng)觸發(fā)按下鍵盤A鍵時,才會回調(diào)按下A鍵時的回調(diào)函數(shù),而不是只要有鍵盤的任意鍵按下就觸發(fā)的。對于包括過濾參數(shù)的回調(diào)函數(shù),也應(yīng)該將該回調(diào)函數(shù)對應(yīng)的過濾參數(shù)一并插入到接收列表中。加載Lua腳本文件有很多,每個文件都有一個或者多個事件消息,會統(tǒng)一的把這些消息插入到接收列表中。[0056]步驟S104,插入事件消息到發(fā)送列表中。[0057]Lua腳本是基于事件的驅(qū)動,這種事件可以是控制角色運動、鍵盤、鼠標(biāo)、網(wǎng)絡(luò)、自定義事件消息等,把事件消息的相應(yīng)標(biāo)識插入到發(fā)送列表中,在本實施例中,事件消息的相應(yīng)標(biāo)識為事件消息的名稱。每一個事件消息都對應(yīng)一個事件名稱,當(dāng)觸發(fā)相應(yīng)的事件時,把事件消息的相應(yīng)名稱插入到發(fā)送列表中。[0058]本實施例通過在Lua腳本中注冊所有事件,引擎中定義發(fā)送列表和接收列表;插入事件消息到發(fā)送列表中;插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。通過上述步驟,與游戲中設(shè)定劇本的事件全部放在Lua腳本中,不必在引擎中編寫相應(yīng)的復(fù)雜且臃腫的硬編碼,可以保持引擎內(nèi)核的完整性,便于封裝引擎;在引擎中定義發(fā)送和接收列表,使得Lua腳本中的事件與引擎中的回調(diào)函數(shù)建立相應(yīng)的聯(lián)系,方便Lua腳本與引擎進(jìn)行交互。[0059]圖2示出了本發(fā)明的第二實施例。[0060]圖2是本發(fā)明第二實施例提供的引擎與Lua腳本相互調(diào)用的方法的流程圖,本實施例以第一實施例為基礎(chǔ),包括:[0061]步驟S201,在Lua腳本中注冊所有事件.[0062]在Lua腳本中利用關(guān)鍵字regevent注冊事件,這樣可以保證Lua腳本調(diào)用C++函數(shù),其定義格式為:[0063]regevent(注冊事件名,事件回調(diào)函數(shù),過濾參數(shù))[0064]步驟S202,在引擎中定義發(fā)送列表和接收列表。[0065]在引擎中定義兩個表,分別為發(fā)送列表與接收列表,發(fā)送列表用以存儲事件消息的相應(yīng)名稱,接收列表用以存儲事件消息的相應(yīng)名稱及該事件所對應(yīng)的回調(diào)函數(shù)。[0066]步驟S203,加載Lua腳本;[0067]步驟S204,調(diào)用regevent()獲取該消息事件的回調(diào)函數(shù);[0068]通過Lua腳本中的regevent()獲取該事件消息所對應(yīng)的回調(diào)函數(shù)。加載Lua腳本文件有很多,每個文件都有一個或者多個事件消息,會統(tǒng)一的把這些事件消息插入到接收列表中。[0069]步驟S205,插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。[0070]將上一步驟所獲取的該事件消息的名稱及該事件消息所調(diào)用的事件函數(shù)插入到接收列表中,對于包括過濾參數(shù)的回調(diào)函數(shù),也應(yīng)該將該回調(diào)函數(shù)對應(yīng)的過濾參數(shù)一并插入到接收列表中。[0071]步驟S206,插入事件消息到發(fā)送列表中。[0072]當(dāng)觸發(fā)相應(yīng)的消息事件時,把事件消息的相應(yīng)標(biāo)識插入到發(fā)送列表中,在本實施例中,事件消息的相應(yīng)標(biāo)識為事件消息的名稱。[0073]本實施例通過在引擎中定義發(fā)送列表與接收列表,并將事件消息的相應(yīng)名稱插入到發(fā)送列表中,通過加載Lua腳本將對應(yīng)的將事件消息所對應(yīng)的名稱及回調(diào)函數(shù)插入到接收列表中;使得Lua腳本與引擎之間通過事件消息建立相應(yīng)的聯(lián)系。[0074]圖3示出了本發(fā)明的第三實施例。[0075]圖3是本發(fā)明第三實施例提供的一種基于引擎Lua腳本應(yīng)用方法的流程示意圖,本實施例以第一實施例為基礎(chǔ),包括:[0076]步驟S301,在Lua腳本中注冊所有事件.[0077]在Lua腳本中利用關(guān)鍵字regevent注冊事件,這樣可以保證LUA腳本調(diào)用C++函數(shù),其定義格式為:[0078]regevent(注冊事件名,事件回調(diào)函數(shù),過濾參數(shù))[0079]步驟S302,在引擎中定義發(fā)送列表和接收列表。[0080]在引擎中定義兩個表,分別為發(fā)送列表與接收列表,發(fā)送列表用以存儲事件消息的相應(yīng)名稱,接收列表用以存儲事件消息的相應(yīng)名稱及該事件所對應(yīng)的回調(diào)函數(shù)。[0081]步驟S303,插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。[0082]當(dāng)加載Lua腳本時,可以獲取到相應(yīng)事件消息的回調(diào)函數(shù),并將該事件消息的名稱及該事件消息所調(diào)用的事件函數(shù)插入到接收列表中。[0083]步驟S304,檢測Lua腳本;[0084]檢測Lua腳本,用以確定Lua腳本是否與原來有所變化。[0085]步驟S305,確定Lua腳本中事件消息已被修改,修改接收列表中該Lua腳本中事件消息與其對應(yīng)的回調(diào)函數(shù)。[0086]步驟S306,確定Lua腳本中事件消息已被刪除,刪除接收列表中該Lua腳本中事件消息與其對應(yīng)的回調(diào)函數(shù)。[0087]根據(jù)上一步驟檢測Lua腳本的結(jié)果,如果Lua文件被卸載時,則需要清除接收列表中該Lua腳本中事件消息與其對應(yīng)的回調(diào)函數(shù)。如果Lua文件中部分注冊事件也被刪除,則需要將接收列表中與之相對應(yīng)的事件消息與回調(diào)函數(shù)清除。[0088]步驟S307,插入事件消息到發(fā)送列表中。[0089]當(dāng)觸發(fā)相應(yīng)的消息事件時,把事件消息的相應(yīng)標(biāo)識插入到發(fā)送列表中,在本實施例中,事件消息的相應(yīng)標(biāo)識為事件消息的名稱。[0090]根據(jù)上一步驟檢測Lua腳本的結(jié)果,如果Lua腳本中事件消息已經(jīng)被修改,則需要對接收列表中原來該Lua腳本中事件消息及其所對應(yīng)的回調(diào)函數(shù)進(jìn)行相應(yīng)的修改,以保證Lua腳本中注冊的事件消息與其對應(yīng)的回調(diào)函數(shù)與接收列表中的事件消息與其對應(yīng)的回調(diào)函數(shù)保持一致。[0091]本實施例在第一實施例的基礎(chǔ)上,通過對Lua腳本進(jìn)行檢測,對于Lua列表中的注冊事件的變化在接收列表中予以更新,保證Lua腳本與接收列表中的相應(yīng)信息保持一致。[0092]圖4示出了本發(fā)明的第四實施例。[0093]圖4是本發(fā)明第四實施例所提供的基于引擎高效的Lua腳本應(yīng)用裝置圖[0094]由圖4可以看出,所述的基于引擎高效的Lua腳本應(yīng)用裝置包括:注冊單元401,用于在Lua腳本中注冊所有事件;定義單元402、接收列表插入單元403、發(fā)送列表插入單元404。[0095]所述的注冊單元,用于在Lua腳本中注冊所有事件;[0096]所述的定義單元,用于在引擎中定義發(fā)送列表和接收列表;[0097]所述的接收列表插入單元,用于插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;[0098]所述的發(fā)送列表插入單元,用于插入事件消息到發(fā)送列表中。[0099]進(jìn)一步的,所述的接收列表插入單元具體用于:[0100]加載Lua腳本;調(diào)用regevent()獲取該消息事件的回調(diào)函數(shù);插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。[0101]上述基于引擎高效的Lua腳本應(yīng)用裝置可執(zhí)行本發(fā)明實施例所基于引擎高效的Lua腳本應(yīng)用的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。[0102]圖5示出了本發(fā)明的第五實施例。[0103]圖5是本發(fā)明第五實施例提供的Lua腳本與引擎相互調(diào)用的方法的流程圖;[0104]本實施例以第一實施例為基礎(chǔ),包括:[0105]步驟S501,在Lua中注冊所有事件。[0106]Lua腳本是基于事件的驅(qū)動,這種事件可以是控制角色運動、鍵盤、鼠標(biāo)、網(wǎng)絡(luò)、自定義事件消息,在腳本中每個功能都有不同的模塊,每個模塊都會調(diào)用相應(yīng)的事件接口,但是只有觸發(fā)該事件,才會把參數(shù)傳入事件回調(diào)函數(shù),來完成該事件的功能。[0107]在Lua腳本中利用關(guān)鍵字regevent注冊事件,這樣可以保證LUA腳本調(diào)用C++函數(shù),其定義格式為:[0108]regevent(注冊事件名,事件回調(diào)函數(shù),過濾參數(shù))[0109]其中注冊事件名為:事件消息名,例如鼠標(biāo)事件、鍵盤事件、網(wǎng)絡(luò)事件等,事件回調(diào)函數(shù),與注冊事件名相對應(yīng),每一個事件消息對應(yīng)一個事件回調(diào)函數(shù)。過濾參數(shù),觸發(fā)該消息事件需要滿足一定的條件才可以回調(diào)消息函數(shù),例如:當(dāng)觸發(fā)按下鍵盤A鍵時,才會回調(diào)按下A鍵時的回調(diào)函數(shù),而不是只要有鍵盤的任意鍵按下就觸發(fā)的。Lua采用通用類型的表(table),用它可以實現(xiàn)數(shù)組、哈希表、集合、對象語言內(nèi)置模式匹配。[0110]觸發(fā)一個消息事件時,可能會觸發(fā)一連串與之相關(guān)聯(lián)的其他消息事件,在注冊事件的實現(xiàn)是在回調(diào)函數(shù)里面,這些回調(diào)函數(shù)同時也是執(zhí)行Lua腳本的入口點,其定義格式為:[0111]Function事件回調(diào)函數(shù)名(參數(shù))[0112]函數(shù)體[0113]End[0114]步驟S502,在引擎中定義發(fā)送列表和接收列表。[0115]首先在引擎中定義兩個表,分別為發(fā)送列表與接收列表,發(fā)送列表用以存儲事件消息的相應(yīng)名稱,接收列表用以存儲事件消息的相應(yīng)名稱及該事件所對應(yīng)的回調(diào)函數(shù)。[0116]步驟S503,插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。[0117]獲取到相應(yīng)事件消息的回調(diào)函數(shù),并將該事件消息的名稱及該事件消息所調(diào)用的事件函數(shù)插入到接收列表中,對于包括過濾參數(shù)的回調(diào)函數(shù),也應(yīng)該將該回調(diào)函數(shù)對應(yīng)的過濾參數(shù)一并插入到接收列表中。[0118]步驟S504,插入事件消息到發(fā)送列表中。[0119]當(dāng)觸發(fā)相應(yīng)的消息事件時,把事件消息的相應(yīng)標(biāo)識插入到發(fā)送列表中,在本實施例中,事件消息的相應(yīng)標(biāo)識為事件消息的名稱。[0120]步驟S505,遍歷發(fā)送列表。[0121]通過遍歷發(fā)送列表,來尋找對應(yīng)的事件消息所對應(yīng)的事件名稱,在本實施例中采用幀循環(huán)來完成對發(fā)送列表的遍歷,幀循環(huán)近似于設(shè)置事件偵聽器,監(jiān)聽用戶事件,用戶事件是指用戶所做的一些事,基本上就是鼠標(biāo)和鍵盤兩種。通過偵聽用戶事件,獲取是否有用戶事件觸發(fā)。[0122]步驟S506,確定接收列表與發(fā)送列表事件名相同,調(diào)用接收列表的該事件的回調(diào)函數(shù)。[0123]當(dāng)接收列表與發(fā)送列表中用戶所觸發(fā)的事件名稱相同時,可以看作是同一事件消息,通過接收列表中所插入的事件名稱和回調(diào)函數(shù)來調(diào)用該事件的回調(diào)函數(shù)。有些回調(diào)函數(shù)還會有相應(yīng)的過濾參數(shù),一些觸發(fā)該消息事件還需要滿足一定的條件才可以回調(diào)消息函數(shù),例如:當(dāng)觸發(fā)按下鍵盤A鍵時,才會回調(diào)按下A鍵時的回調(diào)函數(shù),而不是只要有鍵盤的任意鍵按下就觸發(fā)的。這些過濾參數(shù)也會被插入接收列表中,當(dāng)滿足過濾參數(shù)時,才會調(diào)用該事件的回調(diào)函數(shù)。當(dāng)接收列表事件名與發(fā)送列表事件名相同,就會調(diào)用接收列表中的事件回調(diào),而此時的事件回調(diào)又執(zhí)行LUA中相應(yīng)的事件回調(diào)函數(shù)。在C++中邏輯代碼如下:【權(quán)利要求】1.一種基于引擎Lua腳本應(yīng)用方法,包括:在Lua腳本中注冊所有事件;在引擎中定義發(fā)送列表和接收列表;插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;插入事件消息到發(fā)送列表中。2.根據(jù)權(quán)利要求1所述的基于引擎Lua腳本應(yīng)用方法,其特征在于,所述插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表具體包括:加載Lua腳本;調(diào)用事件注冊函數(shù)獲取插入發(fā)送列表的事件消息的回調(diào)函數(shù);插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。3.根據(jù)權(quán)利要求1所述的引基于引擎Lua腳本應(yīng)用方法,其特征在于:所述的插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)還包括插入事件消息對應(yīng)的回調(diào)函數(shù)的過濾參數(shù)到接收列表。4.根據(jù)權(quán)利要求1所述的基于引擎Lua腳本應(yīng)用方法,其特征在于:所述的基于引擎Lua腳本應(yīng)用方法還包括:檢測Lua腳本;確定Lua腳本中事件消息已被修改,修改接收列表中接收列表中被修改的Lua腳本中事件消息與其對應(yīng)的回調(diào)函數(shù);確定Lua腳本中事件消息已被刪除,刪除接收列表中被刪除的Lua腳本中事件消息與其對應(yīng)的回調(diào)函數(shù)。5.-種Lua腳本與引擎相互調(diào)用的方法,包括:在Lua腳本中注冊所有事件;在引擎中定義發(fā)送列表和接收列表;插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;插入事件消息到發(fā)送列表中;遍歷發(fā)送列表,確定接收列表與發(fā)送列表事件名相同,調(diào)用接收列表的該事件的回調(diào)函數(shù)。6.-種基于引擎Lua腳本應(yīng)用裝置,包括:注冊單元,用于在Lua腳本中注冊所有事件;定義單元,用于在引擎中定義發(fā)送列表和接收列表;發(fā)送列表插入單元,用于插入事件消息到發(fā)送列表中;接收列表插入單元,用于插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。7.根據(jù)權(quán)利要求6所述的基于引擎高效的Lua腳本應(yīng)用裝置,其特征在于:所述的接收列表插入單元具體用于:加載Lua腳本;調(diào)用事件注冊函數(shù)獲取該消息事件的回調(diào)函數(shù);插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表。8.根據(jù)權(quán)利要求6所述的基于引擎Lua腳本應(yīng)用裝置,其特征在于:所述的引擎與Lua腳本相互調(diào)用的裝置還包括:檢測單元,用以檢測Lua腳本;接收列表修改單元,用于在確定Lua腳本中事件消息已被修改時,修改接收列表中被修改的Lua腳本中事件消息與其對應(yīng)的回調(diào)函數(shù);接收列表刪除單元,用于在確定Lua腳本中事件消息已被刪除時,刪除接收列表中被刪除的Lua腳本中事件消息與其對應(yīng)的回調(diào)函數(shù)。9.一種Lua腳本與引擎相互調(diào)用的裝置,包括:注冊單元,用于在Lua腳本中注冊所有事件;定義單元,用于在引擎中定義發(fā)送列表和接收列表;發(fā)送列表插入單元,用于插入事件消息到發(fā)送列表中;接收列表插入單元,用于插入事件消息及該事件消息對應(yīng)的回調(diào)函數(shù)到接收列表;遍歷單元,用于遍歷發(fā)送列表;調(diào)用處理單元,用于確定接收列表與發(fā)送列表事件名相同,調(diào)用接收列表的該事件的回調(diào)函數(shù)。【文檔編號】G06F9/44GK104317578SQ201410537544【公開日】2015年1月28日申請日期:2014年10月13日優(yōu)先權(quán)日:2014年10月13日【發(fā)明者】張翼申請人:無錫梵天信息技術(shù)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
武夷山市| 阜南县| 兰溪市| 汉沽区| 长兴县| 西宁市| 措美县| 正镶白旗| 和顺县| 巴彦淖尔市| 平舆县| 台南市| 泗洪县| 丰宁| 正蓝旗| 贵南县| 积石山| 滦南县| 定南县| 崇左市| 周宁县| 武义县| 长泰县| 博兴县| 伽师县| 德昌县| 黄陵县| 乐清市| 台前县| 奉节县| 澜沧| 扎囊县| 甘谷县| 杨浦区| 神木县| 庆城县| 溧水县| 光泽县| 呼和浩特市| 呈贡县| 锡林浩特市|