-----------------------------
In your bit of code:
Myclass extends Array {
... Constructor and Other needed elements
}
Myclass[index]
I don't think you could ever do that with an array without actually making a
new Array (); so to be able to access the array elements that way, try
using:
var myArray = new Myclass ();
myArray [ index ];
...same as
var array = new Array ();
array [ index ];
-----------------------------
Not sure if this helps or complicates things - but here are a few approaches
of instances working with static methods/properties of the extended Array
class.
//
// EXAMPLE 1
//
In this example, the preset array values are set through the constructor,
and you can change that at anytime. Each new instance has internal
properties as well and a few different ways in which to talk with the Static
class.
///////////////////////////// in EXAMPLE_1.fla
// import
import ArrayExt;
// set future array defaults
ArrayExt.setDefaults ( [ 'a', 'b', 'c' ] );
// create
var array1 = new ArrayExt ( );
// set new defaults
ArrayExt.setDefaults ( [ '1', '2' ] );
// create
var array2 = new ArrayExt ( );
var array3 = new ArrayExt ( 'blah', 'blah', 'blah' );
// output
trace( '\nArrayExt.defaultArray: ' + ArrayExt.defaultArray )
// 1,2
trace( '\narray1: ' + array1 ); // a,b,c
trace( 'array2: ' + array2 ); // 1,2
trace( 'array3: ' + array3 ); // 1,2
trace( '\narray1.length: ' + array1.length );// 3
trace( 'array2.length: ' + array2.length );// 2
trace( '\narray1[0]: ' + array1[0] );// a
trace( 'array2[0]: ' + array2[0] );// 1
trace( '\narray1.internalVal_0: ' + array1.internalVal_0
);//333
trace( 'array2.internalVal_0: ' + array2.internalVal_0
);//333
trace( 'array3.internalVal_0: ' + array3.internalVal_0
);//333
trace( '\narray1.fullArray: ' + array1.fullArray );//
X,X,X,a,b,c
trace( 'array2.fullArray: ' + array2.fullArray );//
X,X,X,1,2
trace( '\narray1.fullLength: ' + array1.fullLength );// 6
trace( 'array2.fullLength: ' + array2.fullLength );// 5
///////////////////////////// in ArrayExt.as
class ArrayExt extends Array
{
public static var defaultArray:Array;
public static var intervalArray:Array = [ 'X', 'X', 'X' ];
public var internalVal_0:Number = 3333;
public var internalVal_1:Number = 9999;
public function ArrayExt ()
{
trace( ArrayExt () - arguments : ' + arguments );
INIT ();
}
// PUBLIC
// getters and setters
public function get fullArray ():Array
{
return ArrayExt.intervalArray.concat ( this );
}
public function get fullLength ():Array
{
return ArrayExt.intervalArray.length + this.length;
}
// PUBLIC STATIC
public static function setDefaults ( array:Array ):Void
{
defaultArray = ( array == undefined ) ? [] : [].concat (
array );
}
// PRIVATE
private function INIT ()
{
// default
for ( var i in ArrayExt.defaultArray )
{
this [ i ] = ArrayExt.defaultArray [ i ];
}
}
}
-----------------------------
//
// EXAMPLE 2
//
What it comes down to is how exactly you want to use this. If you just want
a class that allows you to have some extra control over the array you can
always make a simple array class with access to a Array utility class.
///////////////////////////// in EXAMPLE_2.fla
var array = new ArraySimple ( 'a', 'c', 'b', 1, 7, 3 );
trace( 'array.sorted: ' + array.sorted );
trace( 'array: ' + array );
trace( 'array[0]: ' + array[0] );
///////////////////////////// in ArraySimple.as
import ArrayUtils;
class ArraySimple extends Array
{
public function ArraySimple ()
{
for ( var i in arguments )
{
this [ i ] = arguments [ i ];
}
}
public function get sorted ():Array
{
return ArrayUtils.sortArray ( this );
}
}
///////////////////////////// in ArrayUtils.as
class ArrayUtils
{
public function ArrayUtils () {
}
public static function sortArray (array:Array )
{
var a = [].concat ( array );
a.sort();
return a;
}
}
_____________________________
Jesse Graupmann
www.jessegraupmann.com
www.justgooddesign.com/blog/
_____________________________
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Stepanenko,
Nikolai A.
Sent: Tuesday, May 22, 2007 4:34 PM
To: [email protected]
Subject: [Flashcoders] Extends Array ???
Has anyone been able to get the indexer working by extending Array
class?
Like
Myclass extends Array
{
... Constructor and Other needed elements
}
!!! Usage I am looking for:
Myclass[index]
One of the properties of the prototype is length. It actually gets set
on Myclass during extension of Array but I haven't figure out how to set
the index to respond with at least internal value. Ultimately I would
like to use this in static mode as an actual type.
So this would be in some way custom prebuilt array.
Any other alternatives are appreciated, thank you!
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com