IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

as3 cliquer sur plusieurs movieclip en même temps


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    à la recherche d'un emploi
    Inscrit en
    Juillet 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : à la recherche d'un emploi

    Informations forums :
    Inscription : Juillet 2014
    Messages : 11
    Par défaut as3 cliquer sur plusieurs movieclip en même temps
    Bonjour à tous, j'ai promis à un ami de faire un petit jeu pendant les vacances mais cela faisait un an que je n'avais pas codé, de plus ça n'est pas mon point fort. Bref après avoir tourné mon code dans tous les sens je m'en remet à vous.
    J'ai un movie clip ovale qui suit ma souris qui fait office de tapette à mouche (car le but du jeu, c'est d'écraser... des mouches). Les mouches apparaissent une à une de plus en plus vite, ont un chemin aléatoire et peuvent être plusieurs présentes en même temps sur l'écran. Mon plus gros souci étant de ne pas cliquer directement sur la mouche car je veux pouvoir en écraser plusieurs d'un coup (comme le petit tailleur). J'ai donc fait un hittest au clic entre ma tapette et ma (mes) mouche(s). Les booléens c'est joli mais contrairement à un écouteur ça ne renvoie pas l'objet cliqué/survolé ou que sais-je d'autre. Du coup je n'arrive pas à connaître les mouches que j'ai survolées pour les écraser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function animClick(e:MouseEvent):void{
    	curseur.play();
    	if(mouche){
     
    		if(curseur.hitTestObject(mouche)){
     
    		}
    	}
    Les éventuelles réponses m'aideront peut être à régler mes autres soucis alors je préfère ne pas vous embêter avec pour le moment, mais si je n'y arrive pas, qui sait...

    Je vous remercie de m'avoir lu et je vous remercie d'autant plus pour toute future aide. Bonne soirée/nuit et à demain

  2. #2
    Membre habitué
    Homme Profil pro
    à la recherche d'un emploi
    Inscrit en
    Juillet 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : à la recherche d'un emploi

    Informations forums :
    Inscription : Juillet 2014
    Messages : 11
    Par défaut
    S'il vous plaît ? je veux juste identifier une "mouche" sur laquelle je clique car elles sont toutes crées sous la variable mouche (fonction qui se relance grâce à un timer puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mouche = new Mouche;
     
    stage.addChild(mouche);
    je peux donner un nom à chaque mouche mais je veux savoir lesquelles je touche (hitTest) sans passer par un écouteur.

  3. #3
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut re mouche
    bonjour
    ma solution faire une boucle avec for et le nombre de child

    ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     for(var n:uint = 0; n < numChildren -1; n++){
    	                  if( tapette.hitTestObject(getChildAt(n))){
    						 removeChild(getChildAt(n));
    		              }
                  }
    j'ai fait un exemple http://www.citroen-france-tours-nord.fr/mouche.swf.

    si ca peut t'aider.
    @+ gustave02

  4. #4
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Si tu veux savoir les mouches sous ta tapette, il faut utiliser getRect() ou getBounds() pour les mouches et la tapette et une condition avec les méthodes de rectangle...intersection(), containsRect()...

    un essai rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    package
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.events.MouseEvent;
    	import flash.text.TextField;
    	import flash.text.TextFormat;
    	import flash.ui.Mouse;
     
    	public class Main extends Sprite
    	{
    		private var mouches:Array = new Array();
    		private var tapette:Sprite = new Sprite();
    		private var Affichage:TextField = new TextField();
    		private var Font:TextFormat = new TextFormat();
     
     
    		public function Main():void
    		{
    			var num:uint;
     
    			for (var i:int = 0; i < 3; i++)
    			{
    				mouches[i] = new Sprite();
    				with (mouches[i].graphics)
    				{
    					beginFill(0xFF0000);
    					drawCircle(0, 0, 10);
    				}
    				num = i + 1;
    				mouches[i].name = "mouche n°" + num.toString();
    				addChild(mouches[i]);	
    			}
    			mouches[0].x = 200;
    			mouches[0].y = 200;
     
    			mouches[1].x = 220;
    			mouches[1].y = 220;
     
    			mouches[2].x = 240;
    			mouches[2].y = 200;
     
    			with (tapette.graphics)
    			{
    				beginFill(0x00FF00);
    				drawEllipse(-35, -40, 70, 80);
    			}
     
    			addChild(tapette);
     
    			with (Font)
    			{
    				font = "arial";
    				size = 22;
    				color = 0;
    				align = "left";
    			}
     
    			with (Affichage)
    			{
    				defaultTextFormat = Font;
    				x = 5;
    				y = 20;
    				autoSize = "left";
    				selectable = false;
    			}
    			addChild(Affichage);
    			Mouse.hide();
    			stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
     
    		}
     
    		private function onMouseMove(e:MouseEvent):void
    		{
    			Affichage.text = "";
    			tapette.x = mouseX;
    			tapette.y = mouseY;
    			for (var i:int = 0; i < 3; i++)
    				if (tapette.getRect(stage).containsRect(mouches[i].getRect(stage)))
    					Affichage.appendText("  " + mouches[i].name);
    		}
     
    	}
     
    }
    NewProject.swf

    cordialement (je l'ai fait sur le mousemove mais tu peux le faire sur le mousedown...)

    si tu veux détecter les mouches qui touchent partiellement la tapette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (tapette.getRect(stage).intersects(mouches[i].getRect(stage))).....

  5. #5
    Membre habitué
    Homme Profil pro
    à la recherche d'un emploi
    Inscrit en
    Juillet 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : à la recherche d'un emploi

    Informations forums :
    Inscription : Juillet 2014
    Messages : 11
    Par défaut
    Merci beaucoup pour les réponses !
    Malheureusement je n'ai pas votre niveau et j'ai du mal à me servir de vos codes. J'ai réussi à faire fonctionner celui de gustave02 mais seulement si la tapette est créée avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with (mouches[i].graphics)
    				{
    					beginFill(0xFF0000);
    					drawCircle(0, 0, 10);
    				}
    Comme le proposait Archimède, sinon ça ne réagit pas. Le souci étant que je souhaiterai utiliser un movieclip comme tapette (plus de libertés graphiques et plus de liberté pour les formes), je ne sais comment faire... D'avance, merci

  6. #6
    Membre expérimenté Avatar de gustave02
    Homme Profil pro
    aucune
    Inscrit en
    Février 2013
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Février 2013
    Messages : 162
    Par défaut re mouche
    envois ton fla
    je pense que ça sera plus simple.
    @+

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/01/2009, 12h29
  2. Appliquer PageSetup sur plusieurs feuilles en même temps
    Par sl.info dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/10/2007, 14h22
  3. Recherche sur plusieurs tables en même temps
    Par Zouzou1er dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/10/2007, 09h40
  4. Réponses: 3
    Dernier message: 17/07/2007, 09h44
  5. Réponses: 2
    Dernier message: 19/07/2006, 19h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo