Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Corona OOP多个实例共享属性_Oop_Lua_Coronasdk - Fatal编程技术网

Corona OOP多个实例共享属性

Corona OOP多个实例共享属性,oop,lua,coronasdk,Oop,Lua,Coronasdk,对于将OOP应用于Corona,我有点心神不宁。我已经创建了一个类,它是一个时间选择器,我希望在我的应用程序中重复使用多次。我试着将它的两个实例放在同一个故事板场景中,但第一个选择器上的按钮控制数据并在第二个选择器上显示。所以他们共享数据、函数等。我想知道是否有人能告诉我哪里出了问题?这是我的timepicker类(timepicker2.lua): 我有一种感觉,我需要将这些功能与obj联系起来,但我正在为如何做到这一点而苦苦挣扎。希望有人能给我指出正确的方向? 非常感谢 编辑 迄今为止修改(

对于将OOP应用于Corona,我有点心神不宁。我已经创建了一个类,它是一个时间选择器,我希望在我的应用程序中重复使用多次。我试着将它的两个实例放在同一个故事板场景中,但第一个选择器上的按钮控制数据并在第二个选择器上显示。所以他们共享数据、函数等。我想知道是否有人能告诉我哪里出了问题?这是我的timepicker类(timepicker2.lua):

我有一种感觉,我需要将这些功能与obj联系起来,但我正在为如何做到这一点而苦苦挣扎。希望有人能给我指出正确的方向? 非常感谢

编辑

迄今为止修改(和简化)的等级:

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("timepicker2")
local reminderPicker1 = TimePicker.picker.new()

。。。现在想知道如何把这个时间选择器的物理特性放到一个滚动视图中

我对Corona一点也不了解,更不用说它的OOP系统了,但在函数中使用globals的事实引起了怀疑

theHour = 0
theMin = 0
am = true

这些都是全局的,Lua使用全局默认范例。因此,除非您在它们前面加上
local
关键字,否则它们将被整个应用程序共享。

您在这里没有使用OOP!完全 您在这里所做的是声明一个函数(尽管是在一个单独的模块中)并调用它

在这里读一读 这里呢

下面是如何在lua中使用OOP的要点(以及由此产生的Corona)

下面是你如何使用这个类

local dog = animals.new{name="dog"}
local cat = animals.new{name="cat"}

local name = dog:getName()
print(name)   -- prints "dog"

local name = cat:getName()
print(name)   -- prints "cat
您必须注意的是,当您调用一个函数cat:getName而不是cat.getName(使用分号而不是点)时,您将“self”作为参数传递。
自我是“动物”类的“客体”


对不起,我刚开始使用Corona,习惯了ActionScript3的内置OOP,所以我很难理解它。谢谢你的示例,我将尝试将代码应用到我自己的代码中。再次感谢你的代码。我已经开始用它来重建我的课堂,而且似乎进展顺利。我还有一个问题,就是如何从类中返回一组物理按钮等,以便将它们添加到UI中的滚动视图中。谢谢如果希望按钮与每个对象关联,则只需在新函数中创建一个按钮。并添加animal_object.button=按钮。您以后可以在成员函数中以self.button的形式访问它!我已经做到了,但我的问题是,我正在创建这些对象的主场景需要将它们插入到滚动视图中。我无法插入一个对象,它似乎需要一个显示组?将在问题编辑中发布我的代码,向您展示我的意思。
theHour = 0
theMin = 0
am = true
local animals = {}
animals.__index = animals

function animals.new(params)
  local animal_object = {}
  setmetatable(animal_object,animals)

  animal_object.name = params.name

  return animal_object
end

function animals:getName()
   return self.name
end
local dog = animals.new{name="dog"}
local cat = animals.new{name="cat"}

local name = dog:getName()
print(name)   -- prints "dog"

local name = cat:getName()
print(name)   -- prints "cat