-
Problems converting AS2 to AS3
Hi
I have some AS2 code that works fine, its just four movie clip thumbnails on the stage that scale when the mouse gets near to them.
This is the AS2 code:
Code:
function proximity(clip) {
var x:Number = _root._xmouse;
var y:Number = _root._ymouse;
var cx:Number = clip._x;
var cy:Number = clip._y;
var prox:Number = Math.sqrt((x-cx)*(x-cx) + (y-cy)*(y-cy));
if(prox<100) {
clip._xscale = 200 - prox;
clip._yscale = clip._xscale;
}
else {
clip._xscale = 100;
clip._yscale = clip._xscale;
}
}
this.onEnterFrame = function() {
proximity(im1);
proximity(im2);
proximity(im3);
proximity(im4);
}
I have tried to convert this into AS3 but the movie just won't work properly can anyone tell me what I doing wrong?
My AS3 code:
Code:
var ia:Array = new Array();
ia = [im1, im2, im3, im4];
for (var i:uint=0; i<4; i++) {
ia[i].buttonMode = true;
ia[i].addEventListener(Event.ENTER_FRAME, proximity);
}
function proximity(event:Event):void
{
var x:Number = mouseX;
var y:Number = mouseY;
var cx:Number = event.target.x;
var cy:Number = event.target.y;
var prox:Number = Math.sqrt((x-cx)*(x-cx) + (y-cy)*(y-cy));
if(prox<100) {
event.target.scaleX = 200 - prox;
event.target.scaleY = event.target.scaleX;
}
else {
event.target.scaleX = 100;
event.target.scaleY= event.target.scaleX;
}
}
I don't think I'm far away.
Thanks
Ricky55
-
You're not far away. In AS3, the scale values go from 0 - 1, rather than 0 - 100.
-
I can't believe I missed this!!!!
Thanks mate, I will amend and try again.
This AS3 lark is becoming the bane of my life but it is satisfying when it works.
-
Finally got this working, my code for any one who's interested:
Code:
var ia:Array = new Array();
ia = [im1, im2, im3, im4];
for (var i:uint=0; i<4; i++) {
ia[i].buttonMode = true;
ia[i].addEventListener(Event.ENTER_FRAME, proximity);
}
function proximity(event:Event):void
{
var x:Number = mouseX;
var y:Number = mouseY;
var cx:Number = event.target.x;
var cy:Number = event.target.y;
var prox:Number = Math.sqrt((x-cx)*(x-cx) + (y-cy)*(y-cy)) / 100;
if(prox<1) {
event.target.scaleX = 2 - prox;
event.target.scaleY = event.target.scaleX;
}
else {
event.target.scaleX = 1;
event.target.scaleY= event.target.scaleX;
}
}
-
one thing that would help
good use of the Pythagorean theorem was just looking at your code the only thing i saw missing was what if they overlap. the one you are over should pop to the top so i added this
ia[i].addEventListener(MouseEvent.MOUSE_OVER, top);
function top(event:Event):void
{
var mc:MovieClip = MovieClip(event.currentTarget);
//trace(mc.name);
addChild(mc);
}
also i changed the check in the loop to: ia.length
so the code now looks like this
var ia:Array = new Array();
ia = [im1, im2, im3];
for (var i:uint=0; i<ia.length; i++) {
ia[i].buttonMode = true;
ia[i].addEventListener(Event.ENTER_FRAME, proximity);
ia[i].addEventListener(MouseEvent.MOUSE_OVER, top);
}
function top(event:Event):void
{
var mc:MovieClip = MovieClip(event.currentTarget);
//trace(mc.name);
addChild(mc);
}
function proximity(event:Event):void
{
var x:Number = mouseX;
var y:Number = mouseY;
var cx:Number = event.target.x;
var cy:Number = event.target.y;
var prox:Number = Math.sqrt((x-cx)*(x-cx) + (y-cy)*(y-cy)) / 100;
if(prox<1) {
event.target.scaleX = 2 - prox;
event.target.scaleY = event.target.scaleX;
}
else {
event.target.scaleX = 1;
event.target.scaleY= event.target.scaleX;
}
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|