Flash: hitTest sur des cibles multiples

  • Velo
  • Born
  • Born
  • No Avatar
  • Inscription: Aoû 16, 2004
  • Messages: 2
  • Loc: beside Heaven
  • Status: Offline

Message Août 16th, 2004, 1:08 pm

Bonjour tout le monde. C'est mon jeu, dans l'avion qui remplace la souris, diminue la bombe lorsque vous cliquez sur, une fois la bombe touche le réservoir, citerne explose.

Maintenant, le jeu est inachevé. I `ve got troubles dans la partie de l'Action Script. Les bombes tombent avec succès. Mais un seul réservoir peut être bombardé et explose, instance dont le nom est "citerne". Quand la bombe touchs autres citernes ( "tank2" "tank3"....... ), Ces réservoirs don `t work. Comment faire un Action Script qui peuvent bombe chaque citerne?


S'il vous plaît me montrer la bonne action script. Merci beaucoup! ! !

Le fichier ci-dessous est la partie. Mon action script a été écrit qui n'est pas correct. (I `ma tiro. Alors, pouvez-vous modifier mon fichier ci-dessous? Il s` urgence pour moi. En fait, c'est sa «cadeau d'anniversaire pour mon ami. Donc, I` ll show ma grande satisfaction de votre aide)

:?:
http://www.were-over-there.com/board/index.php?s=7ea292bf4b270d04a2b6803c79046e7b&act=Attach&type=post&id=17955
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Août 16th, 2004, 1:08 pm

  • digitalMedia
  • a.k.a. dM
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Déc 29, 2003
  • Messages: 5169
  • Loc: SC-USA
  • Status: Offline

Message Août 16th, 2004, 1:25 pm

Je n'ai pas télécharger votre fichier. Fla, mais, d'après votre description, je pense que vous souhaitez suivre une variable pour le nombre de chars que vous créez à l'écran, puis exécutez votre hitTest en A / boucle suivante.

Code: [ Select ]
for(i=1;i<=numberOfTanks;i++){
  if(bomb.hitTest("tank"+i)===true){
   eval("tank"+i).gotoAndPlay("boom");
  }
}
  1. for(i=1;i<=numberOfTanks;i++){
  2.   if(bomb.hitTest("tank"+i)===true){
  3.    eval("tank"+i).gotoAndPlay("boom");
  4.   }
  5. }
- dM
  • Velo
  • Born
  • Born
  • No Avatar
  • Inscription: Aoû 16, 2004
  • Messages: 2
  • Loc: beside Heaven
  • Status: Offline

Message Août 17th, 2004, 4:24 am

Thank you very much for your help. J'aurais fait la question claire. I `ll vous montrer mon travail ci-dessous:

