2016-09-02 10 views
0

мне удалось создать и добавить элемент холста в качестве прототипа 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 слоя в холст 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) 

Framer проект: http://share.framerjs.com/v4a1eyjv806s/

+0

Это сработало! Я не хочу отвечать на свой вопрос лучшим ответом, но с твоим намеком на «_элемент» я подумал, что у меня есть «холст» и «_элемент» Google, и нашел Github Gist от парня-создателя, «коэнбок», который дает примерный пример получения холста для работы в Framer JS. Если вы хотите уточнить свой вопрос с более подробной информацией: https://gist.github.com/koenbok/7012440, я приму ваш ответ! – ortonomy

+0

Вы видели ссылку на проект фреймера, который я разместил? Это содержит в значительной степени тот же самый код. Я обновил ответ, чтобы включить этот код в настоящее время. – Niels

+0

Отлично, спасибо! Принято. – ortonomy