ऐसा नहीं है कि कैनवास में ज़ेड-इंडेक्स नहीं है, यह है कि कैनवास HTML पृष्ठ के विपरीत खींची गई वस्तुओं को नहीं रखता है। यह सिर्फ पिक्सेल मैट्रिक्स पर खींचता है।
कैनवास मॉडल एक बिटमैप है। अन्य लोगों पर वस्तुओं को आकर्षित करने के लिए, आपको उन्हें के बाद खींचना होगा। इसका मतलब है कि आपको जो आकर्षित करना है उसे प्रबंधित करना होगा।
कैनवास मॉडल बहुत तेज़ है, लेकिन यदि आप अपनी ऑब्जेक्ट्स को प्रबंधित करने वाली ड्राइंग सिस्टम चाहते हैं, तो आपको इसके बजाय SVG की आवश्यकता हो सकती है।
यदि आप कैनवास का उपयोग करना चाहते हैं, तो सबसे अच्छा यह है कि आप वस्तुओं के रूप में क्या आकर्षित करते हैं।
var c = document.getElementById('c').getContext('2d');
function Square(x, y, s, color) {
this.x = x; this.y = y; this.s = s; this.color = color;
this.zindex=0;
}
Square.prototype.draw = function(c) {
c.fillStyle = this.color;
c.fillRect(this.x, this.y, this.s, this.s);
}
var squares = [
new Square(10, 10, 50, 'blue'), new Square(40, 10, 40, 'red'), new Square(30, 50, 30, 'green'),
new Square(60, 30, 40, '#111'), new Square(0, 30, 20, '#444'), new Square(70, 00, 40, '#999')
];
function draw() {
c.fillStyle = "white";
c.fillRect(0, 0, 1000, 500);
for (var i=0; i<squares.length; i++) squares[i].draw(c);
}
setInterval(function(){
// give all squares a random z-index
squares.forEach(function(v){v.zindex=Math.random()});
// sort the list accordingly to zindex
squares.sort(function(a,b){return a.zindex-b.zindex});
draw();
}, 1000);
Demonstration
विचार यह है कि वर्ग सरणी zindex को तदनुसार क्रमबद्ध हो जाता है है: मैं उन्हें पुनः बनाने एक वर्ग की सूची और हर दूसरे मैं उनके zindex randomize और रखें: यहाँ एक उदाहरण मैं सिर्फ बनाया है । इसे आसानी से अन्य प्रकार की वस्तुओं तक बढ़ाया जा सकता है।
ठीक है आप एक लाइब्रेरी का उपयोग कर सकते हैं जैसे किनेटिकजेएस (इसमें दूसरों के बीच जेड-इंडेक्स के लिए समर्थन है) यहां एक नज़र डालें http://www.html5canvastutorials.com/kineticjs/html5-canvas-shape-layering-with-kineticjs/ – ppsreejith
हां, मैं कुछ मामलों में kineticJS का उपयोग करता हूं।मैं यह खोजने की कोशिश कर रहा हूं कि मैं इसे कैसे कर सकता हूं। – JalalJaberi