1

関数を別の関数のパラメータとして渡そうとしています。

高レベル ポップアップ ウィンドウを作成するコードがあります。ポップアップ ウィンドウを新しいテキストで更新するときに、ユーザーがポップアップ ウィンドウをクリックしたときに発生するアクションも更新したいと考えています。たとえば、ポップアップ ウィンドウを初めて更新するときに、新しいテキストでポップアップ ウィンドウを再度表示するようにアクションを変更する場合があります。ユーザーが 2 番目をクリックしたとき

概念を説明するためのサンプルコードを次に示します

function doSomething()
   print("this is a sample function")
end

function createPopup()
    local popup = display.newRect  ... create some display object
    function popup:close()
        popup.isVisible = false
     end
    function popup:update(options)
        if options.action then
            function dg:touch(e)

                 -- do the action which is passed as options.action

            end
        end
    end
    popup:addEventListener("touch",popup)
    return popup
end

local mypopup = createPopup()

mypopup:update({action = doSomething()})
4

2 に答える 2

6

このように呼び出すことができます

function doSomething()
   print("this is a sample function")
end

function createPopup()
    local popup = display.newRect  ... create some display object
    function popup:close()
        popup.isVisible = false
     end
    function popup:update(options)
        if options.action then
            function dg:touch(e)
                options.action() -- This is how you call the function
            end
        end
    end
    popup:addEventListener("touch",popup)
    return popup
end

local mypopup = createPopup()

mypopup:update({action = doSomething})
于 2013-07-22T00:36:29.290 に答える
0

警告時にテキスト メッセージを変更する方法が異なります。このコードを参照してください。四角形をクリックすると、2 回目にクリックするとメッセージが変更されます。

local Message = "My Message"
local Title = "My Title"
local nextFlag = false


local function onTap()  
local alert = native.showAlert( Title, Message, { "OK", "Cancel" }, onComplete )
end


function onComplete( event )

    if nextFlag == true then
        if "clicked" == event.action then
           local i = event.index
           Message = "My Message"
           Title = "My Title"
           if 1 == i then
           nextFlag = false
           -- you can add an event here
        elseif 2 == i then
           -- if click cancel do nothing
        end
       end

    else
        if "clicked" == event.action then
         local i = event.index
        Message = "Change message"
            Title = "Change Title"
         if 1 == i then
            nextFlag = true
            -- you can add an event here
          elseif 2 == i then
            -- if click cancel do nothing
        end
       end
    end

end

local rectangle = display.newRect(120,200, 100,100)
rectangle:addEventListener("tap", onTap)
于 2013-07-22T00:47:43.180 に答える