Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
addEvent and function of class
#1
Code:
class Menu
{
    constructor()
    {
          addEvent("onClick", login);
           show();
    }
    
    function show()
    {
         setCursorVisible(true);
    }
    
    function hide()
    {
         setCursorVisible(false);
       }
    
    function login(button, x, y, wheel)
    {
        hide();
    }
}
If I use this class, the error: hide() is not exist.

what's wrong? Is it impossible?
Reply
#2
(22.05.2016, 19:43)Xardas0327 Wrote:
Code:
class Menu
{
    constructor()
    {
          addEvent("onClick", login);
           show();
    }
    
    function show()
    {
         setCursorVisible(true);
    }
    
    function hide()
    {
         setCursorVisible(false);
       }
    
    function login(button, x, y, wheel)
    {
        hide();
    }
}
If I use this class, the error: hide() is not exist.

what's wrong? Is it impossible?

Is simply, because squirrel right now calling method as function. Difference between function and method is that, method need object for call.
Example:
function(); // Calling function
obj.method(); // Calling method, as u see object is needed

But addEvent second argument is a function, so in timer code it look like:
login();
not
obj.login();

Squirrel don't know, which object should be called, and login method is called as function, so in code we looking for function hide, not method Smile

Maybe is hard to understand, but is logic.

To fix this problem, create function outside the class.
Reply
#3
Of course. I understand. I don't really known the Squirrel and i didn't find the solution only.
Thx the answer.
Reply
#4
You can write your own EventHandler, which can call the function from objects too. What you need send to him it sholud be name of function as string, and object address (in class just send "this")

my EventHandler work like that


Code:
evetns_onHit <- EventHandler(); //Global object

function onHit(targetID, killerID){
events_onHit.call(targetID, killerID);
}


And i add to him like this


Code:
in class
function hookCallbacks(){
events_onHit.add("myOwnOnHit", this);
}

function myOwnOnHit(targetID, killerID){}
Reply
#5
It is a good idea.
thx.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  items and items.xml Utautai 2 2,432 12.09.2020, 21:51
Last Post: Utautai
Question Diagonal and PPI Osmith 0 1,952 21.04.2016, 11:44
Last Post: Osmith
  callClientFunc and giveItem Osmith 4 4,393 18.02.2016, 13:04
Last Post: Bimbol
  Database and other Question (new team) Kemi 18 12,196 09.02.2016, 22:23
Last Post: Kemi

Forum Jump:


Users browsing this thread: 1 Guest(s)