AS3 > 鼠标事件未触发?

3

背景:想要让一个球出现在鼠标所在的位置。使用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();  

        }
    }

}
2个回答

2
尝试将 clicked 函数声明放在 MouseTest 函数之外。

sim 需要声明为类成员。 - Matthias

2

编辑 by 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();
        }
    );
}

QuickBOX2D使用米而不是像素。要使用像素与此库一起工作,必须将每个数字除以30。我只需在mouseX/mouseY中添加一个"/30",它就可以工作了!我更新了您的代码,谢谢! - Gabriel Meono

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接