Il ya 5 citernes au total. Leur nom de l'instance est "réservoir" tank2 "" tank3 "" Tank4 "" tank5 ". A côté, j'ai fait 5 clips vidéo qui sont l'animation d'exploser. (Nom de l'instance - "tank_explode", "tank2_explode",.... "tank5_explode") Ils sont différents les uns des autres. quand la bombe ( «bombe») forment l'avion ( «aéronef») Réservoir de toucher, le tank_expolde "" remplacera le "tank", est donc à d'autres.

Il s'agit de l'AS que je mets dans le cadre du 1er clip "bombe"

Code: [ Select ]
this.onEnterFrame = function() {
    // trace(this.hitTest(_root.
    if (this.hitTest(_root.tank)) {
        flag = 1;
        tellTarget (_root.tank) {
            gotoAndPlay(2);
        }
        removeMovieClip(this);
    }
};
  1. this.onEnterFrame = function() {
  2.     // trace(this.hitTest(_root.
  3.     if (this.hitTest(_root.tank)) {
  4.         flag = 1;
  5.         tellTarget (_root.tank) {
  6.             gotoAndPlay(2);
  7.         }
  8.         removeMovieClip(this);
  9.     }
  10. };



AS dans la dernière image

Code: [ Select ]
removeMovieClip(this);




Il s'agit de l'AS j'ai mis dans le Cadre d'action de MC "aircaft"

Code: [ Select ]
Mouse.hide();
bomb._visible = false;
i = 0;
startDrag("aircraft", true);
// function checker(){
// for(j=1;j<=i;j++){
// //trace(_root["bomb"+i].hitTest(_root.tank));
// if (_root["bomb"+i].flag == 1){
// tank.gotoAndStop(2);
// }
// }
// }
//


_root.onMouseDown = function() {
    duplicateMovieClip(bomb, "bomb"+i, i);
    _root["bomb"+i]._x = _xmouse;
    _root["bomb"+i]._y = _ymouse;
    // _root["bomb"+i].gotoAndPlay("play");
    // tellTarget(eval("bomb"+i)){
    // gotoAndPlay(11);
    // }
    ++i;
};
// setInterval(checker,100);
  1. Mouse.hide();
  2. bomb._visible = false;
  3. i = 0;
  4. startDrag("aircraft", true);
  5. // function checker(){
  6. // for(j=1;j<=i;j++){
  7. // //trace(_root["bomb"+i].hitTest(_root.tank));
  8. // if (_root["bomb"+i].flag == 1){
  9. // tank.gotoAndStop(2);
  10. // }
  11. // }
  12. // }
  13. //
  14. _root.onMouseDown = function() {
  15.     duplicateMovieClip(bomb, "bomb"+i, i);
  16.     _root["bomb"+i]._x = _xmouse;
  17.     _root["bomb"+i]._y = _ymouse;
  18.     // _root["bomb"+i].gotoAndPlay("play");
  19.     // tellTarget(eval("bomb"+i)){
  20.     // gotoAndPlay(11);
  21.     // }
  22.     ++i;
  23. };
  24. // setInterval(checker,100);




S'il vous plaît me montrer le bon Action Script et échelon. Merci encore!

http://www/docs/xxkj/lrgs/uploadtp/Bomb_MX6.fla
  • IceCold
  • Guru
  • Guru
  • Avatar de l’utilisateur
  • Inscription: Nov 05, 2004
  • Messages: 1254
  • Loc: Ro
  • Status: Offline

Message Juin 8th, 2006, 2:58 am

utilisez le code qui DigitalMedia fournis, avec un peu de modification. (rappelez-vous, _root [ "tankV" + iTankIndex] représentent un réservoir de visible, pas un type de réservoir.
donc cette boucle sur tous les réservoirs visibles que vous avez sur la carte.
Donc, pour vous bombardez mc,
Code: [ Select ]
this.onEnterFrame = function() {
 for(iTankIndex =1;i<=numberOfTanks ;iTankIndex++){
  if(this.hitTest(_root["tankV"+iTankIndex])){
      flag = 1;
     _root["tankV"+iTankIndex].gotoAndPlay(2);
   }
   removeMovieClip(this);
  }
};
  1. this.onEnterFrame = function() {
  2.  for(iTankIndex =1;i<=numberOfTanks ;iTankIndex++){
  3.   if(this.hitTest(_root["tankV"+iTankIndex])){
  4.       flag = 1;
  5.      _root["tankV"+iTankIndex].gotoAndPlay(2);
  6.    }
  7.    removeMovieClip(this);
  8.   }
  9. };

Je suppose également que, dans l'image 2 de chaque MovieClip tank, vous avez le code pour détruire le réservoir et l'enlèvement des MC.

BTW, une chose que je vais faire.
créer un clip appelé tankProto, dans lequel je stocke le tankImage, tankID, tankBehaviour...et tout ce dont j'ai besoin.
puis, dans la première image de la citerne, chargez le tankImage liées à la tankID.
De cette façon, vous aurez un seul prototype de réservoir et le code ActionScript nécessaire.
“True mastery transcede any particular art. It stems from mastery of oneself - the ability, developed throgh self-discipline, to be calm, fully aware, and complety in tune with oneself and the surroundings. Then, and only then, can a person know himself. ”
  • pzurich14
  • Born
  • Born
  • No Avatar
  • Inscription: Avr 03, 2008
  • Messages: 1
  • Status: Offline

Message Avril 3rd, 2008, 9:39 pm

Je suis actuellement coincé dans un projet que j'ai créé 2 formes en utilisant le script d'action et l'objectif principal était si shape1 en collision avec shape2-shape2s hauteur et la largeur sont affichés sur l'étiquette .. Est-il possible de récupérer des variables shape2 quand shape1 en collision avec elle? please aider Je ne sais vraiment pas quoi faire.....

Afficher de l'information

  • Total des messages de ce sujet: 5 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 43 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC