Skip to main content
chienbleu
Known Participant
Feb 25, 2023 1:47 AM UTC
Answered

as3 thingy problem

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 is closed to new replies. Start a new post to keep the conversation going.
    kglad
    kgladCorrect answer
    Community Expert
    Feb 25, 2023 3:56 PM UTC

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

    }
    }

     

     

    17 replies

    kglad
    Community Expert
    Community Expert
    Feb 25, 2023 2:02 AM UTC

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

    Translate
    chienbleu
    chienbleuAuthor
    Known Participant
    Feb 25, 2023 2:46 AM UTC

    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

    Translate
    kglad
    Community Expert
    Community Expert
    Feb 25, 2023 2:53 AM UTC

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

    Translate