A Flash Developer Resource Site

Page 2 of 2 FirstFirst 12
Results 21 to 24 of 24

Thread: Drag and Drop Problem...Help!

  1. #21
    Junior Member
    Join Date
    Aug 2008
    Posts
    12
    no, thanks for all your help...many thanks

    look forward to speaking soon

  2. #22
    Senior Member jweeks123's Avatar
    Join Date
    Mar 2006
    Posts
    1,124
    This will alleviate your problems and should fix all your issues, let me know. Again sorry for the delay.

    Code:
    //DRAG and DROP
    
    var fmcChild:MovieClip = new MovieClip();
    fmcChild.name = "fmc";
    var fc:Boolean = false;
    
    var startX:Number;
    var startY:Number;
    
    var one:Boolean = false;
    var two:Boolean = false;
    var three:Boolean = false;
    var four:Boolean = false;
    var five:Boolean = false;
    var six:Boolean = false;
    
    function allFalse():void {
    	one = false;
    	two = false;
    	three = false;
    	four = false;
    	five = false;
    	six = false;
    }
    
    fogMC.buttonMode =true;
    fogMC.addEventListener(MouseEvent.MOUSE_DOWN, pickUpFog);
    fogMC.addEventListener(MouseEvent.MOUSE_UP, dropItFog);
    
    function pickUpFog(event:MouseEvent):void {
    	fogMC.startDrag();
    	//fogMC.rotation = 10;
    	event.target.parent.addChild(event.target);
    	fogMC.startX = event.target.x;
    	fogMC.startY = event.target.y;
    }
    var loadFog:Loader;
    function dropItFog(event:MouseEvent):void {
    	fogMC.stopDrag();
    	if (fc == true && one != true) {
    		frameMC.removeChild(fmcChild);
    		fc = false;
    	}
    	var myTargetName:String = "target" + event.target.name;
    	var myTarget:DisplayObject = getChildByName(myTargetName);
    	if (event.target.hitTestObject(frameMC) && one != true) {
    		event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp);
    		event.target.removeEventListener(MouseEvent.MOUSE_UP, dropIt);
    		event.target.buttonMode = true;
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    
    		trace("hit");
    		loadFog  = new Loader();
    		loadFog.load(new URLRequest("fog.swf"));
    		loadFog.contentLoaderInfo.addEventListener(Event.COMPLETE, addFog);
    		//jw
    	} else {
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    	}
    }
    
    function addFog(evt:Event):void {
    	fmcChild = MovieClip(loadFog.content);
    	frameMC.addChild(fmcChild);
    	//jw
    	fc = true;
    	allFalse();
    	one = true;
    }
    //RUGBY
    
    rugbyMC.buttonMode =true;
    rugbyMC.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
    rugbyMC.addEventListener(MouseEvent.MOUSE_UP, dropIt);
    
    function pickUp(event:MouseEvent):void {
    	rugbyMC.startDrag();
    	event.target.parent.addChild(event.target);
    	rugbyMC.startX = event.target.x;
    	rugbyMC.startY = event.target.y;
    }
    var loadRugby:Loader;
    function dropIt(event:MouseEvent):void {
    	rugbyMC.stopDrag();
    	if (fc == true && two != true) {
    		frameMC.removeChild(fmcChild);
    		fc = false;
    	}
    	var myTargetName:String = "target" + event.target.name;
    	var myTarget:DisplayObject = getChildByName(myTargetName);
    	if (event.target.hitTestObject(frameMC) && two != true) {
    		event.target.buttonMode = true;
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    
    
    		trace("hit");
    		loadRugby = new Loader();
    		loadRugby.load(new URLRequest("rugby.swf"));
    		loadRugby.contentLoaderInfo.addEventListener(Event.COMPLETE, addRug);
    		//jw
    
    	} else {
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    	}
    }
    function addRug(evt:Event):void {
    	fmcChild = MovieClip(loadRugby.content);
    	frameMC.addChild(fmcChild);
    	//jw
    	fc = true;
    	allFalse();
    	two=true;
    }
    
    
    //DARKEHORSE
    
    darkeMC.buttonMode =true;
    darkeMC.addEventListener(MouseEvent.MOUSE_DOWN, pickUpDarke);
    darkeMC.addEventListener(MouseEvent.MOUSE_UP, dropItDarke);
    
    function pickUpDarke(event:MouseEvent):void {
    	darkeMC.startDrag();
    	event.target.parent.addChild(event.target);
    	darkeMC.startX = event.target.x;
    	darkeMC.startY = event.target.y;
    }
    var loadDarke:Loader;
    function dropItDarke(event:MouseEvent):void {
    	darkeMC.stopDrag();
    	if (fc == true && three != true) {
    		frameMC.removeChild(fmcChild);
    		fc = false;
    	}
    	var myTargetName:String = "target" + event.target.name;
    	var myTarget:DisplayObject = getChildByName(myTargetName);
    	if (event.target.hitTestObject(frameMC) && three != true) {
    		event.target.buttonMode = true;
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    
    
    		trace("hit");
    		loadDarke  = new Loader();
    		loadDarke.load(new URLRequest("darkehorse.swf"));
    		loadDarke.contentLoaderInfo.addEventListener(Event.COMPLETE, addDar);
    		//jw
    	} else {
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    	}
    }
    function addDar(evt:Event):void {
    	fmcChild = MovieClip(loadDarke.content);
    	frameMC.addChild(fmcChild);
    	//jw
    	fc = true;
    	allFalse();
    	three=true;
    }
    //SEIZURE
    
    seizureMC.buttonMode =true;
    seizureMC.addEventListener(MouseEvent.MOUSE_DOWN, pickUpSeizure);
    seizureMC.addEventListener(MouseEvent.MOUSE_UP, dropItSeizure);
    
    function pickUpSeizure(event:MouseEvent):void {
    	seizureMC.startDrag();
    	event.target.parent.addChild(event.target);
    	seizureMC.startX = event.target.x;
    	seizureMC.startY = event.target.y;
    }
    var loadSeizure:Loader;
    function dropItSeizure(event:MouseEvent):void {
    	seizureMC.stopDrag();
    	if (fc == true && four != true) {
    		frameMC.removeChild(fmcChild);
    		fc = false;
    	}
    	var myTargetName:String = "target" + event.target.name;
    	var myTarget:DisplayObject = getChildByName(myTargetName);
    	if (event.target.hitTestObject(frameMC) && four != true) {
    		event.target.buttonMode = true;
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    
    
    		trace("hit");
    		loadSeizure  = new Loader();
    		loadSeizure.load(new URLRequest("seizure.swf"));
    		loadSeizure.contentLoaderInfo.addEventListener(Event.COMPLETE, addSei);
    	} else {
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    	}
    }
    
    function addSei(evt:Event):void {
    	fmcChild = MovieClip(loadSeizure.content);
    	frameMC.addChild(fmcChild);
    	//jw
    	fc = true;
    	allFalse();
    	four=true;
    }
    //ART
    
    artMC.buttonMode =true;
    artMC.addEventListener(MouseEvent.MOUSE_DOWN, pickUpArt);
    artMC.addEventListener(MouseEvent.MOUSE_UP, dropItArt);
    
    function pickUpArt(event:MouseEvent):void {
    	artMC.startDrag();
    	event.target.parent.addChild(event.target);
    	artMC.startX = event.target.x;
    	artMC.startY = event.target.y;
    }
    var loadArt:Loader;
    function dropItArt(event:MouseEvent):void {
    	artMC.stopDrag();
    	if (fc == true && five != true) {
    		frameMC.removeChild(fmcChild);
    		fc = false;
    	}
    	var myTargetName:String = "target" + event.target.name;
    	var myTarget:DisplayObject = getChildByName(myTargetName);
    	if (event.target.hitTestObject(frameMC) && five != true) {
    		event.target.buttonMode = true;
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    
    
    		trace("hit");
    		loadArt  = new Loader();
    		loadArt.load(new URLRequest("art.swf"));
    		loadArt.contentLoaderInfo.addEventListener(Event.COMPLETE, addArt);
    	} else {
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    	}
    }
    function addArt(evt:Event):void {
    	fmcChild = MovieClip(loadArt.content);
    	frameMC.addChild(fmcChild);
    	//jw
    	fc = true;
    	allFalse();
    	five=true;
    }
    
    //OUTRUN
    
    outrunMC.buttonMode =true;
    outrunMC.addEventListener(MouseEvent.MOUSE_DOWN, pickUpOutrun);
    outrunMC.addEventListener(MouseEvent.MOUSE_UP, dropItOutrun);
    
    function pickUpOutrun(event:MouseEvent):void {
    	outrunMC.startDrag();
    	event.target.parent.addChild(event.target);
    	outrunMC.startX = event.target.x;
    	outrunMC.startY = event.target.y;
    }
    var loadOutrun:Loader;
    function dropItOutrun(event:MouseEvent):void {
    	outrunMC.stopDrag();
    	if (fc == true && six != true) {
    		frameMC.removeChild(fmcChild);
    		fc = false;
    	}
    	var myTargetName:String = "target" + event.target.name;
    	var myTarget:DisplayObject = getChildByName(myTargetName);
    	if (event.target.hitTestObject(frameMC) && six != true) {
    		event.target.buttonMode = true;
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    
    
    		trace("hit");
    		loadOutrun  = new Loader();
    		loadOutrun.load(new URLRequest("outrun.swf"));
    		loadOutrun.contentLoaderInfo.addEventListener(Event.COMPLETE, addOut);
    	} else {
    		event.target.x = event.target.startX;
    		event.target.y = event.target.startY;
    	}
    }
    function addOut(evt:Event):void {
    	fmcChild = MovieClip(loadOutrun.content);
    	frameMC.addChild(fmcChild);
    	//jw
    	fc = true;
    	allFalse();
    	six=true;
    }

  3. #23
    Junior Member
    Join Date
    Aug 2008
    Posts
    12
    thats fantastic m8 thanks ever so much.

    i,m just wondering how you did it.

    cheers again

    i will put your username into my site credits cheers.

  4. #24
    Senior Member jweeks123's Avatar
    Join Date
    Mar 2006
    Posts
    1,124
    No problem.

    I guess an explanation would be nice, LOL.

    Anyway, here goes.

    A lot of it was trial and error as I was pretty tired in the start of it until I realized your issues.

    First being you had no onLoadComplete handlers, and you were trying to add children that didn't exist yet, so I added those to fix that problem.

    Next the loaders kept trying to recreate themselves as themselves, so I defined them outside their functions so they could be used anywhere, and then defined them as new Loaders within their respective function.

    Then in the complete handlers I defined a variable called fmcChild which held the name of the current clip loaded universally so it could later be removed so that another may come in.

    Then the clips dragging twice causing an error was because it was trying to eliminate itself over and over and over, and flash just basically didn't like it. So that's where the fc boolean and number boolean values came in, to determine if that clip was already on stage, just don't destroy it, if not, destroy the clip there and load a new one.

    That help a bit?

    And thanks for the credit, you may also add my name if you'd like:

    Jonathon J. Weeks

    Good luck to you.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center