2012-11-15 3 views
0

J'ai le problème suivant. Je développe actuellement un jeu en ligne pour Facebook. Il est fait avec un canvas HTML5 et j'utilise le moteur Javascript de melonJS.Bogue de fonctionnement de Safari iOS 6

Soudain, mes objets de jeu n'étaient plus visibles et j'ai même trouvé la raison. Le moteur définit un indicateur sur chaque objet, indiquant si cet objet est visible. Par conséquent, le moteur vérifie si la fenêtre (représentée comme un objet rectangle) contient l'objet (également représenté comme un objet rectangle).

Voici le code de la fonction décrite (« ceci » est l'objet, « r » est la fenêtre dans ce cas):

/** 
* check if this rectangle is intersecting with the specified one 
* @param {me.Rect} rect 
* @return {boolean} true if overlaps 
*/ 
overlaps : function(r) { 
return (this.left < r.right && r.left < this.right && this.top < r.bottom && r.top < this.bottom); 
} 

Je sais que cela semble très étrange, mais pour une raison quelconque cette La fonction retourne 'false' même si elle devrait retourner 'true'! Mais ce n'est pas un bug dans le moteur, et pas un bug dans mon jeu. Ce bug n'apparaît que sur la dernière version de Safari (version Mac inconnue et iOS6 sur iPad).

Pour une raison quelconque, ce bogue n'apparaît PAS si la console du développeur est affichée. Si c'est caché, le bug apparaît immédiatement.

Quelqu'un connaît-il ce problème?

+0

Pour une meilleure compréhension: ce que je veux dire comme je l'ai écrit 'devrait retourner vrai', c'est que la fonction renvoie 'faux' même lorsque les quatre opérations de comparaison retournent 'vrai'. –

Répondre

0

Si ce problème persiste, vous pouvez déposer un rapport de bogue sur la question melonJS Tracker: https://github.com/melonjs/melonJS/issues

Il peut avoir été lié à un code qui a changé depuis cette question a été posée (« visible » et « dans viewport "sont maintenant traités comme des choses séparées depuis melonJS 0.9.5)