Instantiate a Class picked from a Class Array
I would like to change this:
Code:
obj = new _objectClass();
into something like this:
Code:
var objClass:Class = _objectClassArray[range(0, _objectClassArray.length)] as Class;
obj = new objClass();
trace (_objectClassArray[range(0, _objectClassArray.length)]) // returns [class MyClip] or [class MyClip2] and so on..
Actually this last piece of code throws the following error:
TypeError: Error #1007: Instantiation attempted on a non-constructor.
Full explanation:
This code goes inside an ObjectPool from HYPE Framework of Joshua Davis.
I´ve created a "MultipleObjectPool" and changed some little details , that is: the constructor, instead of receiving a Class as a parameter, receives then a Class Array, so each time it should create an object (via the request() function) of a Class that is picked randomically from the Class Array.
Is that possible ?
Thanks in advance!
solved! now, how to decently extend a class?
Hi, I solved it this way:
obj = new _objectClassArray[range(0, _objectClassArray.length - 1)];
simple :)
I wonder now how could I extend the class ObjectPool
Cause I've just copied the whole code into a new .as file I called "MultipleObjectPool" and changed very little stuff on it.
But I know that's definitely not good practice.
So, these are the changes I've made in the "MultipleObjectPool" class:
1st - I added the "_objectClassArray" instance variable (not sure if it's called this way) , and removed the "_objectClass" instance variable since I didn't need it anymore.
2nd - The constructor changed:
Code:
public function ObjectPool(objectClass:Class, max:uint) {
_objectClass = objectClass;
becomes
Code:
public function ObjectPool(objectClassArray:Array, max:uint) {
_objectClassArray = objectClassArray;
3rd - in function request():
Code:
obj = new _objectClass();
becomes
Code:
obj = new _objectClassArray[range(0, _objectClassArray.length - 1)];
I'm not good enough in OOP to know how to do this... so please help! Then I can share it with you! :)
Thanks!