Reputation: 1000
Background: Trying to make a ball appear in the same location the mouse is positioned. Using Box2D Library. Working on a class file (.as)
Issue: The mouse event does not work (I click but nothing happens) . No output errors whatsoever. :(
Mouse Event EDIT: Marty Wallace corrected my code, but still the mouse event won't work.
private function _clicked(e:MouseEvent)
{
sim.addCircle({x:mouseX, y:mouseY, radius:0.25, density:5});
sim.start();
Full Code:
package {
import flash.display.MovieClip;
import com.actionsnippet.qbox.*;
import flash.events.MouseEvent;
[SWF(width = 350, height = 600, frameRate = 60)]
public class MouseTest extends MovieClip {
public var sim:QuickBox2D;
/**
* Constructor
*/
public function MouseTest()
{
sim = new QuickBox2D(this);
sim.createStageWalls();
addEventListener(MouseEvent.CLICK, _clicked);
}
/**
* ..
* @param e MouseEvent.CLICK
*/
private function _clicked(e:MouseEvent)
{
sim.addCircle({x:mouseX, y:mouseY, radius:0.25, density:5});
sim.start();
}
}
}
Upvotes: 3
Views: 357
Reputation: 39458
EDIT by Gabriel Meono:
QuickBOX2D uses meters instead of pixels. To work with pixels with this library, one must divide each number by 30. I simply added a
"/3"
to themouseX
/mouseY
and it worked! I updated your code, thanks!
Either do this (recommended):
public var sim:QuickBox2D;
/**
* Constructor
*/
public function MouseTest()
{
sim = new QuickBox2D(this);
sim.createStageWalls();
addEventListener(MouseEvent.CLICK, _clicked);
}
/**
* ..
* @param e MouseEvent.CLICK
*/
private function _clicked(e:MouseEvent)
{
sim.addCircle({x:(mouseX/30), y:(mouseY/30), density:5});
sim.start();
}
Or this (not so recommended, but closer to your code):
/**
* Constructor
*/
public function MouseTest()
{
var sim:QuickBox2D = new QuickBox2D(this);
sim.createStageWalls();
addEventListener(
MouseEvent.CLICK,
function(e:MouseEvent):void
{
sim.addCircle({x:(mouseX/30), y:(mouseY/30), radius:0.25, density:5});
sim.start();
}
);
}
Upvotes: 2