背景:试图让一个球出现在鼠标所在的相同位置。使用 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();
}
}
}
最佳答案
由 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!
要么这样做(推荐):
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();
}
);
}
关于actionscript-3 - AS3 > 鼠标事件没有发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348718/