I am brand new to actionscript coding and am making a simple drag and drop game with a variety objects and related targets.
I am looking for a way to remove a movieclip from the stage when it is dropped (after a pause) and then have a new random movieclip appear at a specific point on the stage, which can then be dragged and dropped onto its own target (which repeats the process).
Can anyone help?
I’ve attached the .fla I am working on.
and here is the current code:
var movieArray:Array = new Array();
movieArray = ["Red", "Green" , "Blue"];
// adding my first random MovieClip to stage
var myMovieClip:MovieClip;
if ((movieArray[Math.floor(Math.random() * 3)]) == "Red") {
myMovieClip = new Red();
myMovieClip.name = "Red_mc";
} else if ((movieArray[Math.floor(Math.random() * 3)]) == "Green") {
myMovieClip = new Green();
myMovieClip.name = "Green_mc";
} else if ((movieArray[Math.floor(Math.random() * 3)]) == "Blue") {
myMovieClip = new Blue();
myMovieClip.name = "Blue_mc";
} else { // In case the random number is 1
myMovieClip = new Blue();
myMovieClip.name = "Blue_mc"
}
addChild(myMovieClip);
myMovieClip.x = 170.1;
myMovieClip.y = 186.8;
myMovieClip.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
myMovieClip.addEventListener(MouseEvent.MOUSE_UP, dropIt);
function pickUp(event:MouseEvent):void {
event.target.startDrag(true);
event.target.parent.addChild(event.target);
}
function dropIt(event:MouseEvent):void {
event.target.stopDrag();
var myTargetName:String = "target" + event.target.name;
var myTarget:DisplayObject = getChildByName(myTargetName);
if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget){
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropIt);
event.target.buttonMode = false;
event.target.x = myTarget.x;
event.target.y = myTarget.y;
var myTimer:Timer = new Timer(200, 1);
myTimer.addEventListener(TimerEvent.TIMER, runOnce);
myTimer.start();
function runOnce(event:TimerEvent):void {
trace("runOnce() called @ " + getTimer() + " ms");
// the following function doesn't work, how do I get get it to refer to the event.target?:
//event.target.removeChild (); ???
//then I'd like to load a new random movieclip from my array to the same
//place myMovieClip was originally to repeat the process
// (and also add the appropriate mouse down and up events and make the buttonmode true)
}
} else{
event.target.gotoAndPlay(2);
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropIt);
event.target.buttonMode = false;
var myTimer2:Timer = new Timer(200, 1);
myTimer2.addEventListener(TimerEvent.TIMER, runtwice);
myTimer2.start();
function runtwice(event:TimerEvent):void {
trace("runtwice() called @ " + getTimer() + " ms");
//same issues as in the if statement // text
}
}
}
myMovieClip.buttonMode = true;