Я пытаюсь создать форму, основанную на следующих kineticjs JavaScript код:kineticjs форма в машинописи
var triangle = new Kinetic.Shape({
drawFunc: function(canvas) {
var context = canvas.getContext();
context.beginPath();
context.moveTo(200, 50);
context.lineTo(420, 80);
context.quadraticCurveTo(300, 100, 260, 170);
context.closePath();
canvas.fillStroke(this);
},
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 4
});
Это образец, который можно найти на: http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-shape-tutorial/
Мой машинопись выглядит следующим образом :
var square = new Kinetic.Shape({
drawFunc: (canvas: any) => {
var ctx = canvas.getContext();
ctx.beginPath();
ctx.moveTo(25, 25);
ctx.lineTo(475, 25);
ctx.lineTo(475, 475);
ctx.lineTo(25, 475);
ctx.closePath();
canvas.fillStroke(this);
},
fill: '#FF0000',
});
Сформированный JavaScript выглядит следующим образом:
var square = new Kinetic.Shape({
drawFunc: function (canvas) {
var ctx = canvas.getContext();
ctx.beginPath();
ctx.moveTo(25, 25);
ctx.lineTo(475, 25);
ctx.lineTo(475, 475);
ctx.lineTo(25, 475);
ctx.closePath();
canvas.fillStroke(_this);
},
fill: '#FF0000'
});
Проблема возникает на линии canvas.fillStroke(_this)
. _this
ссылается на мой тип дескриптора, а не на сгенерированную форму, как в примере JavaScript. Я также попытался заменить canvas.fillStroke(this)
в своем машинописном тексте () => canvas.fillStroke(this)
, но результат тот же.
Любые идеи?
Я изменил мой код, как вы предлагаете, и он работает, но я думаю, что я совмещаю TypeScript с JavaScript в моем файле TypeScript, так что это невозможно в чистом стиле TypeScript? –
TypeScript * есть * JavaScript - просто расширен. Обозначение жирной стрелки выполняет определенную задачу. Полная 'функция (canvas: any) {' справедлива как TS. – JcFx
спасибо, что у меня есть рабочее решение! –