PDA

View Full Version : Movie Clip


masc030686
02-04-2009, 11:52 AM
hello i need to have my 2 move clip to run in the same function
my movieclip is Player1_mc and Player2_mc, and i need them to run in function MoveUp(e:Event):void
function MoveDown(e:Event):void
function MoveLeft(e:Event):void
function MoveRight(e:Event):void

var speed:Number = 10;
var speedrotation:Number = 15;
var currentpic:Number;
var Rota:Number = 0;

var Player1_mc:player1 = new player1();
var Player2_mc:player2 = new player2();
addChild(Player1_mc);
addChild(Player2_mc);

Player1_mc.y = 200;
Player1_mc.x = 400;
Player2_mc.y = 200;
Player2_mc.x = 200;

stage.addEventListener(Event.ENTER_FRAME, rotatjekker);
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp);
Player1_mc.gotoAndStop(12);
Player2_mc.gotoAndStop(12);

function rotatjekker(e:Event)
{
if(Rota > 180)
{
Rota = -165;
}
else if(Rota <= -165)
{
Rota = 180;
}
// trace(Rota);
}

function KeyDown(e:KeyboardEvent):void
{
if(e.keyCode == 38)
{
stage.addEventListener(Event.ENTER_FRAME, MoveUp);
}
else if(e.keyCode == 40)
{
stage.addEventListener(Event.ENTER_FRAME, MoveDown);
}
else if(e.keyCode == 37)
{
stage.addEventListener(Event.ENTER_FRAME, MoveLeft);
}
else if(e.keyCode == 39)
{
stage.addEventListener(Event.ENTER_FRAME, MoveRight);
}
else if(e.charCode == 119)
{
stage.addEventListener(Event.ENTER_FRAME, MoveUp);
}
else if(e.charCode == 115)
{
stage.addEventListener(Event.ENTER_FRAME, MoveDown);
}
else if(e.charCode == 97)
{
stage.addEventListener(Event.ENTER_FRAME, MoveLeft);
}
else if(e.charCode == 100)
{
stage.addEventListener(Event.ENTER_FRAME, MoveRight);
}
}

function KeyUp(e:KeyboardEvent):void
{
if(e.keyCode == 38)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveUp);
}
else if(e.keyCode == 40)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveDown);
}
else if(e.keyCode == 37)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveLeft);
}
else if(e.keyCode == 39)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveRight);
}
else if(e.charCode == 119)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveUp);
}
else if(e.charCode == 115)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveDown);
}
else if(e.charCode == 97)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveLeft);
}
else if(e.charCode == 100)
{
stage.removeEventListener(Event.ENTER_FRAME, MoveRight);
}
}

function MoveUp(e:Event):void
{
var Player1Angle:Number = 2*Math.PI*(Rota/360);
var Player1Dx:Number = speed*Math.cos(Player1Angle);
var Player1Dy:Number = speed*Math.sin(Player1Angle);
Player1_mc.x -= Player1Dx;
Player1_mc.y -= Player1Dy;
}
function MoveDown(e:Event):void
{
var Player1Angle:Number = 2*Math.PI*(Rota/360);
var Player1Dx:Number = speed*Math.cos(Player1Angle);
var Player1Dy:Number = speed*Math.sin(Player1Angle);
Player1_mc.x += Player1Dx;
Player1_mc.y += Player1Dy;
}
function MoveLeft(e:Event):void
{
currentpic = Math.round((Rota+180)/15);
Rota -= speedrotation;
Player1_mc.gotoAndStop(currentpic-1);
}
function MoveRight(e:Event):void
{
currentpic = Math.round((Rota+180)/15);
Rota += speedrotation;
Player1_mc.gotoAndStop(currentpic+1);
}

thanks

timsplitt
02-04-2009, 01:23 PM
I think you just need to add this to your functions assuming you want them to play from frame 12.
Player1_mc.gotoAndPlay(12);
Player2_mc.gotoAndPlay(12);

If you want to play them from another frame, just set it to (x) instead of (12), where x is the frame number you want to start from.

masc030686
02-04-2009, 06:25 PM
sorry but is not that, that i meen, i don't need them to play from a frame, i need them to move indivujile

x33905
02-04-2009, 07:59 PM
If you're trying to say that you're making a 2 player game and you want each of them to be able to use the same function to control their movement seperately... you really probably don't want to implement it like this since I don't know if you'd be comfortable overloading those event methods (as far as I know they can't take any other arguments unless you do).

The easiest thing to understand and implement would probably be just to implement seperate movement functions for each player. Otherwise you'll need to be passing in the correct movieclip to the functions and since they're based off event listeners, well, I just talked myself in a circle.

Since they have to have seperate listeners for different keys anyway you might as well just make different functions.

function MoveUpP1(e:Event):void
{
var Player1Angle:Number = 2*Math.PI*(Rota/360);
var Player1Dx:Number = speed*Math.cos(Player1Angle);
var Player1Dy:Number = speed*Math.sin(Player1Angle);
Player1_mc.x -= Player1Dx;
Player1_mc.y -= Player1Dy;
}
function MoveUpP2(e:Event):void
{
var Player2Angle:Number = 2*Math.PI*(Rota/360);
var Player2Dx:Number = speed*Math.cos(Player1Angle);
var Player2Dy:Number = speed*Math.sin(Player1Angle);
Player2_mc.x -= Player1Dx;
Player2_mc.y -= Player1Dy;
}

x33905
02-04-2009, 08:00 PM
Or I guess you could try using event.target

Forgot about that.