2011-07-21 2 views
2

J'ai ce problème étrange et je ne peux pas le comprendre. J'utilise localToGlobal pour obtenir les coordonnées de mon personnage et faire un hittestpoint sur un clip de niveau. Tout fonctionne bien dans Flash Player 10.1. Mais ensuite j'ouvre exactement le même fichier .swf sur une autre machine exécutant flash player 10.0 r22, et le hittesting ne fonctionne pas. J'ai tout essayé, retracer les parents, etc.Flash Programmation Local à problème Global

La configuration:

classe principale, dans la classe principale ajouter une classe de jeu (Sprite). Dans la classe de jeu, j'ajoute une classe de niveau (Sprite) et une classe de personnage (Sprite)

la 'caméra' suit le personnage, et la classe de jeu est déplacée.

Alors

principal (statique x & y)> jeu (dynamique x & y)> Niveau (statique x & y) & Caractère (dynamique x & y) ceci est mon code:

private function checkLanded():Boolean 
    {//this code runs on the character class, so 'this' = character 
     var localPoint:Point = new Point(this.x, this.y + this.myHeight/2 + 1); 
     var globalPoint:Point = parent.localToGlobal(localPoint) 

     if (Settings.levelGround.hitTestPoint(globalPoint.x,globalPoint.y,true) || Settings.levelPlatforms.hitTestPoint(globalPoint.x,globalPoint.y,true)) 
     { 
      return true; 
     } 
     return false; 
    } 

donc, ce code fonctionne parfaitement dans flash player 10.1 mais pas dans 10,0 maintenant pour 10,0, au lieu d'utiliser parent.globalToLocal, j'ai essayé parent.parent.globalT oLocal qui fonctionne dans 10.0 et non dans 10.1.

Comment puis-je m'assurer que ce code fonctionnera dans tous les lecteurs flash. Je l'ai corrigé, j'ai déplacé la classe principale qui perturbait en quelque sorte le système de coordonnées flash. J'ai ensuite essayé de déplacer la classe de jeu et cela semble fonctionner. Vous vous demandez toujours pourquoi le déplacement de la classe principale arround travail ne marche pas ..


S'il vous plaît aidez-moi,

Merci à l'avance,

Erik Sombroek

+0

pourquoi utilisez-vous tout parent? Si Character est un descendant de Sprite alors il a 'localToGlobal' lui-même. – shanethehat

+0

@shanethehat Oui je sais, mais même en utilisant var globalPoint: Point = this.localToGlobal (nouveau Point (0,0)) j'ai le même résultat – Erik

+0

vous pouvez utiliser des guillemets pour mettre en évidence le code dans les commentaires :) – shanethehat

Répondre

0

c'est un moyen de connaître les coordonnées de un objet d'affichage en référence à l'étape

public function getDisplayObjectsRootCoord(target:DisplayObject):Point{ 
    var coords:Point = target.localToGlobal(new Point()); 
    return coords; 
} 

ou de voir si la souris est sur un élément ...

var target:MovieClip; 
var stage:Stage;// make sure you have a reference to this 
var mouseOverPanel:Boolean = target.hitTestPoint(stage.mouseX,stage.mouseY,true);