2012-12-14 110 views
3

不能完全弄清楚如何用kenetic js對這些對象進行分層,我想要將circle放在circle2之上。我在寫'circle.setZIndex();'不當?這是打破劇本。kinetic js zindex

的jsfiddle與.setZIndex行註釋掉:http://jsfiddle.net/ZfuDs/

function writeMessage(messageLayer, message) { 
    var context = messageLayer.getContext(); 
    messageLayer.clear(); 
    context.font = '18pt Calibri'; 
    context.fillStyle = 'black'; 
    context.fillText(message, 10, 25); 
    } 
    var stage = new Kinetic.Stage({ 
    container: 'container', 
    width: 578, 
    height: 200 
    }); 
    var shapesLayer = new Kinetic.Layer(); 
    var messageLayer = new Kinetic.Layer(); 

var circle2 = new Kinetic.Circle({ 
    x: 360, 
    y: stage.getHeight()/2, 
    radius: 90, 
    fill: 'orange', 
    stroke: 'black', 
    strokeWidth: 4 
    }); 
circle2.setZIndex(3); 

    var circle = new Kinetic.Circle({ 
    x: 380, 
    y: stage.getHeight()/2, 
    radius: 70, 
    fill: 'red', 
    stroke: 'black', 
    strokeWidth: 4 
    }); 
    circle.setZIndex(2); 


    shapesLayer.add(circle); 
    shapesLayer.add(circle2); 

    stage.add(shapesLayer); 
    stage.add(messageLayer); 

回答

4

你可以嘗試先加CIRCLE2形狀,然後添加形狀第二

shapesLayer.add(circle2); 
shapesLayer.add(circle); 

,而不是

shapesLayer.add(circle); 
shapesLayer.add(circle2); 

試試這個http://jsfiddle.net/ZfuDs/1/看來,你不能調用的z-index函數的對象添加到一個層,我得到前

+1

感謝@Palani庫馬爾,這很容易。雖然,我仍然想知道如何去做,因爲我會爲這件作品增加更多的形狀。 – RooWM

+1

查看kineticjs分層教程:http://www.html5canvastutorials.com/kineticjs/html5-canvas-shape-layering-with-kineticjs/ –

3

TypeError: this.parent is undefined 
    this.parent.children.splice(index, 1); 

我沒有得到一個錯誤了,但setZIndex()方法似乎並沒有工作,但即使如此,但 circle.moveToTop()確實工作,檢查http://jsfiddle.net/ZfuDs/3

+0

感謝Brian,我認爲以前的答案效果更好,就這個解決方案而言代碼只是按照正確的順序將圖層添加到形狀圖層。但是如果與其他圖層進行交互以將其展現出來,使用它肯定會有所幫助。 – RooWM

+0

我在想也許我們需要定義父索引和每個孩子呢?不知道如何解決這個問題 - 經過大量的谷歌搜索之後,我看到了z-index的其他問題,卻無法找到合適的文檔。 – RooWM

+0

setZIndex()函數似乎無法正常工作: circle2.setZIndex(2); circle.setZIndex(3); 的作品。但換行不行。 –