2010-01-16 5 views
0

Je pense que je l'ai fait avant, mais ne trouve pas le code.Comment changer l'origine des coordonnées dans la scène de Flash avec Actionscript?

Flash comme de nombreux autres cadres graphiques utilisent le coin supérieur gauche comme origine de coordonnées (0,0) car c'est la façon dont le modèle de mémoire sous-jacent est conventionnel.

Mais il serait vraiment plus simple pour mes calculs, si l'origine était au centre de la scène, parce que tout le jeu tourne autour du centre et utilise beaucoup de trigonométrie, angles, etc.

Y at-il méthode intégrée comme Stage::setOrigin(uint, uint); ou quelque chose comme ça?

Répondre

2

Créez un MovieClip ou un Sprite et ajoutez-le à la scène en tant qu'objet racine (au lieu d'ajouter à la scène) à stage.width/2, stage.height/2. Ensuite, lorsque vous ajoutez vos objets de jeu à cela à la place. Ajoutez vos objets de jeu à 0,0 à l'intérieur de ce clip et ils seront centrés sur la scène.

+0

Merci, c'est une bonne idée. Bien que j'ai oublié de mentionner que je voulais utiliser un système de référence 2D classique, I.E. Y positif pointant vers le haut. Je suppose que je vais juste avoir des fonctions de conversion. – Petruza

+0

LOL. Faire pivoter le MovieClip à 180 degrés? Je pense que tu ferais mieux de t'habituer à Flash étant un peu bizarre;) – typeoneerror

+0

Lol J'espère que la pointe de rotation est une blague;) En fait ce n'est pas du tout bizarre, la plupart des bibliothèques graphiques et frameworks utilisent ce système de coordonnées, mais c'est plus facile appliquer ce que j'ai (difficilement) appris à l'école avec un système cartésien régulier. – Petruza

3

Créez une classe qui remplace les setters x et y et les getters pour gérer les calculs. Tout MovieClips sur scène devrait étendre cette nouvelle classe. Bonus: vous pouvez changer les valeurs d'origine quand vous voulez, il n'est donc pas nécessaire d'être au centre de la scène.