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

Need help creating a score system...

Guest
Apr 14, 2013 Apr 14, 2013

Hey guys,

I have followed an online tutorial, I now need a score system that will make it so when all of the items are dropped onto the right location the user can click a button and move onto the next frame, I've tried several things but none of them have worked, so I thought you guys might be able to help me...

Here is my code:

stop();

//http://passyworldofict.blogspot.co.uk/

var objectoriginalX:Number;

var objectoriginalY:Number;

germany_mc.buttonMode = true;

germany_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

germany_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

france_mc.buttonMode = true;

france_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

france_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

italy_mc.buttonMode = true;

italy_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

italy_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

uk_mc.buttonMode = true;

uk_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

uk_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

function pickupObject(event:MouseEvent):void {

event.target.startDrag(true);

event.target.parent.addChild(event.target);

objectoriginalX = event.target.x;

objectoriginalY = event.target.y;

}

function dropObject(event:MouseEvent):void {

event.target.stopDrag();

var matchingTargetName:String = "target" + event.target.name;

var matchingTarget:DisplayObject = getChildByName(matchingTargetName);

if (event.target.dropTarget != null && event.target.dropTarget.parent ==

matchingTarget){

event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);

event.target.buttonMode = false;

event.target.x = matchingTarget.x;

event.target.y = matchingTarget.y;

} else {

event.target.x = objectoriginalX;

event.target.y = objectoriginalY;

}

}

Any help is much appreciated.

TOPICS
ActionScript
879
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

correct answers 1 Correct answer

LEGEND , Apr 14, 2013 Apr 14, 2013

One way would be to keep a count that you increment each time a correct drop is made,  When the count reaches a value that equates to all objects being properly dropped you can enable the button for moving on.

var count:int = 0;

function dropObject(event:MouseEvent):void {

event.target.stopDrag();

var matchingTargetName:String = "target" + event.target.name;

var matchingTarget:DisplayObject = getChildByName(matchingTargetName);

if (event.target.dropTarget != null && event.target.dropTarget.parent

...
Translate
LEGEND ,
Apr 14, 2013 Apr 14, 2013

One way would be to keep a count that you increment each time a correct drop is made,  When the count reaches a value that equates to all objects being properly dropped you can enable the button for moving on.

var count:int = 0;

function dropObject(event:MouseEvent):void {

event.target.stopDrag();

var matchingTargetName:String = "target" + event.target.name;

var matchingTarget:DisplayObject = getChildByName(matchingTargetName);

if (event.target.dropTarget != null && event.target.dropTarget.parent ==

matchingTarget){

event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);

event.target.buttonMode = false;

event.target.x = matchingTarget.x;

event.target.y = matchingTarget.y;

count++;

if(count == 4){

     buttonName.addEventListener... etc

}

} else {

event.target.x = objectoriginalX;

event.target.y = objectoriginalY;

}

}

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
Guest
Apr 14, 2013 Apr 14, 2013

Thanks a lot for the help, I changed added my button into the code:

var count:int = 0;

function dropObject(event:MouseEvent):void {

event.target.stopDrag();

var matchingTargetName:String = "target" + event.target.name;

var matchingTarget:DisplayObject = getChildByName(matchingTargetName);

if (event.target.dropTarget != null && event.target.dropTarget.parent ==

matchingTarget){

event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);

event.target.buttonMode = false;

event.target.x = matchingTarget.x;

event.target.y = matchingTarget.y;

count++;

if(count == 4){

     youareawinner_btn.addEventListener(MouseEvent.CLICK, p3Win)

 

}

} else {

event.target.x = objectoriginalX;

event.target.y = objectoriginalY;

}

}

function p3Win(evt:MouseEvent):void {

     gotoAndStop(2);

}

My win button is "youareawinner_btn".

When I run the code I get a duplicate functin error on line 51:

function dropObject(event:MouseEvent):void {

Any ideas how to fix it?

Cheers.

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 ,
Apr 14, 2013 Apr 14, 2013

To fix a duplicate function error, rename one of the functions that you have assigned the same name to.

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
Guest
Apr 14, 2013 Apr 14, 2013

Okay I did that, but when I run the flash animation the "youareawinner_btn" does not work (nothing happens)...

Any chance we can continue this over skype? I find as3 extremly confusing and I could really do with the help, I would realllly appreciate it.

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 ,
Apr 14, 2013 Apr 14, 2013

It is probablty time for you to become familiar with using the trace() function.

Use the trace function to see if your count is incrementing as you expect it should.  After the  count++;  line add: trace(count);

In your conditional that tests for the value of count, use trace("count reached");  to indicate to yourself that the event listener is being assigned to the button.

Also, inside your p3Win function add a trace to see if it is getting executed when you click the button.

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
Guest
Apr 14, 2013 Apr 14, 2013

Okay I did that, where would I see the output of the tests?

Because in the output monitor nothing happened.

My code now looks like the following:

stop();

//http://passyworldofict.blogspot.co.uk/

var objectoriginalX:Number;

var objectoriginalY:Number;

germany_mc.buttonMode = true;

germany_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

germany_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

france_mc.buttonMode = true;

france_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

france_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

italy_mc.buttonMode = true;

italy_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

italy_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

uk_mc.buttonMode = true;

uk_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

uk_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

function pickupObject(event:MouseEvent):void {

event.target.startDrag(true);

event.target.parent.addChild(event.target);

objectoriginalX = event.target.x;

objectoriginalY = event.target.y;

}

function dropObject(event:MouseEvent):void {

event.target.stopDrag();

var matchingTargetName:String = "target" + event.target.name;

var matchingTarget:DisplayObject = getChildByName(matchingTargetName);

if (event.target.dropTarget != null && event.target.dropTarget.parent ==

matchingTarget){

event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);

event.target.buttonMode = false;

event.target.x = matchingTarget.x;

event.target.y = matchingTarget.y;

} else {

event.target.x = objectoriginalX;

event.target.y = objectoriginalY;

}

}

//scoresystem

var count:int = 0;

function dropObjec(event:MouseEvent):void {

event.target.stopDrag();

var matchingTargetName:String = "target" + event.target.name;

var matchingTarget:DisplayObject = getChildByName(matchingTargetName);

if (event.target.dropTarget != null && event.target.dropTarget.parent ==

matchingTarget){

event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);

event.target.buttonMode = false;

event.target.x = matchingTarget.x;

event.target.y = matchingTarget.y;

count++;

trace(count);

if(count == 4){

     youareawinner_btn.addEventListener(MouseEvent.CLICK, p3Win)

 

}

} else {

event.target.x = objectoriginalX;

event.target.y = objectoriginalY;

}

}

function p3Win(evt:MouseEvent):void {

     gotoAndStop(2);

           trace(count);

}

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 ,
Apr 14, 2013 Apr 14, 2013

Why dp you have two functions that appear to be doing the same thing?  The one you added the traces to should be deleted and you should put the traces in the function that actually gets used.

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
Guest
Apr 14, 2013 Apr 14, 2013

Okay, the trace works, it counts to four but when it gets to four the button still does not work, pressing the button does not fire the trace either.

Interestingly the trace goes:

1

2

3

4

4

The second 4 fires twice regardless of the object which has been placed on the 'hotspot'.

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
Guest
Apr 14, 2013 Apr 14, 2013
LATEST

Okay, it works.

I seriously can't thank you enough, I've been working on this for the past few days and was close to giving up.

In case anyone is curious the code is:

stop();

//http://passyworldofict.blogspot.co.uk/

var objectoriginalX:Number;

var objectoriginalY:Number;

germany_mc.buttonMode = true;

germany_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

germany_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

france_mc.buttonMode = true;

france_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

france_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

italy_mc.buttonMode = true;

italy_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

italy_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

uk_mc.buttonMode = true;

uk_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

uk_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);

function pickupObject(event:MouseEvent):void {

event.target.startDrag(true);

event.target.parent.addChild(event.target);

objectoriginalX = event.target.x;

objectoriginalY = event.target.y;

}

var count:int = 0;

function dropObject(event:MouseEvent):void {

event.target.stopDrag();

var matchingTargetName:String = "target" + event.target.name;

var matchingTarget:DisplayObject = getChildByName(matchingTargetName);

if (event.target.dropTarget != null && event.target.dropTarget.parent ==

matchingTarget){

event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);

event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);

event.target.buttonMode = false;

event.target.x = matchingTarget.x;

event.target.y = matchingTarget.y;

count++;

trace(count);

if(count == 4){

     youareawinner_btn.addEventListener(MouseEvent.CLICK, youWin)

}

} else {

event.target.x = objectoriginalX;

event.target.y = objectoriginalY;

}

}

function youWin(evt:MouseEvent):void {

     gotoAndStop(2);

}

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