Flash AS2 Collision Detection: Resize Bug Fixed

Ho avuto a che fare con il CollisionDetection scritto da Grant Skinner per ActionScript 2. Aveva diversi bug piuttosto seri. Ecco il fix, giacché l'ho fatto, lo condivido.


Ho avuto a che fare con il CollisionDetection scritto da Grant Skinner per ActionScript 2.
Mi sono accorto che quando facevo il resize del player, lo script sbagliava a calcolare le collisioni o, ancora peggio, non le rilevava affatto.
In buona sostanza aveva due grossi problemi:

  1. il calcolo dele coordinate Min e Max dei bounding box
  2. la gestione della differenza tra le coordinate Flash, che si adattano al resize del proiettore, e le coordinate dell'area da trasformare in bitmap per poter operare il confronto tra gli oggetti e quindi verificare la collisione. Praticamente si andava a pescare sempre la stessa porzione di proiettore, anche se questo era stato ridimensionato. Ho risolto calcolando un ratio x e y di resize della finestra rispetto all'originale, con cui ricalcolare le dimensioni dell'area di interesse, e calcolando infine un offset x e y per gestire correttamente l'eventualità in cui il resize della finestra non mantenesse le proporzioni iniziali del proiettore.

Vi allego quindi l'ActionScript corretto e funzionante.
Se lo migliorate ulteriormente o se individuate altri bug, per favore comunicatemelo.

p.s: è impostato per funzionare con il Stage.scaleMode="" (cioè che l'swf si adatta alle dimensioni del proiettore). Se volete un'altra modalità di default, impostatela alla riga 69, altrimenti lo script vi riporterà sempre alla scaleMode="".