私はコロナが初めてで、基本的なOOPを実行しようとしています。多数のタイム ピッカー ウィジェットを必要とするアプリケーションがあり、インスタンスごとに「タイム ピッカー」クラスを再利用できるようにしたいと考えています。これまでの私のコードは次のとおりです(ベアボーン-timepicker.lua):
module(..., package.seeall)
local widget = require "widget"
picker = {}
picker.__index = picker
function picker.new()
local picker_object = {}
setmetatable(picker_object,picker)
pickerGroup = display.newGroup()
picker_object.theHour = 0
picker_object.theMin = 0
picker_object.am = true
picker_object.increaseHrBtn = widget.newButton{
default="gfx/up_regular.png",
over="gfx/up_press.png",
width=40, height=40,
onRelease = picker.incHr
}
picker_object.decreaseHrBtn = widget.newButton{
default="gfx/down_regular.png",
over="gfx/down_press.png",
width=40, height=40,
onRelease = picker.decHr
}
picker_object.decreaseHrBtn.y = 100
pickerGroup:insert(picker_object.increaseHrBtn.view)
pickerGroup:insert(picker_object.decreaseHrBtn.view)
return picker_object
end
function picker:incHr(event)
print("inc")
end
function picker:decHr(event)
print("dec")
end
そしてここで私はそれをインスタンス化します:
local TimePicker = require("timepicker")
local reminderPicker1 = TimePicker.picker.new()
これにより、画面上で機能するタイム ピッカーが表示されます (いずれにしても、最初の 2 つのボタン)。しかし、このピッカーの表示オブジェクトを取得して、画面上のスクロール ビューに配置したいと考えています。このクラスはオブジェクトを返すため、これをスクロール ビューに挿入することはできません。基本的なことだと思いますが、次に何をする必要があるのか わかりません!誰でも助けることができますか?とても有難い。
編集
クラス内から変数「theHour」と「theMin」にアクセスするのに問題があることを除いて、ほとんどそこにあるように見えるクラスを投稿しています...
module(..., package.seeall)
local widget = require "widget"
picker = {}
picker.__index = picker
function picker.new()
local picker_object = {}
setmetatable(picker_object,picker)
picker_object.theHour = 12
picker_object.theMin = 0
picker_object.am = true
picker_object.increaseHrBtn = widget.newButton{
default="gfx/up_regular.png",
over="gfx/up_press.png",
width=40, height=40,
onRelease = picker.incHr
}
picker_object.decreaseHrBtn = widget.newButton{
default="gfx/down_regular.png",
over="gfx/down_press.png",
width=40, height=40,
onRelease = picker.decHr
}
picker_object.decreaseHrBtn.y = 100
picker_object.hrText = display.newText("12", 6, 41, native.systemFont, 24)
picker_object.hrText:setTextColor(0, 0, 0)
picker_object.dotsText = display.newText(":", 58, 39, native.systemFont, 24)
picker_object.dotsText:setTextColor(0, 0, 0)
picker_object.increaseMinBtn = widget.newButton{
default="gfx/up_regular.png",
over="gfx/up_press.png",
width=40, height=40,
onRelease = picker.incMin
}
picker_object.increaseMinBtn.x = 100
picker_object.decreaseMinBtn = widget.newButton{
default="gfx/down_regular.png",
over="gfx/down_press.png",
width=40, height=40,
onRelease = picker.decMin
}
picker_object.decreaseMinBtn.y = 100
picker_object.decreaseMinBtn.x = 100
picker_object.minText = display.newText("00", 86, 41, native.systemFont, 24)
picker_object.minText:setTextColor(0, 0, 0)
picker_object.ampmBtn = widget.newButton{
default="gfx/blank_normal.png",
over="gfx/blank_press.png",
label = "AM",
font = "Korean Calligraphy",
fontSize = 25,
width=58, height=58,
onRelease = picker.toggleAmPm
}
picker_object.ampmBtn.x = 160
picker_object.ampmBtn.y = 58
return picker_object
end
function picker:getHour()
return self.theHour
end
function picker:getMin()
return self.theMin
end
function picker:incHr(event)
print("inc")
if self.theHour < 12 then
self.theHour = self.theHour + 1
else
self.theHour = 1
end
if self.theHour < 10 then
picker_object.hrText.text = "0"..self.theHour
else
picker_object.hrText.text = self.theHour
end
end
function picker:decHr(event)
print("dec")
if self.theHour > 1 then
self.theHour = self.theHour - 1
else
self.theHour = 12
end
if self.theHour < 10 then
picker_object.hrText.text = "0"..self.theHour
else
picker_object.hrText.text = self.theHour
end
end
function picker:incMin(event)
print("inc")
if self.theMin < 59 then
self.theMin = self.theMin + 1
else
self.theMin = 0
end
if self.theMin < 10 then
picker_object.minText.text = "0"..self.theMin
else
self.minText.text = self.theMin
end
end
function picker:decMin(event)
print("dec")
if self.theMin > 0 then
self.theMin = self.theMin - 1
else
self.theMin = 59
end
if self.theMin < 10 then
picker_object.minText.text = "0"..self.theMin
else
picker_object.minText.text = self.theMin
end
end
function picker:toggleAmPm(event)
if self.am == true then
self.am = false
picker_object.ampmBtn:setLabel( "PM" )
else
self.am = true
picker_object.ampmBtn:setLabel( "AM" )
end
end