Hello List,

I have two classes Time and Clock, see below. To get good encapsulation,
in the Time class I added a function called clone(). This returns a copy
of the Time instance, instead of a reference to it.
Now I run the code, using an interval that calls the
Clock.getElepasedTime(). While watching the Memory I can see it build
up. Does this mean that with every clone of the Time object it still
holds a reference and therefore doesnt get deleted by the garbage collector.

Hope somebody can enlighten me..

Jiri



class Clock
{

        private var startTime:Number;
        private var elapsedTime:Time;
        
        //constructor method
        function Clock(tTime:Time)
        {
                clockdata = new ClockData()
                startTime = getTimer();
                
        }

        
        public function getElepasedTime() : Time
        {

                var elapsedMilliseconds:Number = getTimer() - startTime;
        
                var elapsedHours:Number         = Math.floor( 
elapsedMilliseconds / 3600000);
                var elapsedSeconds:Number       = Math.floor( 
elapsedMilliseconds / 1000);
                var elapsedMinutes:Number       = Math.floor( elapsedSeconds / 
60);

                elapsedSeconds = elapsedSeconds%60;
                elapsedMinutes = elapsedMinutes%60;

                if(elapsedTime == null){
                                elapsedTime = new Time(elapsedHours , 
elapsedMinutes , elapsedSeconds)
                        }else{
                                elapsedTime.hour = elapsedHours;
                                elapsedTime.minute = elapsedMinutes;
                                elapsedTime.second = elapsedSeconds;
                        }

                return elapsedTime.clone();
                        
        }

}

class Time
{
        
        private var _hour:Number;
        private var _minute:Number;
        private var _second:Number;
        
        //constructor method
        public function Time(hour:Number , minute:Number , second:Number)
        {
                _hour = hour
                _minute = minute
                _second = second
        }
        
        public function get hour() : Number
        {
                return _hour
        }

        public function set hour(nHour:Number) : Void
        {
                _hour = nHour
        }
        
        public function get minute() : Number
        {
                return _minute
        }

        public function set minute(nMinute:Number) : Void
        {
                _minute = nMinute;
        }
        
        public function get second() : Number
        {
                return _second
        }

        public function set second(nSecond:Number) : Void
        {
                _second = nSecond;
        }
        
        public function serialize() : String
        {
                var minutePrefix:String = ( (_minute < 10)   ? '0' : '');
                var secondPrefix:String = ( (_second < 10)   ? '0' : '');
                var hourPrefix  :String = ( (_hour       < 10)       ? '0' : 
'');

                return
String(hourPrefix+_hour+':'+minutePrefix+_minute+':'+secondPrefix+_second);
        }
        
        public function clone() : Time
        {
                return new Time(_hour , _minute , _second)
        
        
        }
        
        
}




_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to