la méthode suivante sera appelée plusieurs fois. Je suis préoccupé par l'appel continu pour de nouveaux rectangles va ajouter une consommation de mémoire potentiellement inutile, ou la mémoire utilisée pour produire le rectangle précédent libéré/écrasé pour accueillir un autre rectangle, car il est affecté à la même variable d'instance?question rapide sur la gestion de la mémoire dans AS3
private function onDrag(evt:MouseEvent):void
{
this.startDrag(false, dragBounds());
}
private function dragBounds():Rectangle
{
var stagebounds = new Rectangle(0 - swatchRect.x, 0 - swatchRect.y, stage.stageWidth - swatchRect.width, stage.stageHeight - swatchRect.height);
return stagebounds;
}
merci pour la réponse, tyler. donc je comprends maintenant que stopDrag() supprimera les références de startDrag(). mais qu'en est-il si dragBounds() a été appelé plusieurs fois mais n'a pas été appelé par startDrag()? Supposons que le rectangle est un grand objet de mémoire qui s'accroche. devrais-je rendre sa variable d'instance accessible à toute la classe afin de l'annuler avant d'en créer une nouvelle comme celle-ci? - if (stageBounds) {stageBounds = null}; stageBounds = nouveau Rectangle (...); - – TheDarkIn1978
Annuler une valeur ne la libère pas de la mémoire, supprime uniquement la référence, ce qui la rend potentiellement disponible pour GC. Tant que toutes les références sont nettoyées, le GC le trouvera et l'enlèvera. Vous ne pouvez pas forcer cela à se produire. Avec les objets volumineux, vous pouvez les réutiliser plutôt que d'en créer de nouveaux. Cela peut être bénéfique si le coût de la création d'un nouveau est supérieur à celui que vous savez que vous aurez besoin à nouveau bientôt. –