0

コロナの新機能(Actionscriptから来ています)で、いくつかのOOPチュートリアルを実行して、アプリ用の再利用可能なモジュールを作成しようとしています。現在、機能しているように見えるナンバーピッカーに取り組んでいますが、ボタンを押すとエラーがスローされます。「numberPicker.lua」のコードは次のとおりです。

local numberPicker = {}
local numberPicker_mt = { __index = numberPicker }  -- metatable
widget = require "widget"

-------------------------------------------------
-- PUBLIC FUNCTIONS
-------------------------------------------------

function numberPicker.new() -- constructor

local newNP = display.newGroup()
local value = 0

local function dec()
    print("dec")
    if value > 0 then
        value = value - 1
        valueText.text = value
    end
end

local function inc()
    print("inc")
    if value < 100 then
        value = value + 1
        valueText.text = value
    end
end

decrement = widget.newButton{
    default="gfx/dec_normal.png",
    over="gfx/dec_press.png",
    width=58, height=58,
    onRelease = dec
}

valueText = display.newText(value, 70, 10, native.systemFont, 40)
valueText:setTextColor(0, 0, 0)

increment = widget.newButton{
    default="gfx/inc_normal.png",
    over="gfx/inc_press.png",
    width=58, height=58,
    onRelease = inc
}

increment.x = 140

newNP:insert(decrement.view)
newNP:insert(valueText)
newNP:insert(increment.view)
return setmetatable( newNP, numberPicker_mt )
end

return numberPicker

利用方法:

local numberPicker = require( "numberPicker" )
local lengthPicker = numberPicker.new()
scrollView:insert(lengthPicker)

いずれかのボタンを押すと、次のエラーが 2 回出力されます。

Runtime error
attempt to call a nil value
stack traceback:
[C]: ?

手がかりはありますか?ありがとう、エマ。

4

1 に答える 1