2016-09-02 51 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

相关问题