Copy link to clipboard
Copied
Please I need some help. I have spent 2 weeks trying to make a drag and drop game In cs4 actionscript 3.0 and am about to give up.
I have an array that looks like this
var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "Nuts and boltsl";
answerdest[1] = "1";
answername[2] = "water";
answerdest[2] = "2";
answername[3] = "gold";
answerdest[3] = "3";
answername[4] = "Iron";
answerdest[4] = "3";
I need three targets,
and the ability to place the name of my array (this is just a short piece of it) item on the screen if it is dropped on the target matching the answerdest number it is placed in a column, and the next item my array appears. If not it returns to its starting position. This seems like it should be easy to do but I am not a computer teacher I am a science teacher that is trying to make something for my student to use. I have basic coding skills for cs4.
This is as far as i have gotten but can not Figure out how to get the drag and drop part to check if it is in the correct spot. And get to to create a new drag-able if the answer is correct.
I have created an answer target names "Answer1",
var objectoriginalX:Number;
var objectoriginalY:Number;
Atom.buttonMode = true;
Atom.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Atom.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Matter.buttonMode = true;
Matter.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Matter.addEventListener(MouseEvent.MOUSE_UP, dropObject);
function pickupObject(event:MouseEvent):void {
event.target.startDrag();
event.target.parent.addChild(event.target);
}
var dropCount:int = 0;
var dbCount:int=0;
var dbutton0;
function dropObject (event:MouseEvent):void
{
{
event.target.stopDrag();
var targetName = Answer1;
var matchingTarget:DisplayObject = getChildByName(targetName);
if (event.target.dropTarget != null && event.target.dropTarget.parent == Answer1)
{
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
event.target.buttonMode = false;
alpha = .8
dropCount ++;
event.target.x = 10
event.target.y = (Number(dropCount) * 100);
trace ("hit");
trace (dropCount);
} else
{
event.target.x = 100;
event.target.y = 111;
trace ("miss");
}
}
}
var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "Nuts and bolts";
answerdest[1] = "1";
answername[2] = "water";
answerdest[2] = "2";
answername[3] = "gold";
answerdest[3] = "3";
answername[4] = "Iron";
answerdest[4] = "3";
text3
text3.text = answername[1];
var myText:TextField = new TextField();
Atom.addChild(myText);
myText.text = answername[1] ;
Copy link to clipboard
Copied
If you change the code to remove what I show as red/crossed-out below, it might be a start. If I create a movieclip object and assign it an instance name in the properties panel of Atom, and then create another and assign it an instance name of Answer1, and I drag Atom and drop it on Answer1, Atom acquires the textfield with the text in it and moves to x=10/y=100. If I drop Atom elsewhere it goes back where (I presume) it started.
function dropObject (event:MouseEvent):void
{
{
event.target.stopDrag();
var targetName = Answer1; names are strings (with quotes), instance names are not -
var matchingTarget:DisplayObject = getChildByName(targetName); targetName is not a string
if (event.target.dropTarget != null && event.target.dropTarget.parent == Answer1)
{
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
event.target.buttonMode = false;
alpha = .8
dropCount ++;
event.target.x = 10
event.target.y = (Number(dropCount) * 100);
trace ("hit");
trace (dropCount);
If you want to spawn the next object the place to initiate that action is here - I see no attempt to do that in the code you show so I won't suggest a solution unless you have none
} else
{
event.target.x = 100;
event.target.y = 111;
trace ("miss");
}
}
} This is to be removed too.
Copy link to clipboard
Copied
I have none. (no idea how to span the next element) That was as far as I got and did not know how to proceed. So a suggestion would be super great. I tried making the suggested changes but everything come up a miss. I will keep trying thanks for trying.
Copy link to clipboard
Copied
Show the code as you have it now. You might have just missed a detail of what I offered. I would offer to send you the small file I created except it was done in CS6, so you would not be able to open it.
Also, you should change from using event.target to using event.currentTarget. event.currentTarget points to the object that has the event listener assigned to it, while event.target can be pointing to something inside the object that the mouse is interacting with. So you might not be checking the right elements as a result of using event.target. I used simple shapes inside my objects (rectangles/circles), so they were less likely to interact with the mouse. You might have symbols inside and they can be a target of the mouse.
Copy link to clipboard
Copied
And don't worry about spawning the next object until you have dealt with getting the first one to behave as intended. You are not far off from what you need, so don't give up... maybe just take a break and distract your mind from it for a bit.
Copy link to clipboard
Copied
Is there a way to share the fla file?
Here is the code as it stands now, both items are coming up a hit? There is alot of extra stuff from previous attemts, If you want to see the cleaned up code let me know and I will clean it up.
var objectoriginalX:Number;
var objectoriginalY:Number;
Atom.buttonMode = true;
Atom.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Atom.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Matter.buttonMode = true;
Matter.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Matter.addEventListener(MouseEvent.MOUSE_UP, dropObject);
//DynamicText.buttonMode = true;
//DynamicText.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
//DynamicText.addEventListener(MouseEvent.MOUSE_UP, dropObject);
//addEventListener (MouseEvent.MOUSE_DOWN, down);
//function down (event:MouseEvent):void
//{
function pickupObject(event:MouseEvent):void {
event.target.startDrag();
//startDrag();
event.target.parent.addChild(event.target);
//parent.addChild (this);
//objectoriginalX = event.target.x;
//objectoriginalY = event.target.y;
}
//event.target.parent.addChild(event.target);
//startDrag ();
//stage.addEventListener (Mouse.Event.MOUSE_UP, stageUp);
//addEventListener (MouseEvent.MOUSE_UP, up);
var dropCount:int = 0;
var dbCount:int=0;
var dbutton0;
function dropObject (event:MouseEvent):void
//{
{
event.target.stopDrag();
var targetName = Answer1;
var matchingTarget:DisplayObject = getChildByName(targetName);
if (event.target.dropTarget != null && event.target.dropTarget.parent == Answer1)
{
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
event.target.buttonMode = false;
alpha = .8
dropCount ++;
event.target.x = 10
event.target.y = (Number(dropCount) * 100);
//event.target.x = matchingTarget.x;
//event.target.y = matchingTarget.y;
trace ("hit");
//trace (event.target.x)
trace (dropCount);
} else
{
event.target.x = 100;
event.target.y = 111;
trace ("miss");
}
}
//}
//dbutton.text = answername[1];
var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "dgravel";
answerdest[1] = "1";
answername[2] = "firewater";
answerdest[2] = "2";
answername[3] = "trywater";
answerdest[3] = "2";
answername[4] = "funwater";
answerdest[4] = "2";
text3
text3.text = answername[1];
var myText:TextField = new TextField();
Atom.addChild(myText);
myText.text = answername[1] ;
//var dtArray:Array = new Array("one", "two", "three");
//var randNum:int = Math.random() * dtArray.length;
//dbCount = 0;
//dbutton.duplicateMovieClip("dbutton" + dbCount,dbCount * 100);
//dbutton.visible = false;
//dbutton0.answer = answerdest[dbCount];
//dbutton0.theText.text = answername[dbCount];
trace (answername);
Copy link to clipboard
Copied
Yes, please show clean code
Copy link to clipboard
Copied
var objectoriginalX:Number;
var objectoriginalY:Number;
Atom.buttonMode = true;
Atom.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Atom.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Matter.buttonMode = true;
Matter.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Matter.addEventListener(MouseEvent.MOUSE_UP, dropObject);
function pickupObject(event:MouseEvent):void
{
event.target.startDrag();
event.target.parent.addChild(event.target);
}
var dropCount:int = 0;
var dbCount:int=0;
var dbutton0;
function dropObject (event:MouseEvent):void
{
{
event.target.stopDrag();
var targetName = Answer1;
var matchingTarget:DisplayObject = getChildByName(targetName);
if (event.target.dropTarget != null && event.target.dropTarget.parent == Answer1)
{
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
event.target.buttonMode = false;
alpha = .8
dropCount ++;
event.target.x = 10
event.target.y = (Number(dropCount) * 100);
trace ("hit");
trace (dropCount);
}
else
{
event.target.x = 100;
event.target.y = 111;
trace ("miss");
}
}
}
var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "dgravel";
answerdest[1] = "1";
answername[2] = "firewater";
answerdest[2] = "2";
answername[3] = "trywater";
answerdest[3] = "2";
answername[4] = "funwater";
answerdest[4] = "2";
text3
text3.text = answername[1];
var myText:TextField = new TextField();
Atom.addChild(myText);
myText.text = answername[1] ;
trace (answername);
Copy link to clipboard
Copied
here is the code I missed one of your suggestions in the code above
var objectoriginalX:Number;
var objectoriginalY:Number;
Atom.buttonMode = true;
Atom.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Atom.addEventListener(MouseEvent.MOUSE_UP, dropObject);
Matter.buttonMode = true;
Matter.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Matter.addEventListener(MouseEvent.MOUSE_UP, dropObject);
function pickupObject(event:MouseEvent):void
{
event.currentTarget.startDrag();
event.currentTarget.parent.addChild(event.target);
}
var dropCount:int = 0;
var dbCount:int=0;
var dbutton0;
function dropObject (event:MouseEvent):void
{
{
event.currentTarget.stopDrag();
var targetName = Answer1;
var matchingTarget:DisplayObject = getChildByName(targetName);
if (event.currentTarget.dropTarget != null && event.currentTarget.dropTarget.parent == Answer1)
{
event.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
event.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
event.currentTarget.buttonMode = false;
alpha = .8
dropCount ++;
event.currentTarget.x = 10
event.currentTarget.y = (Number(dropCount) * 100);
trace ("hit");
trace (dropCount);
}
else
{
event.currentTarget.x = 100;
event.currentTarget.y = 111;
trace ("miss");
}
}
}
var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "dgravel";
answerdest[1] = "1";
answername[2] = "firewater";
answerdest[2] = "2";
answername[3] = "trywater";
answerdest[3] = "2";
answername[4] = "funwater";
answerdest[4] = "2";
text3
text3.text = answername[1];
var myText:TextField = new TextField();
Atom.addChild(myText);
myText.text = answername[1] ;
trace (answername);
Copy link to clipboard
Copied
You did not change all of what I said to. Remove the lines I crossed out (read the blue text to understand why)
Copy link to clipboard
Copied
those two lines have now been removed and as you said they do not seem to make any difference.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now