2016-09-02 106 views
0

我已成功地創建和canvas元素添加到FramerJS原型:是否可以在Framer JS中使用'畫布'繪圖功能?

myCanvas = document.createElement "canvas" 
myCanvas.setAttribute("width","750px") 
myCanvas.setAttribute("height","500px") 
myCanvas.setAttribute("style","border: 2px solid black; background: #CCC") 

container = new Layer 
    height: 1334 
    width: 750 
    backgroundColor: "white" 
    html: myCanvas.outerHTML 
ctx = myCanvas.getContext "2d" 

ctx.fillStyle = "blue" 
ctx.fillRect(0, 0, 50, 50) 

如果你print(ctx)它顯示了一個有效CanvasRenderingContext2D作爲輸出。問題是,原型沒有任何反應。它仍然是空白 - 就像從未調用過fillRect函數一樣。

需要確認是否這樣做是因爲缺乏支持或者我做錯了什麼。

回答

1

通過將圖層的html設置爲canvas HTML,您將失去對所創建畫布的引用。所以fillRect被調用,而不是在畫布上,你實際看到:)

如果刪除html財產,而是做:

container._element.appendChild(myCanvas) 

到你的畫布引用保持和你實際借鑑顯示的畫布。

完整的示例:

myCanvas = document.createElement "canvas" 
myCanvas.setAttribute("width","750px") 
myCanvas.setAttribute("height","500px") 
myCanvas.setAttribute("style","border: 2px solid black; background: #CCC") 

container = new Layer 
    height: 1334 
    width: 750 
    backgroundColor: "white" 

container._element.appendChild(myCanvas) 
ctx = myCanvas.getContext "2d" 

ctx.fillStyle = "blue" 
ctx.fillRect(0, 0, 50, 50) 

成幀器項目:http://share.framerjs.com/v4a1eyjv806s/

+0

這個工作!我不想用更好的答案來回答我自己的問題,但是隨着你對'_element'的暗示,我想我會'畫布'和'_element',並從一個成幀者'koenbok'找到Github Gist給出了一個確切的例子,讓畫布在Framer JS中工作。如果你想從這裏更新你的問題更多細節:https://gist.github.com/koenbok/7012440,我會接受你的答案! – ortonomy

+0

您是否看到我發佈的framer項目的鏈接?這幾乎包含完全相同的代碼。我已經更新了答案,現在就包含內聯代碼。 – Niels

+0

完美,謝謝!公認。 – ortonomy

相關問題