Name: Anonymous 2013-04-17 19:29
ACTIONSCRIPT 3 Help
I am trying to have a player move to a point where I click on the scene. Is there a way to do with without referencing an external .AS file?
I tried simply removing the packaging and the 'public' from in front of the variables and functions, but I get Conductor errors.
What I have:
package {
import flash.display.MovieClip;
import flash.events.*;
public class Walk extends MovieClip{
public var player:MovieClip = new MovieClip();
public var walkRate = 10;
public var targetBuffer = 10;
public function Walk(){
player = new circle;
addChild(player);
player.x = 200;
player.y = 200;
stage.addEventListener(MouseEvent.CLICK, goToPoint);
} // end Walk function
public function goToPoint(e:MouseEvent):void{
player.targetx = mouseX;
player.targety = mouseY;
player.addEventListener(Event.ENTER_FRAME, movePlayer);
}
public function movePlayer(e:Event):void{
var increments:Array = new Array();
increments = getIncrements(player.targetx, player.targety);
var xinc = increments[0];
var yinc = increments[1];
player.x += xinc;
player.y += yinc;
if ((player.x > (player.targetx-targetBuffer) && player.x < (player.targetx+targetBuffer)) && (player.y > (player.targety-targetBuffer) && player.y < (player.targety+targetBuffer))){
player.removeEventListener(Event.ENTER_FRAME, movePlayer);
}
}
public function getIncrements(thisX, thisY):Array{
var increments:Array = new Array();
var xdiff = (thisX - player.x);
var ydiff = (thisY - player.y);
var diff = Math.sqrt(Math.pow(xdiff, 2) + Math.pow(ydiff, 2));
var fraction = 10/diff;
var xinc = fraction*xdiff;
var yinc = fraction*ydiff;
increments.push(xinc, yinc, diff);
return increments;
}
}
}
I am trying to have a player move to a point where I click on the scene. Is there a way to do with without referencing an external .AS file?
I tried simply removing the packaging and the 'public' from in front of the variables and functions, but I get Conductor errors.
What I have:
package {
import flash.display.MovieClip;
import flash.events.*;
public class Walk extends MovieClip{
public var player:MovieClip = new MovieClip();
public var walkRate = 10;
public var targetBuffer = 10;
public function Walk(){
player = new circle;
addChild(player);
player.x = 200;
player.y = 200;
stage.addEventListener(MouseEvent.CLICK, goToPoint);
} // end Walk function
public function goToPoint(e:MouseEvent):void{
player.targetx = mouseX;
player.targety = mouseY;
player.addEventListener(Event.ENTER_FRAME, movePlayer);
}
public function movePlayer(e:Event):void{
var increments:Array = new Array();
increments = getIncrements(player.targetx, player.targety);
var xinc = increments[0];
var yinc = increments[1];
player.x += xinc;
player.y += yinc;
if ((player.x > (player.targetx-targetBuffer) && player.x < (player.targetx+targetBuffer)) && (player.y > (player.targety-targetBuffer) && player.y < (player.targety+targetBuffer))){
player.removeEventListener(Event.ENTER_FRAME, movePlayer);
}
}
public function getIncrements(thisX, thisY):Array{
var increments:Array = new Array();
var xdiff = (thisX - player.x);
var ydiff = (thisY - player.y);
var diff = Math.sqrt(Math.pow(xdiff, 2) + Math.pow(ydiff, 2));
var fraction = 10/diff;
var xinc = fraction*xdiff;
var yinc = fraction*ydiff;
increments.push(xinc, yinc, diff);
return increments;
}
}
}