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

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

熱門標(biāo)簽:百度競價(jià)排名 網(wǎng)站排名優(yōu)化 AI電銷 鐵路電話系統(tǒng) 地方門戶網(wǎng)站 呼叫中心市場需求 Linux服務(wù)器 服務(wù)外包

在 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)是無法支持這種格式的。

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


復(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)


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

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


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

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

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

標(biāo)簽:蘭州 仙桃 崇左 衡水 黃山 湘潭 湖南 銅川

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

    • 400-1100-266