• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 401
  • Last Modified:

Using Private Variables To Avoid Garbage Collections

Garbage collection is occasionally recycling my tween variables and thereby killing my tween.

I was wondering if it would be possible to use a private array of variables that I reset after the tweens are completed, since I believe garbage collection does not apply to private variables (please correct me if I am wrong so far).  However, i seem to be having trouble with the private variables.

here is my code on this.  really the slideBlade function is the only revelant part, but I thought I would also include the part where it is called, since it runs four times in a row.  (bladeTotal is always equal to 4)
public function slideBlade(which, pos, bladeTotal) {
			
			trace(bladeTotal+": bladeTotal");
			
			
			var tween:Tween = new Tween( which, "x", Regular.easeInOut, which.x, which[pos], .6, true);
			
		}
		//--------------------------------------------------------------------------------
		public function bladeEngine(which) {
			removeThumb(null);
 
			if (this.currentBlade == which) {
				for (x = 1; x <= bladeTotal; x++) {
					whichBlade = this["blade" + x];
					slideBlade(whichBlade,"closePos",bladeTotal);
				}
				which.blade.gotoAndStop(1);
 
				this.currentBlade = null;
				this.bladeNumber = 0;
			} else {
				if ( this.currentBlade != null) {
					this.currentBlade.blade.gotoAndStop(1);
				}
				if (which.bladeNum < this.bladeNumber) {
					for (x = which.bladeNum + 1; x <= bladeTotal; x++) {
						whichBlade = this["blade" + x];
						slideBlade(whichBlade,"closePos",bladeTotal);
					}
				} else {
					for (x = 1; x <= bladeTotal; x++) {
						if (x <= which.bladeNum) {
							whichBlade = this["blade" + x];
							slideBlade(whichBlade,"openPos",bladeTotal);
						}
					}
				}
				this.currentBlade = which;
				this.bladeNumber = this.currentBlade.bladeNum;
				this.currentBlade.blade.gotoAndStop(2);
 
				if (this.currentBlade == which) {
					buildTree( this.bladeNumber, this.currentBlade.bladeName, "", "" );
				}
			}
		}

Open in new window

0
walker6o9
Asked:
walker6o9
  • 2
  • 2
1 Solution
 
asaivanCommented:
Yeah, just create a private var outside your function block, e.g.

private var tween:Tween;

then in your function:

tween = new Tween(...);

That should stop your tweens from being killed.

Is that not working for you?
0
 
MattKenefickCommented:
Put them all in an array / object container. Pop/shift them as you complete them or just dump the container when they're all done.
0
 
walker6o9Author Commented:
MattKenefick-
I'm sorry, I'm not sure how that would work?  Do you kill them after they run?  Can you show me how that would work?
0
 
MattKenefickCommented:
This is a small article with links to others and includes examples.


http://www.bigroom.co.uk/blog/object-pool-class

( Better to not re-invent the wheel when it has already been said =] )
0
 
walker6o9Author Commented:
BRILLIANT!
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now