2009-05-04 11 views
1

Pour commencer: Je travaille avec Flash CS3 et Actionscript 2.0Frogger avec flash

Je suis en train de refaire le jeu Frogger, et je suis un peu coincé avec mettre les voitures à l'écran.

Pour ceux d'entre vous qui ne connaissent pas frogger: http://www.actionscript.org/showMovie.php?id=1157, mais je n'implémente pas les journaux.

Le gros problème est que j'ai 3 voitures, qui sont toutes des clips dans la bibliothèque, je n'en placerai aucune sur la scène. Plusieurs instances doivent apparaître en même temps. Ces voitures doivent conduire dans les deux sens et les 3 voitures doivent apparaître dans toutes les voies (j'ai 4 voies) Bien sûr, 1 voie n'a qu'une direction.

Je peux utiliser hitTest() pour voir si ma grenouille a heurté l'une des voitures, mais je dois la rendre réaliste, ce qui signifie que je ne peux pas coder en dur la quantité de voitures sur chaque voie.

Je semble peux pas trouver comment faire pivoter un MovieClip autour de son centre ...

Répondre

2

Eh bien, il y a deux choses que je peux suggérer. Pour les voitures, créez chaque voiture comme objet séparé dans la bibliothèque (ne les mettez pas sur la scène). Lorsque vous avez besoin d'en afficher une à l'écran, utilisez attachMovie() pour créer une instance de la voiture que vous voulez. Pour les faire faire face à des directions différentes (je crois que vous avez juste besoin de gauche et de droite), vous pouvez soit créer deux copies de chaque voiture dans la bibliothèque, une face à chaque direction. Ou, je pense que si vous définissez la valeur de xScale à -100%, je pense que cela va basculer horizontalement, de sorte que vous pouvez utiliser la même instance de bibliothèque pour les deux. Cependant, il serait probablement plus facile à traiter si vous aviez des instances de bibliothèque séparées pour chaque direction, au lieu de faire des rotations sur une seule.

+0

Merci. L'asignement a déjà dit que seul le fond pourrait être sur la scène, ce qui signifie que toutes les voitures sont dans la bibliothèque. – KdgDev

1

Pour répondre à votre question sur la rotation, les clips tournent autour de leur point d'enregistrement, pas autour de leur centre visuel. Lorsque vous créez vos clips, assurez-vous que les réticules de l'écran d'édition de symboles apparaissent au centre. Le réticule est le point d'alignement, qui définit fondamentalement où x: 0, y: 0 est sur le clip.

Il semblerait que votre question concerne vraiment l'utilisation de hitTest pour voir si la grenouille a heurté n'importe laquelle des voitures, peu importe laquelle, combien sont sur scène, etc. Donc ce que je ferais, c'est créer une classe pour la voiture avec un membre statique qui peut être un pointeur vers la grenouille, puis demandez à la classe de vérifier si elle frappe la grenouille.

Donc, pour commencer:

public class Car extends MovieClip{  
    public static var frog:MovieClip; 
    private var interval; 
    public function Car(){ 
     super(); 
     interval = setInterval(checkHit,500); 
    } 
    private function checkHit(){ 
      if(this.hitTest(frog)){ 
      trace("the frog hit the car"); 
      clearInterval(interval); 
      //do what you need to do when the frog gets hit 
     } 
    } 
} 

Pour chaque voiture, vous pouvez étendre la classe du véhicule:

class Truck extends Car{ 
    public function Truck(){ 
     super(); 
    } 
} 

class Volkswagen extends Car{ 
    public function Volkswagen(){ 
     super(); 
    } 
} 

class Bus extends Car{ 
    public function Bus(){ 
     super(); 
    } 
} 

Après avoir créé les classes individuelles, utilisez couplage sur vos symboles de bibliothèque pour chaque voiture . (cliquez avec le bouton droit sur le symbole, sélectionnez Liaison et tapez le nom de votre classe dans le champ Classe).

Enfin, le paramétre de grenouille à votre grenouille sur scène

var frog:MovieClip = attachMovie("frog_mc", frogMC, _root.getNextHighestDepth()) 
Car.frog = frog; //set the static var "frog" to your frog instance 

Et maintenant, vos voitures devraient tous se vérifier s'ils frapper la grenouille.

L'autre option est de code fonction checkHit() sur la première image de chaque autre MovieClip voiture, plutôt que d'utiliser des classes pour chaque:

this.onEnterFrame = function(){ 
    if(this.hitTest(_root.frog)){ 
     trace("the frog hit the car"); 
     //do what you need to do when the frog gets hit 
     delete this.onEnterFrame; 
    } 
}