Skip to main content
chienbleu
Known Participant
February 25, 2023
Answered

as3 thingy problem

  • February 25, 2023
  • 1 reply
  • 2269 views

this is supposed to make the ball go to your mouse and fall everytime you click but it's being crappy and not working more than once 

 

import flash.events.Event;
stage.addEventListener(MouseEvent.MOUSE_DOWN,gotomouse)
function gotomouse(event:Event)
{
ball.x = mouseX
ball.y = mouseY
var gravity:Number = 1
trace(gravity)

ball.addEventListener(Event.ENTER_FRAME,fall)
function fall(event:Event)
{
gravity += gravity/2
ball.y += gravity
}
}

    This topic has been closed for replies.
    Correct answer kglad

    no, that is all the code. 1. yes    2. no. and "fall" is what i named my function


    import flash.events.Event;

     

    stage.addEventListener(MouseEvent.MOUSE_DOWN,gotomouse)

    function gotomouse(event:Event){
    ball.x = mouseX; // are you sure you don't want to animate this?
    ball.y = mouseY;  //  "  "
    var gravity:Number = 1
    trace(gravity);

    if(!ball.hasEventListener(Event.ENTER_FRAME)){

    ball.addEventListener(Event.ENTER_FRAME,fall);

    }
    }

    function fall(event:Event){
    gravity += gravity/2;

    ball.y += gravity;

    if(ball.y>stage.stageHeight+ball.height){

    ball.removeEventListener(Event.ENTER_FRAME,fall);

    ball.parent.removeChild(ball);

    }
    }

     

    *********************************************************************************************************************

    /*  the above will work for one ball, but that's going to be pretty boring, so i would expect something different like clicking on one of a number of balls will trigger its fall */

     

    for(var i=0;i<ballNum;i++){

    this["ball_"+i].addEventListener(MouseEvent.MOUSE_DOWN,gotomouse);

    }


    function gotomouse(e:Event){
    e.currentTarget.x = mouseX
    e.currentTarget.y = mouseY
    e.currentTarget.gravity = 1;

    if(!e.currentTarget.hasEventListener(Event.ENTER_FRAME)){

    e.currentTarget.addEventListener(Event.ENTER_FRAME,fall);

    }
    }

    function fall(e:Event){
    e.currentTarget.gravity += e.currentTarget.gravity/2;

    e.currentTarget.y += e.currentTarget.gravity;

    if(e.currentTarget.y>stage.stageHeight+ball.height){

    e.currentTarget.removeEventListener(Event.ENTER_FRAME,fall);

    e.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN,gotomouse);

    e.currentTarget.parent.removeChild(e.currentTarget);

    }
    }

     

     

    1 reply

    kglad
    Community Expert
    Community Expert
    February 25, 2023

    you should remove that event listener, or at least, don't keep re-adding it.

    chienbleu
    chienbleuAuthor
    Known Participant
    February 25, 2023

    i dont know its not working. it just seems to be doubling in speed everytime i click even when i remove event listners or reset the variable or change things around

    kglad
    Community Expert
    Community Expert
    February 25, 2023

    again, you're readding that listener and it is causing a problem.  don't do that.