0

I'm new to AS3 and decided to make a simple drag&drop decor game just to get started. My problem is that I can't figure out on how to make another page of items when I click on the arrow; also navigating through the categories of items.

Here is a sample of the game SWF

One more question. I'm using this code for every item. Is there a way to make this code more compact instead of copying&pasting the code for every item?

var Clone1:MovieClip;

Ground01.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);
function GroundPressed(event:MouseEvent):void
{
    Clone1 = new ground01();
    Clone1.x = 132;
    Clone1.y = -123;
    addChild(Clone1);
    Clone1.startDrag();
    Clone1.addEventListener(MouseEvent.MOUSE_DOWN,onClonedPlusPressed1);
}

function onClonedPlusPressed1(event:MouseEvent):void
{
    Clone1 = MovieClip(event.currentTarget);
    Clone1.startDrag();
}

stage.addEventListener(MouseEvent.MOUSE_UP, onStageReleased1);

function onStageReleased1(event:MouseEvent):void
{
    if(Clone1 != null){
        Clone1.stopDrag();
    }
            if(Clone1.hitTestObject(Trashcan)) {
        removeChild(Clone1); 
        Clone1 = null;
    }
}
Zhao
  • 3
  • 3
  • _"how to make another page of items"_ create a new Sprite or MovieClip (then double click that object to edit it's own timeline, like add layers for text and graphics). Use this new MClip is your container. Look for tutorials on AS3 linkage. Then add/removeChild works to show/hide content. – VC.One Oct 16 '17 at 15:32

1 Answers1

1

Assuming you are new to action script 3 and programming, in any programming language you can always reusing functions, take your cloning GroundPressed() function for example:

function GroundPressed(event:MouseEvent):void
{
    Clone1 = new ground01();
    Clone1.x = 132;
    Clone1.y = -123;
    addChild(Clone1);
    Clone1.startDrag();
    Clone1.addEventListener(MouseEvent.MOUSE_DOWN,onClonedPlusPressed1);
}

You can always reuse this function and apply to each of your movieclips

like so:

Ground01.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);
Ground02.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);
Ground03.addEventListener(MouseEvent.MOUSE_DOWN, GroundPressed);

If you want to make your code even more compact and save writing the extra EventListener() you can group Ground01, Ground02, Ground03 into one huge movieclip apply a single EventListener(). To point to the right child you will need e.target(). I can't remember the actual syntax but your code will look something like below:

function GroundPressed(event:MouseEvent):void
{
    cloneItem = event.target;
    cloneItem.x = 132;
    cloneItem.y = -123;
    addChild(cloneItem);
    cloneItem.startDrag();
    cloneItem.addEventListener(MouseEvent.MOUSE_DOWN,onClonedPlusPressed1);
}

You can read more about event.target here.

Vincent1989
  • 1,593
  • 2
  • 13
  • 25