0

私はコロナが初めてで、基本的な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
4

1 に答える 1

1

ああ!あなたは前の質問で尋ねました。私はそれに答えるのを忘れていました。

reminderPicker1.increaseHrBtnとにかく、表示オブジェクトには などでアクセスできます reminderPicker1.decreaseHrBtn

self.increaseHrBtnクラスメソッド内では、次のようにアクセスできます 。self.decreaseHrBtn

編集

onRelease = picker.toggleAmPmに変更

onRelease = function() picker_object:toggleAmPm() end 

そしてpicker_object.ampmBtn:setLabel( "PM" )に変更

self.ampmBtn:setLabel( "PM" )

他のすべてのインスタンスについても同じことを行います。そして、あなたは大丈夫です!

于 2012-05-29T17:59:00.490 に答える