I've been searching around trying to work this out for a while now. There's been various ideas popping up, like dispatchEvent etc but nothing that seems to be a clear, simple way of doing this.
What I'm trying to do is call a function from a class seperate (but in the same folder as) my document class. Specifically, I want to 'spawn' an object and run a function within that object's class from my Main.as. The snippet I have at the moment is as follows;
In Main.as:
var object:class_Object = new class_Object();
object.spawn();
addChild(object);
The spawn function is a public function within class_Object but when I try and run this, I get the error: 'Error #1006: spawn is not a function' If I take out the 'object.spawn();' code it adds the object fine.
I must be missing something obvious, but can't figure out what
Thanks
EDIT
Fixed the problem, I had forgotten to specify the path to the class in the AS linkage of my Library object, thought I'd done that!
you need to make the method inside your class_Object public
You marked that method as
static
. That means that it belongs to the class itself not instances of that class.To invoke the method as defined you would say:
class_Object.spawn()
However, this may not be what is intended, but it's difficult to say without seeing the implementation. Removing the
static
keyword from its definition will attach it to an instance and will be accessible the way you have described.See here for the adobe documentation on the subject.
To answer your comment, a simple way to think about it is a "class" is a blueprint to create "instances".
So, when you say
new class_Object()
you telling the "blueprint" to "construct" a new instance of the blueprint. In side the blueprint you can define methods/properties that should available to the instance (or instance methods). Also, you can also define methods/properties that are available to the "blueprint" itself (or static methods).So using the classic example of a
Car
Then for example:
When you "extend" from another class, you are "borrowing" the functionality from another class and adding/replacing your own functionality. But as long as you have an instance, if it is a "public" method, then it will be externally available from where ever that instance is available. I don't know if that helps answer you comment.