佳木斯湛栽影视文化发展公司

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

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

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

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


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

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


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

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


復(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)用對象方法而已。

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)知識點(diǎn)整理匯總

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

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

    • 400-1100-266
    新源县| 江西省| 全椒县| 辰溪县| 阳春市| 岑溪市| 乌兰察布市| 年辖:市辖区| 蓬安县| 防城港市| 定安县| 龙泉市| 清水县| 唐河县| 宜宾县| 津南区| 华坪县| 永济市| 太原市| 南汇区| 象州县| 泸州市| 新民市| 鲜城| 务川| 牟定县| 陆良县| 博客| 鹤壁市| 杭锦旗| 泾阳县| 新郑市| 深州市| 汝州市| 峨边| 青阳县| 和林格尔县| 博客| 交口县| 萍乡市| 滁州市|