背景:尝试让球出现在鼠标所在的相同位置。使用Box2D库。处理类文件(.as)
问题:鼠标事件不起作用(我点击但没有任何反应)。没有任何输出错误。 :(
鼠标事件编辑:Marty Wallace更正了我的代码,但鼠标事件仍无效。
private function _clicked(e:MouseEvent)
{
sim.addCircle({x:mouseX, y:mouseY, radius:0.25, density:5});
sim.start();
完整代码:
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();
}
}
}
答案 0 :(得分:2)
尝试在MouseTest函数之外声明clicked
函数。
答案 1 :(得分:2)
Gabriel Meono编辑:
QuickBOX2D使用米而不是像素。要使用此库中的像素,必须将每个数字除以30.我只需将
"/3"
添加到mouseX
/mouseY
即可。 我更新了你的代码,谢谢!
要么这样做(推荐):
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();
}
或者这个(不是那么推荐,但更接近你的代码):
/**
* 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();
}
);
}