背景:尝试使球出现在鼠标所在的相同位置。 使用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(); } } }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(); } } }最满意答案
由Gabriel Meono编辑:
QuickBOX2D使用米而不是像素。 要使用此库处理像素,必须将每个数字除以30.我只需在mouseX / mouseY添加"/3"可以了! 我更新了你的代码,谢谢!
这样做(推荐):
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(); } ); }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 the mouseX / 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(); } ); }更多推荐
发布评论