从舞台上移除光标时,Eventlistener不会侦听

时间:2013-04-04 14:04:37

标签: javascript html5-canvas easeljs createjs

当我将舞台光标设置为无。我无法以某种方式访问​​我的形状(Startscreen.startButton)eventlistener。当我不隐藏光标时,我可以点击它。

我做错了吗?

function initStartscreen() {
    startscreenLayer = new createjs.Container();

    createMenuCursor();

    stage.addEventListener("stagemousemove", mouseMove);
    stage.enableMouseOver(2);
    stage.cursor = 'none';

    Startscreen = new Startscreen();

    startscreenLayer.addChild(Startscreen.background);

    startscreenLayer.addChild(Startscreen.startButton);
    startscreenLayer.addChild(Startscreen.startText);

        startscreenLayer.addChild(Startscreen.highscoreButton);
        startscreenLayer.addChild(Startscreen.highscoreText);

        stage.addChildAt(startscreenLayer);

    stage.update();

    Startscreen.startButton.addEventListener('click', function() {
        alert(1);
    });
}

function Startscreen() {
    this.background = new createjs.Shape();
    this.background.graphics
        .beginFill('pink')
        .drawRect(0, 0, stage.canvas.width, stage.canvas.height);

    this.startButton = new createjs.Shape();
    this.startButton.graphics
        .beginFill('#000')
        .drawRect(0, 0, 250, 50)
    this.startButton.x = (stage.canvas.width/2)-125;
    this.startButton.y = 150;
    this.startButton.name = "startButton";

    this.startText = new createjs.Text('Start', '30px Calibri', '#FFF');
    this.startText.x = this.startButton.x + 95;
    this.startText.y = this.startButton.y + 7;
}

即时更新: 即使我将所有内容都删除,只需将initStartscreen()留在我的onload中,它也无效。

它必定是一些分层问题或者其他因为我在我的高分层中创建了一个后退按钮,当我通过从主菜单导航时使用它时可以使用它。但是在我玩完游戏并转到同一页面/功能后,后退按钮不起作用。

有没有办法让我总是把我添加到顶层的图层?

1 个答案:

答案 0 :(得分:0)

我必须承认有点困惑,我可能需要你的澄清!

我是否了解您正在隐藏光标,然后希望用户找到带有“隐形”光标的开始按钮? - 你对用户有意义吗? :P

如果您觉得stage.cursor='none'行为不端,可以使用CSS在最新版本的IE,FF和Chrome中将光标设置为“无”。在“不可见”状态下,鼠标事件仍然被触发。下面的代码和小提琴:http://jsfiddle.net/m1erickson/qBw9P/

$("#theStageCanvas").click(function(){ $("#theStageCanvas").css("cursor","none"); });

或者您是否有多个阶段,并且您希望对点击事件做出底层回应,即使它有一个顶级阶段?

您可以像这样关闭顶层的事件监听:

topStage.onClick=null;
topStage.onMouseDown=null;
topSstage.onMouseUp=null;
topStage.onMouseMove=null;