AS3>鼠标事件没有发生?

时间:2011-12-01 21:44:40

标签: actionscript-3 mouseevent box2d

背景:尝试让球出现在鼠标所在的相同位置。使用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 个答案:

答案 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();
        }
    );
}