2014-01-19 32 views
0

在一些地方,我只是想繪製一個圖像或矩形,沒有創建一個複雜的對象的開銷。如何將正常的畫布功能與KineticJS混合?

我嘗試

var stage = new Kinetic.Stage({ 
    container: 'container', 
    width: 400, 
    height: 400}); 
var layer = new Kinetic.Layer(); 
var ctx; 
layer.add(new Kinetic.Shape({x:0,y:0,drawFunc:function(context){ctx=context;}})); 
stage.add(layer); 
ctx.fillStyle = "#FF0000"; 
ctx.fillRect(0,0,100,100); 

但我得到的類型錯誤:ctx.fillRect不是一個函數

這裏的小提琴http://jsfiddle.net/qHVsu/

回答

0

你可以從該層下伏背景:

var ctx = layer.canvas.context._context; 
ctx.fillStyle = "#FF0000"; 
ctx.fillRect(0,0,100,100); 

JSFiddle

+0

謝謝,這正是我想要的。 – affiszervmention

+1

危險......動力學通常會爲了自己的目的清除圖層畫布。然後您的矩形將被清除並且不會重繪。您確實需要將「手動」繪圖放置在像Kinetic.Shape這樣的管理對象中,否則可能會導致手動繪圖被刪除。 – markE