A call to super() is not required unless you are passing arguments to
the superclass' constructor. Nor is it required that you specify that
you are extending Object. (If you don't specify a superclass, it assumes
Object.) I just do it that way because I'm anal about my code. ;)

Calling super() calls the constructor of the superclass (i.e, parent
class). One instance where you might need it is if the constructor
signatures do not match, e.g.:

class SuperClass extends Object {
        public function SuperClass(superValue:Number) {
                _superField = superValue;
        }
        public function get superField():Number {
                return _superField;
        }
        private var _superField:Number;
}

class SubClass extends SuperClass {
        public function SuperClass(superValue:Number, subValue:Number) {
                super(superValue);
                _subField = subValue;
        }
        public function get subField():Number {
                return _subField;
        }
        private var _subField:Number;
}

The super keyword can also be used to access fields and methods of the
superclass, e.g. where methods have been overridden in the subclass,
e.g.:

public function toString():String {
        return super.toString() + " extra subclass info";
}

―
Mike Keesey

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:flashcoders-
> [EMAIL PROTECTED] On Behalf Of Paul Steven
> Sent: Thursday, November 02, 2006 4:03 PM
> To: 'Flashcoders mailing list'
> Subject: RE: [Flashcoders] Copy Constructor
> 
> Thanks a million Mike, that works perfectly. I now have a chance of
> getting
> this game up and running by the morning.
> 
> One question though. I commented out the super(); after reading the
> following:
> 
> The super() call in the constructor class is not required because
Flash
> handles this for you in AS2, and it is handled properly. In AS1 you
had to
> call super() to make sure the superclass' constructor was called. The
> order
> for class initialization tended to be a bit odd. That is not the case
in
> AS2.
> 
> I am fairly new to AS2 so I do not really understand what super() does
but
> its all working fine so far as far as I can see.
> 
> Can you comment on whether the super() is required?
> 
> Thanks
> 
> Paul
> 
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Mike
> Keesey
> Sent: 02 November 2006 22:53
> To: 'Flashcoders mailing list'
> Subject: RE: [Flashcoders] Copy Constructor
> 
> I might do it like this:
> 
> class mypackage.Connect4State extends Object {
>       public function Connect4State(state:Connect4State) {
>               super();
>               if (state instanceof Connect4State) {
>                       copy(state);
>               } else {
>                       board = new Array();
>                       score = new Array();
>                       // Default initialization code.
>               }
>       }
>       public function copy(state:Connect4State):Void {
>               board = state.board.concat();
>               score = state.score.concat();
>       }
>       public var board:Array;
>       public var score:Array;
> }
> 
> Then you could call the construct with or without a parameter.
> 
> (Actually, I would never use public variables, but that's another
> topic....)
> ―
> Mike Keesey
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:flashcoders-
> > [EMAIL PROTECTED] On Behalf Of Paul Steven
> > Sent: Thursday, November 02, 2006 2:31 PM
> > To: 'Flashcoders mailing list'
> > Subject: RE: [Flashcoders] Copy Constructor
> >
> > Perhaps it is easier if I explain what I need:
> >
> > I am rewriting some Java code into AS2.
> >
> > Basically I have a class called Connect4State
> >
> > class Connect4State {
> >
> >     public function Connect4State() {
> >
> >             //  -------------------------
> >             // Initialize the board array
> >             // --------------------------
> >
> >             board = new Array();
> >
> >             code goes here
> >
> >
> >             // --------------------------
> >             // Initialize the score array
> >             // --------------------------
> >
> >             score = new Array();
> >
> >             code goes  here
> >     }
> >
> >     public var board:Array; // A 7 by 6 two dimensional array of
> > integers representing the state of game
> >
> >     public var score:Array; // A 2 dimensional array of integers
> > representing the "score" for the players
> >
> > }
> >
> > The Java code has a function called a "Copy Constructor" that
enables
> you
> > to
> > create new objects that are copies of existing objects. The copy
> > constructor
> > for Connect4State just copies the contents of each member variable.
It
> is
> > necessary to have a copy constructor for Connect4State because the
AI
> > algorithms use temporary state objects a great deal
> >
> > This is the "copy constructor" code translated to AS2
> >
> >     public function Connect4State(state:Connect4State) {
> >
> >             // --------------
> >             // Copy the board
> >             // --------------
> >
> >             board = new Array();
> >
> >             for (var i:Number = 0; i < 7; i++) {
> >
> >                     board[i] = new Array();
> >
> >                             for (j:Number = 0; j < 6; j++) {
> >
> >                                     board[i][j] = state.board[i][j];
> >
> >                     }
> >
> >             }
> >
> >
> >             // ---------------
> >             // Copy the scores
> >             // ---------------
> >
> >             for (var i:Number = 0; i < 2; i++) {
> >
> >                     score = new Array();
> >
> >                             for (var j:Number = 0; j < winPlaces;
j++) {
> >
> >                             score[i][j] = state.score[i][j];
> >                             numPieces = state.numPieces;
> >                     }
> >
> >             }
> >
> >
> >     }
> >
> > AS2 seems not to like this as I get the following error
> >
> > A class must have only one constructor.
> >             public function Connect4State(state:Connect4State)
> >
> > Anyone suggest an alternative to this "Copy Constructor"?
> >
> >
> >
> >
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Paul
> > Steven
> > Sent: 02 November 2006 20:01
> > To: 'Flashcoders mailing list'
> > Subject: [Flashcoders] Copy Constructor
> >
> > Hi there
> >
> > Is there an equivalent of the Java Copy constructor in Flash AS2?
> >
> > Thanks
> >
> > Paul
> >
> > _______________________________________________
> > Flashcoders@chattyfig.figleaf.com
> > 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
> >
> > _______________________________________________
> > Flashcoders@chattyfig.figleaf.com
> > 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
> 
> _______________________________________________
> Flashcoders@chattyfig.figleaf.com
> 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
> 
> _______________________________________________
> Flashcoders@chattyfig.figleaf.com
> 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

_______________________________________________
Flashcoders@chattyfig.figleaf.com
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

Reply via email to