Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6023407
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T04:00:01+00:00 2026-05-23T04:00:01+00:00

I’m using the LUA middleclass library now after some problems and I have a

  • 0

I’m using the LUA middleclass library now after some problems and I have a situation that I can’t seem to figure out.

Say I have my class: EDIT: Had a typo: here is the actual functions

require "middleclass"
weaponCanon2 = class("weaponCanon2")

function weaponCanon2:onWeaponCollision(event)
   if (event.phase == "began") then
      if (event.other.name ~= "ground") then
         self.canonBall.inAir = false
      end
   end
end

function weaponCanon2:initialize(atX, atY, inGroup)
self.name = "some value"
self.someObject:addEventListener("touch", **weaponCanon2.onWeaponCollision**)
...
end

When I do this, every variable such as self.name in the above example is now nil. I believe this to be because my function is:

function weaponCanon2:onWeaponCollision(event)
   ...
end

Then setting a collision event varible like self.collisionEvent = weaponCanon2.onWeaponCollision is not the same thing. I am not 100% sure what the difference between the : and . operator is in terms of LUA but these give me different problems.

Now another example is that I have a reset function. A timer goes off and then calls a reset function. If I do this:

timer.performWithDelay(100, weaponCanon2.resetShot, 1)

Then in 100ms it will call weaponCAnon2.resetShot 1 time. When it does this all my self.name etc variables are nil. Now if I create my class:

require("weaponCanon2")
local canon = weaponCanon2:new("someName")
canon:saveInstance(canon)

then back in my class file I have:

function saveInstance(value)
   self.instance = value
end

Now I can use this timer by calling it like so:

timer.performWithDelay(100, function() self.instance:resetShot(); end, 1)

This will work without any of my member variables (self.name) being == to nil. Is there a better/easier way to do this when using your library or in LUA?

Sorry for being unclear I’m having trouble wrapping my mind around this problem and explaining it is being very difficult.

Thanks for the help,

-d

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T04:00:02+00:00Added an answer on May 23, 2026 at 4:00 am

    [EDIT 3] Ok I think I understand the problem now.

    In lua, making this:

    function something:foo(bar, baz)
    

    Is the same as making this:

    function something.foo(self, bar, baz)
    

    In other words: the ‘:’ operator simply adds a “phantom” self parameter. Similarly, when you do invoke a function with it:

    something:foo(bar, baz)
    

    The ‘:’ is automatically “filling in” the self parameter with the value of something. It’s equivalent to:

    something.foo(something, bar, baz)
    

    In short: weaponCanon2.onWeaponCollision takes two parameters in reality: self and event.

    But Corona will only pass it one parameter: event. You have to trick Corona into passing the parameter you want; A possible solution is wrapping your function into another function, like this:

    self.someObject:addEventListener("touch", function(event) self:onWeaponCollision(event) end)
    

    I hope this clarifies the whole “:” thing.

    I have done a Lua tutorial that explains this, and other things, regarding Lua. It’s here:

    http://github.com/kikito/lua_missions

    It’s interactive; you learn Lua while programming in Lua. There’s a chapter explaining the ‘:’ operator (inside tables_and_functions). It also explains what a “closure” is, as well as other things.

    In any case, I hope this helps.

    Regards!

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

We are using XSLT to translate a RIXML file to XML. Our RIXML contains
I need to clean up various Word 'smart' characters in user input, including but
i want to parse a xhtml file and display in UITableView. what is the
public static bool CheckLogin(string Username, string Password, bool AutoLogin) { bool LoginSuccessful; // Trim

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.