У меня есть два файла
tools.coffee
tools = {}
tools.pencil = =>
@.started = false
@.mousedown = (e) =>
c.begin()
c.moveTo(e._x, e._y)
@.started = true
@.mousemove = (e) =>
if @.started
c.lineTo(e._x, e._y)
c.stroke()
@.mouseup = (e) =>
if @.started
@.started = false
script.coffee
find_position = (obj) ->
curleft = 0
curtop = 0
curleft = $(obj).offset().left - $(window).scrollLeft()
curtop = $(obj).offset().top - $(window).scrollTop();
{ x: curleft, y: curtop };
init = ->
window.canvas = $('#drawn').get(0)
c = canvas.getContext('2d')
c.lineJoin = "round";
c.lineCap = "round";
c.strokeStyle = "#"+ghex;
c.lineWidth = 1;
tool = tools.pencil
$('#container canvas').bind('mousedown mousemove mouseup', mouse_draw);
mouse_draw = (e) ->
position = find_position(this)
e._x = e.clientX - position.x;
e._y = e.clientY - position.y;
func = tool[e.type];
console.log tools
tools.pencil(e)
$(window).ready =>
init()
Смысл кода заключается в рисовании элемента canvas, еслиты не можешь сказать.Я пытался заставить это работать в течение прошлых нескольких выходных и вперед, и я не продвинулся очень далеко.Вещи, которые я узнал, определены:
tools.pencil
, но никаких методов карандаша не существует.Я не могу понять, почему это так.
Спасибо за помощь, я думаю, что это просто связано с областью видимости, встроенной в coffeescript.