AS3>鼠标事件没有发生?(AS3 > Mouse Event not happening?)

编程入门 行业动态 更新时间:2024-10-28 10:35:36
AS3>鼠标事件没有发生?(AS3 > Mouse Event not happening?)

背景:尝试使球出现在鼠标所在的相同位置。 使用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(); } ); }

更多推荐

本文发布于:2023-08-07 09:45:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1463303.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:鼠标   发生   事件   Event   Mouse

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!