Je règle l'ombre sur le rectangle de tissu js en utilisant

o.setShadow("1px 1px 15px yellow");

Maintenant, l'ombre est définie sur le rectangle respectif où o est l'objet actuel Mais je régénère le rectangle en utilisant un délai d'attente toutes les 30 secondes, le nouveau rectangle est généré mais l'ombre est toujours là sur l'ancien rectangle se régénère l'ombre est toujours là mais idéalement toutes les ombres devraient être supprimées.

J'ai essayé

o.setShadow(null) and o.setShadow(0px 0px 0px) and canvas.renderAll()

Mais cela ne fonctionne pas tout le nouveau rectangle n'a pas de propriété shadow a une ombre de null mais l'ombre est toujours là. Je dois supprimer complètement l'ombre dans la prochaine itération du settimeout. J'utilise la version 3.4.0 de Fabric js.

0
apoorv 21 févr. 2020 à 11:35

1 réponse

Meilleure réponse

Faites obj.shadow = null; suivi de canvas#requestRenderAll, cela supprimera l'ombre de l'objet.

DEMO

const canvas = new fabric.Canvas('canvas');
const square = new fabric.Rect({
  width: 50,
  height: 50,
  left: 50,
  top: 50,
  fill: '#000'
});
square.setShadow("1px 1px 15px yellow");
canvas.add(square);
setTimeout(() => {
  square.shadow = null;
  //or square.setShadow(null);
  canvas.requestRenderAll();
},1500);
canvas {
  border : 1px solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/3.4.0/fabric.js"></script>
<canvas id="canvas"></canvas>
0
Durga 21 févr. 2020 à 11:38