2013-11-23 13 views
20

Ho provato a spostare l'oggetto a livello di codice e ottenere il successo, ma dopo che l'oggetto viene spostato in modo programmatico, non è in grado di selezionare l'oggetto selezionando la posizione corrente dell'oggetto , ancora l'oggetto è selezionabile dalla sua vecchia posizione che ho provato con canvas.calcOffset(); ancora non funziona.Fabricj dopo che l'oggetto si sposta a livello di codice non selezionabile nella sua nuova posizione

Come posso fare l'selezionabile oggetto nella sua posizione attuale del codice che ho usato come segue

Javascript

var canvas=new fabric.Canvas('canvas'); 
canvas.add(new fabric.Rect({      
        left:100, 
        top: 100, 
        width: 75, 
        height: 50, 
        fill: 'white', 
        stroke: 'black', 
        strokeWidth: 3, 
        padding: 10, 
        selectable: true 
      })); 


function changePosition() 
{ 
    canvas.item(0).set({left:300}); 
    canvas.renderAll(); 
    canvas.calcOffset(); 
} 

HTML

<div> 
<canvas id="canvas" width="400" height="400" style="border:1px solid red"/> 
</div> 
<input type="button" onclick="changePosition()" value="Change Possition"/> 

Jsfiddle

Procedura per riprodurre l'errore

  1. Fare clic sul Modifica posizione pulsante
  2. provare a selezionare il rettangolo sulla sua attuale posizione, e spostarsi il cursore sul plave in cui l'oggetto è stato in precedenza ci si vuole essere in grado di selezionare l'oggetto
+15

'canvas.item (0) .setCoords()' – kangax

+1

@kangax grazie mille. sembra essere un bug perché se è stato spostato dovrebbe essere aggiornato, le sue coordinate lo sono. –

+0

@kangax Sto cercando di costruire la lavagna collaborativa, voglio disegnare la linea, es: quando l'insegnante disegna la linea, tutti gli studenti della lavagna dovrebbero essere aggiornati sul disegno come posso farlo? –

risposta

29

è necessario attivare il metodo setCoords() una volta se si modifica la posizione dell'oggetto a livello di programmazione. Questo imposterà Coords del tuo oggetto in una nuova posizione.

+0

grazie a @innodel a cui è stato risposto da kangax molto indietro, controlla il commento sotto la mia domanda. –

Problemi correlati