Sto creando uno strumento semplice con fabric.js e ho bisogno di aggiungere funzionalità per spostare oggetti con la tastiera.E sono bloccato.Per il momento accedo alla console gli eventi della tastiera, quindi so che funziona.ma non so come aggiungere questa immagine alla mia immagine su tela.E aiuto?Fabric js moving image with keyboard
$(function(){
var canvas = new fabric.Canvas('imageCanvas', {
backgroundColor: 'rgba(255, 255, 255, 0)'
});
var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
function handleImage(e) {
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
img.onload = function() {
var imgInstance = new fabric.Image(img, {
})
canvas.add(imgInstance);
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
canvas.on('mouse:down', function(options) {
console.log(options.e.clientX, options.e.clientY);
});
var canvasWrapper = document.getElementById('canvasWrapper');
canvasWrapper.tabIndex = 1000;
canvasWrapper.addEventListener("keydown", doKeyDown, false);
function doKeyDown(e) {
document.onkeydown = function(e) {
switch (e.keyCode) {
case 38: /* Up arrow was pressed */
console.log('up works')
break;
case 40: /* Down arrow was pressed */
console.log('down works')
break;
case 37: /* Left arrow was pressed */
console.log('left works')
break;
case 39: /* Right arrow was pressed */
console.log('right works')
break;
}
}
}
var imageSaver = document.getElementById('imageSaver');
imageSaver.addEventListener('click', imageBorder, false);
imageSaver.addEventListener('click', saveImage, false);
function imageBorder(e) {
canvas.item(0).hasControls = canvas.item(0).hasBorders = false;
}
function saveImage(e) {
this.href = canvas.toDataURL({
format: 'png',
quality: 1
});
this.download = 'test.png'
if(saveImage) {
location.reload();
}else {
alert('somtehing went wrong')
}
}
});
Grazie. Ho fatto questo lavoro ed esattamente in questo modo. Grazie mille per il tuo suggerimento. – burakukula
Ho le chiavi legate correttamente, ma '.left' lo invia correttamente e le altre direzioni non funzionano, strano. Tastiera Mac su Chrome. –
@PaulRedmond: Questo potrebbe essere ovvio, ma nel caso in cui --- hai le istruzioni 'break' dopo ogni' caso'? Omettere quelli potrebbe comportare il comportamento che hai. –