2016-07-04 5 views
0

Ich rufe benutzerdefiniertes Ereignis auf diese Weise: How can I fire custom events on canvas in Fabric JS?Anruf fabricjs Ereignis kontinuierlich

Gibt es eine Möglichkeit, es wie das Objekt kontinuierlich zu nennen: Skalierung/Verschieben von Event?

LÖSUNG:

ich dieses Problem gelöst, das Objekt mit: bewegendes Ereignis:

canvas.on({'object:moving': handleMovement}); 
... 
var handleMovement = function (event) { 

    //only when a specific corner was dragged 
    if (event.target.__corner == 'mb') { 
     //reset original position 
     event.target.top = event.target.originalState.top; 
     event.target.left = event.target.originalState.left; 
     //do other stuff 
    } 
} 

Antwort

1

Wenn Sie das Ereignis kontinuierlich aufrufen müssen, können Sie es in einer while-Schleife wickeln könnte oder die Verwendung eine Art Zeitüberschreitung.

while (shouldFire) { 
    canvas.trigger(event); 
} 

oder

setTimeout(triggerEvent, 100); 
function triggerEvent() { 
    canvas.trigger(event); 
    setTimeout(triggerEvent, 100); 
} 

jedoch, dass möglicherweise nicht für den Benutzer (vor allem der während) ideal.

Während das Objekt: Skalieren/Verschieben Ereignisse erscheinen kann kontinuierlich aufgerufen werden, ich glaube, dass sie einfach unglaublich schnell Interaktion in Reaktion auf Benutzer aufgerufen werden. Es gibt eine gute event demo auf der fabricjs Website für das Betrachten. Wenn Sie ein Objekt auswählen und es einfach halten, werden keine Ereignisse von der Leinwand ausgelöst. Stattdessen werden die Ereignisse nur als Reaktion auf Benutzerbewegungen ausgelöst, z. B. wenn die Form um die Arbeitsfläche gezogen wird. Anstatt zu versuchen, die Ereignisse kontinuierlich abzufeuern, können Sie einfach auf kleine Änderungen der Benutzereingabe warten.

+0

Danke für den Vorschlag. Ich habe mein Problem gelöst, indem ich die Herangehensweise an die Situation völlig geändert habe. Ich benutzte das Objekt: Moving Event überprüft, ob eine bestimmte Ecke gezogen wurde und setzte sie dann auf die vorherige Position zurück. –