删除图层和stage.draw会删除单击侦听器

时间:2014-07-31 11:22:49

标签: javascript kineticjs

我正在尝试测试KineticJs并学习它,所以我从基础开始。我不得不说我不太喜欢JDocs。无论如何,我想在点击舞台时隐藏并在舞台上显示一个图层。所以我写了以下

window.onload = function (){
    stage = new Kinetic.Stage({
        width:800,
        height:600,
        container:'container'
    });
    console.log(backgroundLayer);
    console.log("successfully created stage")
    stage.add(backgroundLayer);
    console.log("Added layer to stage");
    stage.on('click', function(){
        console.log("In click function")

        if (backgroundLayer.visible){
            console.log("backgroundLayer is visible, Make it go away Mommy!")
            backgroundLayer.hide();
            stage.draw();
            console.log(stage);

        }else{
            console.log("Daddy I want a backgroundLayer, NOW!!")
            backgroundLayer.show();
            stage.draw();
        }

    });
}

但点击功能只能使用一次。在图层消失之后,我无法在舞台上再次点击。是否必须这样做,图层是屏幕上添加的唯一图层?它是如何工作的?

1 个答案:

答案 0 :(得分:0)

我对KineticJS一无所知,但我确实知道JS。变量backgroundLayer来自哪里?无论如何,请尝试下面的代码,并用正确的参数替换alpha参数以更改不透明度。我想你不能在一个隐藏的对象上有一个click事件,也许它可以使用一个仍然存在但是不透明度为0的对象......

window.onload = function (){
    stage = new Kinetic.Stage({
        width:800,
        height:600,
        container:'container'
    });
    stage.add(backgroundLayer);
    stage.on('click', function(){
        backgroundLayer.alpha = backgroundLayer.alpha <= 0 ? 1 : 0;
        stage.draw();
    });};