[英]Calling a Lua function from within an object instance
我有一個Main lua文件,它創建一個場景,並在場景函數中創建一個Deck對象和一個名為wonGame()的函數,用於檢查何時贏得游戲。
local composer = require("composer")
function scene:create(e)
require "Deck"
myDeck = Deck:new()
function wonGame()
print("You have won the game")
end
end
我的問題-如何在Deck類文件中調用wonGame()函數? 例如,說我在Deck類中有一個名為checkCondition的函數
function checkCondition(e)
if(somethingTrue)
wonGame() --this should be the function in Main file
end
end
您總是可以嘗試實現委托: Wikipedia
基本上,這意味着您在'Deck'中擁有一個屬性,該屬性鏈接回'Scene'。 創建Deck時,您需要設置以下內容
Deck.SceneDelegate = self
然后在Deck,您可以致電
SceneDelegate.wonGame()
您需要兩件事:
要求1表示在Deck代碼中的某處,您具有調用self.onWonGame
代碼。 我不知道Deck的定義,但是可能是這樣的:
function Deck:doSomething()
...
-- if some condition is verified, and the onWonGame callback has been defined, call it:
if self.someCondition and self.onWonGame then
self.onWonGame()
end
...
end
要求2意味着您需要一個數據成員或方法來設置回調。 例:
function Deck:setWonGameCallback(callback)
self.onWonGame = callback
end
以上示例僅允許為Deck實例定義一個回調。 如果您要多個回調,則需要self.onWonGame作為回調表,然后在doSomething
中將遍歷該表並調用每個表。 同樣,在上面的示例中,每個實例都必須調用setWonGameCallback()
。 如果希望所有實例都使用相同的回調,則必須在類而不是實例中定義回調。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.