2016-08-08 35 views
3

Ich habe hier eine grundlegende Konfiguration, um die Maus auf Fabric.js-Canvas zu testen, und ich versuche manuell ein Mausereignis per Javascript (nicht per Mausklick) auszulösen, um einen Klick zu simulieren die Leinwand.Mousedown-Ereignis auf Leinwand simulieren Fabric.js

HTML

<canvas id="c"></canvas> 
<a id="testClick" href="javascript:void(0)">Test</a> 

Javascript

var canvas = new fabric.Canvas("c"); 

$("#testClick").click(function() { 
    var e = jQuery.Event("mousedown", { 
    pageX: 700, 
    pageY: 300 
    }); 
    $('#c').trigger(e); 
}); 

canvas.on({"mouse:down": function() { 
    alert("you clicked me"); 
}}); 

Bisher gibt es nichts, was mich dies zu simulieren ermöglicht, geschätzt helfen.

+0

Der Auslöser ist außerhalb des Gehäuses so ‚e‘ kann nicht erreicht werden. Ort var e; außerhalb des Gehäuses. var e; $ ("# c"). Click (function() { e = jQuery.Event ("mousedown", {.... –

+0

@LeroyThompson welches Gehäuse Sie beziehen? Sie sind im gleichen Gehäuse des Klicks() ; – Aeseir

+1

Halten Sie einen Moment mir ehhemm zu einem jsfiddle ... –

Antwort

0

var canvas Variable muss Teil der jQuery-Definition sein. Aber ich sehe, dass es ein Teil von Stoff ist. Daher kann .trigger() für diese Definition nicht verwendet werden.

.trigger() ist jQuery Framework daher könnte es auf jquery ausgewählten Element $ verwendet werden.

UPDATE

https://jsfiddle.net/zo98p72L/14/

Da diese 2mal gestimmt worden ist - ich beschlossen, diese zu veröffentlichen.

+0

Hmm ich dachte, die Ereignis-und trigger-funktionen rufen nur das von ihnen angegebene ereignis auf.wusste nicht, dass sie in anderen libraries eingebunden sein mussten, um sie aufzurufen. – Aeseir

0

können Sie die Ereignisse Feuer direkt auf dem Stoff Leinwand Objekt, Argumente als zweiter Parameter übergeben:

var fCanvas = new fabric.Canvas("c"); 

fCanvas.on("mouse:down", function(e) { 
    alert("you clicked me here ("+e.pageX+","+e.pageY+")"); 
}); 

fCanvas.trigger("mouse:down", { 
    pageX: 700, 
    pageY: 400 
});