return class; = [type Function] ?
2005 June 28th by todd anderson
[Edit: sorry about all the italics and bolds. i really need to get some sort of style sheet for actionscript code]
[Edit 2: and i got one. have to do some color changes. IG: Syntax Hiliter]
i found something i don’t quite understand today (not that much of a shock) when trying to make a CharacterManager class to control the registration and reference of classes extending a Character class. In short, when i make a new character that a user can use, i just want to create a new class that extends the Character class, go into my main class register it and drop the new character movieclip into the library, brush off my hands give a little grunt and call it a day.
Now i found this odd, but technically i know very little, so i was hoping someone out there might be able to explain it to me.
The way i want this to work is when i register a new character, i say something like this:
__characterManager.registerCharacterClass(MyNewCharacterClass, “class name”);
- where __characterManager is the singleton
….(in Character Manager)
public function registerCharacterClass(classToAdd, classNameStr)
{
__classList[ classNameStr ] = classToAdd;
}
- and then when i want to retrive that class when i create a new character i say:
(1)
Application.addCharacter(”class name”, “symbol linkage id”, “instance name”);
(2)
function addCharacter(classNameStr, clipID, name)
{
var characterClass:Character =
characterManager.getCharacterClassByName(classNameStr);
var character:Character = characterClass.create(clipID, name);
}
- what i had in the CharacterManager class before i found the reason why i’m asking this question is this:
public function getCharacterClassByName(classNameStr):Character
{
return __classList[ classNameStr ];
}
- but that always returned the [type Function]- never a reference to the class i was trying to get.
So i peeked into the CommandTemplate class within the ariaware package, and noticed how they did it.
Using this:
return new __classList classNameStr;
Now this makes sense to me, since when you create an instance of a class you use new most of the time. But i guess i’m wondering why it would return [type Function] before, and not even [object Object], or something else. and if this is always true, can i not create a Singleton from here, or should i make a CharacterSingletonManager class and return __classList[ classNameStr].getInstance(); ?
The answer is probably simple and can be summed up in one line, and here i write a novel out of a question.. but oh well.
Posted in Flash.