Solved

Convert AC2 to AC3 for me

Posted on 2010-11-12
2
1,285 Views
Last Modified: 2013-11-11
I was given this code from AS2, but how would it look like in AC3 is the question I am having... Someone please help as I am clueless with AS3.

var tnNr;
spacing = 10;
container._alpha = 0;
var curLength;
MovieClip.prototype.loadPic = function(pic, id) {
	info.text = "";
	this._alpha = 0;
	this.loadMovie(pic);
	temp = this._parent.createEmptyMovieClip("temp2", 998);
	temp.onEnterFrame = function() {
		var t = container.getBytesTotal(), l = container.getBytesLoaded();
		if (Math.round(l/t) == 1 && container._width != 0 && container._height != 0) {
			var w = container._width+spacing, h = container._height+spacing;
			border.resizeMe(w, h, id);
			delete this.onEnterFrame;
		}
	};
};
MovieClip.prototype.resizeMe = function(w, h, id) {
	var speed = 3;
	container._alpha = 0;
	this.onEnterFrame = function() {
		this._width += (w-this._width)/speed;
		this._height += (h-this._height)/speed;
		if (Math.abs(this._width-w)<1 && Math.abs(this._height-h)<1) {
			this._width = w;
			this._height = h;
			container._x = this._x-this._width/2+spacing/2;
			container._y = this._y-this._height/2+spacing/2;
			info._y = Math.round(this._y+this._height/2+spacing/2);
			container._alpha += 5;
			if (container._alpha>90) {
				info.text = id;
				container._alpha = 100;
				delete this.onEnterFrame;
			}
		}
	};
};
function galleryChoice(q) {
	pArray = new Array();
	tArray = new Array();
	iArray = new Array();
	my_xml = new XML();
	for (var j = 0; j<curLength; j++) {
		this.th_nav["thmb"+j].removeMovieClip();
	}
	my_xml.ignoreWhite = true;
	my_xml.onLoad = function(loaded) {
		if (loaded) {
			gallery = this.firstChild.childNodes[q];
			curLength = gallery.childNodes.length;
			for (var i = 0; i<gallery.childNodes.length; i++) {
				pArray.push(gallery.childNodes[i].attributes.source);
				tArray.push(gallery.childNodes[i].attributes.thumb);
				iArray.push(gallery.childNodes[i].attributes.title);
			}
		}
		delay = setInterval(makeButtons, 50);
	};
	my_xml.load("gallery.xml");
}
function makeButtons() {
	tnNr = 0;
	clearInterval(delay);
	for (var i = 0; i<tArray.length; i++) {
		var thb = th_nav.thmb.duplicateMovieClip("thmb"+i, 1000+i);
		thb.id = i;
		thb._x = i%3*50;
		thb._y = Math.floor(i/3)*50;
	}
	loadButtons();
}
function loadButtons() {
	var tbox = th_nav["thmb"+tnNr].box;
	tbox.loadMovie(tArray[tnNr]);
	temp = this.createEmptyMovieClip("tmp"+tnNr, 999);
	temp.onEnterFrame = function() {
		bt = tbox.getBytesTotal();
		bl = tbox.getBytesLoaded();
		if (bt == bl && bt>4) {
			nextButton();
			delete this.onEnterFrame;
		}
	};
}
function nextButton() {
	if (tnNr<tArray.length-1) {
		tnNr++;
		loadButtons();
	} else {
		activateButtons();
	}
}
function activateButtons() {
	mainButtons();
	for (var i = 0; i<pArray.length; i++) {
		var but = th_nav["thmb"+i];
		but.id = i;
		but.onRelease = function() {
			container.loadPic(pArray[this.id], iArray[this.id]);
			disButtons2(this.id);
		};
	}
	container.loadPic(pArray[0], iArray[0]);
	disButtons2(0);
}
butArray = new Array();
butArray = ["gal1_btn", "gal2_btn", "gal3_btn", "gal4_btn"];
function mainButtons() {
	for (var i = 0; i<butArray.length; i++) {
		this[butArray[i]].id = i;
		this[butArray[i]].onRelease = function() {
			galleryChoice(this.id);
			disButtons(this.id);
		};
	}
}
function disButtons2(d) {
	for (var i = 0; i<tArray.length; i++) {
		if (i != d) {
			this.th_nav["thmb"+i].enabled = 1;
			this.th_nav["thmb"+i].box._alpha = 100;
		} else {
			this.th_nav["thmb"+i].enabled = 0;
			this.th_nav["thmb"+i].box._alpha = 50;
		}
	}
}
function disButtons(d) {
	for (var i = 0; i<butArray.length; i++) {
		if (i != d) {
			this[butArray[i]].enabled = 1;
			this[butArray[i]].gotoAndStop(1);
		} else {
			this[butArray[i]].enabled = 0;
			this[butArray[i]].gotoAndStop(2);
		}
	}
}
disButtons(0);
galleryChoice(0);

Open in new window

0
Comment
Question by:beginnersdevelopment
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 19

Accepted Solution

by:
moagrius earned 500 total points
ID: 34148959
you wouldn't be able to directly translate that from AS2 to AS3 - you'd need some restructuring.

for example, MovieClips no longer have getBytesLoaded() or getBytesTotal() - this only works for objects transacting with external assets, like Loader and URLLoader - and even then doesn't work exactly the same (there are no methods like that, but they dispatch events that have the information).

you can still use prototype methods, but best-practice would be to create a custom class and assign those methods as class members.

other than than, generally:

- properties are no longer prefixed with an underscore. "_alpha" is now "alpha", "_x" is now "x".  there are other naming changes as well, like "_xscale" is now "scaleX".
- use the "new" operator to create instances (new MovieClip()) instead of whatever.createEmptyMovieClip()
- event handlers are no longer assigned using instance.onEvent = function(){}.  now you add an event listener, and in general use named functions rather than anonymous ones.  you also can't delete them as is shown - they must be removed using the appropriate methods.
- you still get array access (this["whatever"]), but this might trip you up when used with instance names - it's preferred to use container.getChildByName("instanceName");
- XML is radically changed.  all data is loaded using the URLLoader object with instances of the URLRequest object - there is no longer an XML.load() method, nor does an XML object have an onLoad callback.
- "var" is now required - you can't say "spacing = 10;" - it must be "var spacing = 10;"
- datatyping is not required but is encouraged.  append ":DataType" to the end of variable names, e.g., "var spacing:Number = 10;";
- instead of tracking information in interval or enterframes, now you use events and event handlers.

hth
0
 

Author Closing Comment

by:beginnersdevelopment
ID: 34156371
Thanks for the follow up and how I would go about converting the file.
0

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Since I wrote the original article about Handling Date and Time in PHP and MySQL several years ago, it seemed like now was a good time to update it for object-oriented PHP.  This article does that, replacing as much as possible the pr…
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
The goal of the tutorial is to teach the user how to set there setting in Adobe Flash Media Live Encoder and YouTube for optimal video and audio quality.
The goal of the tutorial is to teach the user how to use the auto adjust feature and what the different options do. When your video is not working right you can choose the auto adjust feature to help choose your settings.

691 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question