主頁(yè) > 知識(shí)庫(kù) > Lua中讓回調(diào)函數(shù)支持回調(diào)對(duì)象方法的解決方法

Lua中讓回調(diào)函數(shù)支持回調(diào)對(duì)象方法的解決方法

熱門(mén)標(biāo)簽:漳州智云呼電話機(jī)器人 怎么去除地圖標(biāo)注 地圖標(biāo)注大廈 百度地圖標(biāo)注早餐區(qū)域 新岸線智能電銷機(jī)器人 清朝地圖標(biāo)注哈爾濱 個(gè)人怎么在地圖標(biāo)注需要的店鋪 冀州市地圖標(biāo)注 武漢外呼防封系統(tǒng)多少錢(qián)

在 Cocos2d-Lua 中,存在很多異步或延遲的操作,例如后臺(tái)加載圖片、等待一定時(shí)間執(zhí)行代碼等。這些功能的函數(shù)通常要求傳入一個(gè) function 作為參數(shù)。


復(fù)制代碼 代碼如下:

-- 在后臺(tái)加載一個(gè)圖像,加載完成后輸出消息
display.addImageAsync("hello.png", function()
    print("load hello.png completed")
end)


但如果我們希望這種回調(diào)支持一個(gè)對(duì)象方法,就有點(diǎn)小困難了。因?yàn)?Lua 的對(duì)象方法在調(diào)用時(shí)需要使用 object:method() 形式,而回調(diào)是無(wú)法支持這種格式的。

好在 Lua 強(qiáng)大的閉包功能不但好用而且對(duì)性能無(wú)影響,所以我們可以將代碼改寫(xiě)為:


復(fù)制代碼 代碼如下:

local MyClass = class("MyClass")

function MyClass:print()
    print("load hello.png completed")
end

----

local my = MyClass.new()

display.addImageAsync("hello.png", function()
    my:print()
end)


原理非常簡(jiǎn)單,就是在匿名函數(shù)里調(diào)用對(duì)象方法而已。

Quick 框架里已經(jīng)提供了更簡(jiǎn)單的使用方法 handler() 函數(shù):


復(fù)制代碼 代碼如下:

display.addImageAsync("hello.png", hander(my, my.print))

您可能感興趣的文章:
  • Lua中的string庫(kù)(字符串函數(shù)庫(kù))總結(jié)
  • Lua中的模塊與module函數(shù)詳解
  • Lua中的函數(shù)相關(guān)知識(shí)點(diǎn)整理匯總

標(biāo)簽:金昌 德宏 天門(mén) 宣城 儋州 臺(tái)灣 天門(mén) 濰坊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中讓回調(diào)函數(shù)支持回調(diào)對(duì)象方法的解決方法》,本文關(guān)鍵詞  Lua,中,讓,回調(diào),函數(shù),支持,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中讓回調(diào)函數(shù)支持回調(diào)對(duì)象方法的解決方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Lua中讓回調(diào)函數(shù)支持回調(diào)對(duì)象方法的解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章