FLASH : Noob need help

Discussion dans 'Web, design' créé par Eden, 31 Mai 2007.

Statut de la discussion:
Fermée.
  1. Offline
    Eden GamerZ2008
    Hello all,


    J'explique mon pb...

    J'aimerai que quand je clique sur un objet (bouton), l'image de celui-ci s'affiche dans un movie clip nommé "bouton01" si celui-ci est vide. (vide = frame14)
    L'objet s'afficherai à la frame15, par exemple, du clip bouton01 donc.

    Puis, je voudrai que si j'appuie sur un 2ème objet, que son image apparaisse soit sur le clip "bouton01" si celui-ci est vide (frame14) soit sur un 2ème clip nommé "bouton02" si le premier clip n'est pas vide. (frame>14)


    Voici le code :

    Objet 1 :

    on(release){
    if (_root.bouton01._currentframe=14){_root.bouton01.gotoAndStop(15);}
    else {_root.bouton02.gotoAndStop(15);
    }}



    Objet 2 :


    on(release){
    if (_root.bouton01._currentframe=14){_root.bouton01.gotoAndStop(16);}
    else {_root.bouton02.gotoAndStop(16);
    }}



    Alors, les objets apparraissent bien sur le premier clip... mais quand il y a déjà un objet affiché sur le premier clip, le second objet ne s'affiche pas sur le second clip.

    Donc, si quelqu'un peut m'aider avec le code :p (désolé de mon noobisme :oops: )
    Eden, 31 Mai 2007
    #1
  2. Offline
    [L56] Elite
    Salut,

    Je suis pas sure de tout comprendre, mais dans ton code, y'a déjà un truc qui est pas juste, c'est l'équivalence dans ta condition.

    Alors, "= " c'est une affectation et "==" c'est une équivalence

    comme dans la pluspart des langages je pense...

    [L56]
    [L56], 31 Mai 2007
    #2
  3. Offline
    Eden GamerZ2008

    Oué ca marche:p

    C'était juste le petit = qui manquait. Merci beaucoup :)
    Eden, 1 Juin 2007
    #3
  4. Offline
    Sedeete NEOLIKE
    [L56], une sorte de ouf qui répond à toutes les questions sur le flash :D

    Merci, tu m'as souvent sortis du pétrin ces derniers temps aussi :p
    Sedeete, 1 Juin 2007
    #4
  5. Offline
    [L56] Elite
    mé 2 rie1, moi aussi j'ai commencé un jour, et d'autres m'ont aidé... :)
    [L56], 1 Juin 2007
    #5
  6. Offline
    Eden GamerZ2008
    Re besoin d'aide pour stuff de noob encore une fois.


    Voilà, dans mon animation flash... on contrôle un savant qui avec genre de scanenr s'amuser à scanner les molécules des objets. Les molécules sont stockés dans des capsules...

    Il y a 3 capsules en tout et donc je voudrais qu'une fois que les 3 capsules sont remplies, on puisse jouer l'animation de fin et selon le résultat obtenu, que la fin soit différente.


    Donc, je me dis que je dois faire un bouton qui doit additionner des valeurs (1 pour chaque objet) et selon la somme obtenue, jouer la bonne frame.
    Mais étant noobzor, je ne sais pas comment affecter un valeur à un objet. :oops:


    Donc, pour ceux qui auraient un peu de temps pour répondre. Je voudrais avoir la marche à suivre + un exemple de code.


    Voilà l'animation pour vous faire une idée de ce que je veux.
    http://img181.imageshack.us/my.php?image=cellscanlf0.swf


    Merci d'avance à ceux qui pourront m'aider. :)
    Eden, 9 Juin 2007
    #6
  7. Offline
    [L56] Elite
    Salut,

    Voyons, si j'ai bien compris...

    Bon, en fait, pour la jouer efficace, je te conseille de bosser en AS2(ou en AS3, mais il te faudra Flash9 pour le compiler, donc restons en AS2)

    Tu écris une petite classe ridicule genre ceci :

    Code:
    Class MonObjet extends MovieClip { //class héritant de MovieClip
       private var monEtat:Boolean; //déclaration d'une var booleènne
    
       function MonObjet(){  //constructeur
          monEtat=false;
       }
    
       public function set changeEtat(_datas:Boolean):Void {
          monEtat=_datas;
       }
    }
    
    Sauves cette classe dans un répertoire "/class" au même niveau que ton fla pour faire simple pour le moment (le nom de la classe doit bien sur être "MonObjet.as", tu la nommes comme tu veux, du moment que la première lettre soit une majuscule)

    Tes objets à scanner doivent être de MovieClip.
    Dans la bibiothèque, tu fait un click droit sur tes 3 objets, tu choisis "liaison", tu coches la case "exporter pour AS2", et dans le champs tu mets : "class.MonObjet" (sans les guillemets et sans le ".as" ;) )

    A présent, tu disposes d'une classe avec une propriété "changeEtat".

    Donc, imaginons que ton Dr Maboule soit face à la plante, lors du click sur le bouton, tu dervas faire dans ton fla:

    Code:
    tonBouton.onPress=function() {
       _root.plante_mc.changeEtat=true;
       if (_root.plante.chanteEtat && _root.trucBidule.changeEtat && _root.machinBazor.changeEtat) {
          ici ton code pour jouer l'animation;
       }
    }
    
    Voila, l'avantage de cette méthode est que si plus tard, tu a 50 objets à scanner (ou plus...), tu n'aurra qu'a répéter ces operation, ce qui sera une ENOOOOOOOORME écconomie de code...

    Si ca va pas, n'hésite pas...

    A++
    [L56], 10 Juin 2007
    #7
  8. Offline
    [L56] Elite

    [EDIT]

    La classe doit bien sure être écrite dans un fichier à part.
    Je te conseille l'editeur SEPY (gratuit) pour les classe AS, mais tu peux tout aussi bien les écrires avec Flash (nouveau fichier AS)

    [/EDIT]
    [L56], 10 Juin 2007
    #8
  9. Offline
    [L56] Elite
    RHAAAAAAA, ce PUT*IN DE BOUTON "CITER"!!! :mad: :mad: :mad: :mad: :mad: :mad: :mad:
    [L56], 10 Juin 2007
    #9
  10. Offline
    Eden GamerZ2008
    Thx pour cette réponse rapide :=)

    Je vais tester ca, je dois avouer ne pas tout comprendre en lisant le code mais je manque de pratique et de connaissances flash. D'ailleurs le AS2 m'est inconnu comme terme flash :p .


    Mais en chipotant un peu, je devrai y arriver gràce à ton aide. Merci encore :) :) :)
    Eden, 10 Juin 2007
    #10
  11. Offline
    [L56] Elite
    AS2 veux simplement dire Action Script 2.

    L'action Script 1 date de Flash 5 si j'ai bonne souvenance...

    L'action Script 2 est apparu avec Flash 7.

    L'action Script 3 quand à lui viens d'arriver avec Flash 9.

    La grosse différence entre le 1 et le 2 est qu'en 2 tu peux bosser avec des classes comme avec n'import quelle language orienté objet. Ce qui implique qu'il est entre autre possible de développer de grosse applications Flash en évitant de coder dans le fichier .fla ce qui est nettement plus gérable...

    [L56]
    [L56], 10 Juin 2007
    #11
  12. Offline
    Eden GamerZ2008
    Hello again :p


    Vu que ma noobzoorerie n'a pas de limite... j'ai encore un probème avec le code. :oops:



    Voilà, quand on scanne un objet, celui-ci s'affiche dans un un movie clip. (avec une condition _currentframe)

    Puis, selon le currentframme du movie clip, celui-ci prend des valeurs genre 2, 3 , 4 ou 30 etc...

    Et pour jouer les fins, on clique sur un bouton qui va, selon la somme de la valeur des 3 movies clips, jouer tel ou telle fin.



    Voici mon code :

    Pour les movies clip (le cap01 change en fonction du clip)


    Code:
    onClipEvent (load) {
    	valeur = 0;
    }
    onClipEvent (enterFrame) {
    	if (_root.cap01._currentframe == 19) {
    		valeur = 34;
    	} else if (_root.cap01._currentframe == 22) {
    		valeur = 10;
    	} else if (_root.cap01._currentframe == 30) {
    		valeur = 11;
    	} else if (_root.cap01._currentframe == 31) {
    		valeur = 2;
    	} else if (_root.cap01._currentframe == 33) {
    		valeur = 3;
    	} else if (_root.cap01._currentframe == 34) {
    		valeur = 4;
    	} else if (_root.cap01._currentframe == 35) {
    		valeur = 35;
    	} else if (_root.cap01._currentframe == 36) {
    		valeur = 36;
    	} else if (_root.cap01._currentframe == 37) {
    		valeur = 12;
    	} else if (_root.cap01._currentframe == 14) {
    		valeur = 0;
    	} else {
    		valeur = 1;
    	}
    }

    Et le code du bouton pour jouer les fins :


    Code:
    on (release) {
    	if (_root.cap01.valeur == 0 or _root.cap02.valeur == 0 or _root.cap03.valeur == 0) {
    		_root.ending.gotoAndPlay(42);
    	} else if (_root.cap01.valeur+_root.cap02.valeur+_root.cap03.valeur == 9) {
    		_root.ending.gotoAndPlay(2);
    	} else if (_root.cap01.valeur+_root.cap02.valeur+_root.cap03.valeur == 33) {
    		_root.ending.gotoAndPlay(17);
    	} else if (_root.cap01.valeur+_root.cap02.valeur+_root.cap03.valeur == 105) {
    		_root.ending.gotoAndPlay(32);
    	} else {
    		_root.ending.gotoAndPlay(42);
    	}
    	_root.sound_cp.gotoAndPlay(66);
    }
    



    Si quelqu'un sait me dire à quel moment ca coince, ca m'aiderait beaucoup.
    Merci d'avance:p
    Eden, 16 Juin 2007
    #12
  13. Offline
    [L56] Elite
    Salut,

    dans un premier temps pour ton OR dans l'aide de flash, il est dit :

    "Déconseillé depuis Flash Player 5. Cet opérateur a été déconseillé en faveur de l'opérateur || (logical OR)."

    La calsse que je t'ai donnée l'autre fois n'était pas juste : voici le bon code :

    Code:
    import mx.utils.Delegate; // pour la délégation d'évenements
    
    class classes.BoutonBascule extends MovieClip { //cette classe étend la classe MovieClip
    	
    	private var bascule:Boolean;  // on déclare une variable booleenne
    	
    	function BoutonBascule() { //constructeur de la classe
    		bascule=false;
    	}
    	
    	function onLoad() { //lorsque le clip se charge dans Flash
    		this.onPress=Delegate.create(this,goTrue); //j'aurrais pu mettre le onPress dans le onLoad, mais je trouve ça dégueulasse!!!		
    	}
    	
    	private function goTrue() {	// si on click sur le bouton, la variable "bascule" passe à "true"
    		bascule=true;
    	}
    	
    	public function get etat():Boolean { //propriété état qui renvoie la valeur de la variable bascule		
    		return bascule;
    	}	
    	
    }
    

    Je vais regarder ton code de plus prèt...


    JE NE SAIS PAS QUI T'APPRENDS A PROGRAMMER EN FLASH COMME CA, MAIS JE VAIS METTRE UN CONTRAT SUR SA TETE!!! :mad: :mad: :mad:
    [L56], 17 Juin 2007
    #13
  14. Offline
    [L56] Elite
    tu me donnes plein d'info là, mais pourrais tu me préciser exactement ce qui ne vas pas?

    Ton clip cap01 se positionne t'il bien sur la bonne frame?

    Je suppose que ton bouton ne joue pas la bonne anim, mais j'ai besoin de savoir ce qu'!il en est pour cap01... :-'
    [L56], 17 Juin 2007
    #14
  15. Offline
    [L56] Elite
    Dans ton preloader, tu as mis play(2).

    La méthode play() n'attend jamais d'argument...je n'en ai d'ailleur pas mis dans l'exmple que je t'ai envoyé...
    [L56], 17 Juin 2007
    #15
  16. Offline
    Eden GamerZ2008

    Beh en fait, en fonction du currentframe de chaque clip capsule (cap01, cap02 et cap03), les movie clips capcule se voient attribuer une valeur différente de 0.

    Et le bouton proceed calcule la somme des 3 movie clips et selon la somme obtenue, une fin est joué.
    Le problème, c'est que quelque soit la somme... il joue toujours la même fin. (celle de la somme 105)




    Sinon, pour le loader ca marche mais je comprend pas la fonction "delete".
    Puisque la condition dit que dès que le % == 100 il faut jouer (dans mon cas) _root.gotoAndPlay(2) et donc, j'ai viré la commande "delete" pour tester et ca jouait quelques frames du début en boucle. :p
    Eden, 17 Juin 2007
    #16
  17. Offline
    Eden GamerZ2008
    Oki, j'ai rien dit.

    Le problème était une mauvaise frame de la 4ème fin qui commence à la frame 47 et moi j'avais demandé de jouer la frame 42 :p'

    Petite erreur d'inattention de ma part :oops:
    Eden, 17 Juin 2007
    #17
  18. Offline
    [L56] Elite
    Le delete est là pour dézinguer le onEnterFrame.
    Si tu ne le delete pas lorsque la condition est remplie, il continue à tourner en mémoire, et donc réitère la procédure et bouffe du temps CPU pour rien...

    Il faut TOUJOURS tuer un évenement onEnterFrame quand on en à plyus besoin ;)

    [L56]
    [L56], 17 Juin 2007
    #18
  19. Offline
    Eden GamerZ2008
    Ah oki doki, c'est bon à savoir. :)


    Sinon, j'aurai surement d'autres questions ce soir pour qui voudra bien répondre. (je sais j'abuse :oops: )
    Eden, 17 Juin 2007
    #19
  20. Offline
    Eden GamerZ2008
    Questions 1 :

    Comment faire un compte à rebours?


    Questions 2 :

    J'ai créé un perso sur une map qui fait plusieurs écrans, je sais déplacer le perso mais l'écran reste fixe. :p'


    Cette fois, c'est pour un petit jeu avec un lapin... :)
    Eden, 18 Juin 2007
    #20
Statut de la discussion:
Fermée.