Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Drag and drop game sort items to three targets

New Here ,
Dec 09, 2016 Dec 09, 2016

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] ;

TOPICS
ActionScript
721
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Dec 10, 2016 Dec 10, 2016

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.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 10, 2016 Dec 10, 2016

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.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Dec 10, 2016 Dec 10, 2016

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.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Dec 10, 2016 Dec 10, 2016

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.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 11, 2016 Dec 11, 2016

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);

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Dec 11, 2016 Dec 11, 2016

Yes, please show clean code

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 11, 2016 Dec 11, 2016

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);

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 11, 2016 Dec 11, 2016

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);

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Dec 12, 2016 Dec 12, 2016

You did not change all of what I said to.  Remove the lines I crossed out (read the blue text to understand why)

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 12, 2016 Dec 12, 2016
LATEST

those two lines have now been removed and as you said they do not seem to make any difference.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines