sto ottenendo posizioni ogni 100 ms e applicarli al DOM in questo modo:valori di transizione entrare in D3
const div = d3.select(container).selectAll('div').data(positions)
div.enter()
.append('div')
div.transition()
.duration(100)
.style({
top: d => d.y,
left: d => d.x,
})
div.exit()
.remove()
Così gli elementi ottenere un'animazione fluida alle nuove posizioni nei 100ms che ci vuole per ottenere il prossime posizioni. Funziona bene
Ma ho diversi elementi nel DOM che dipendono dalla posizione dei primi elementi. Sono resi con gli stessi dati di posizione, ma in un modulo diverso del software.
Il mio problema è che questa transizione interpola dati che non sono disponibili per gli altri moduli. Gli elementi di questi altri moduli sembrano fornire visualizzazioni "otticamente sbagliate", perché si basano sui dati grezzi.
Esempio: un punto si sposta in un quadrato e il quadrato viene evidenziato, ma la posizione del punto viene interpolata e la posizione utilizzata dal quadrato per controllare se deve essere evidenziata non lo è. Quindi il quadrato viene evidenziato anche se il punto non è al suo interno.
Come aggirare questo? Posso afferrare quei valori interpolati da qualche parte?
Il problema è che non interpolare da 0, ma dalla vecchia posizione. Ma quando provo a selezionare il div nella funzione tween e ottengo il suo top-style, ottengo solo "auto" e non l'ultima posizione: \ –
@K .., non sono sicuro di aver capito, puoi ottenere il posizioni iniziali nella funzione. Vedi gli aggiornamenti sopra. – Mark
Nel tuo esempio stai usando 0, ma se lo faccio, ogni volta che 'd.x' cambia, viene interpolato da 0 non dalla sua ultima posizione. –