Clip aléatoire à 100% [Résolu]

cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention - 19 août 2008 à 23:04 - Dernière réponse : cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention
- 1 sept. 2008 à 14:20
Bonjour,

je ne suis pas un grand développeur en AS, je viens donc vous demander conseil.

Je souhaiterais faire un clip à 100% aléatoire. C'est à dire : que sur une animation flash il y est un clip animé (par exemple un rond qui grossit), et que ce clip se lance tout au long de la navigation (sans boutons) avec une position aléatoire sur la zone d'écran, une taille entre deux valeurs aussi aléatoire, et que encore une fois aléatoirement il apparaisse (sans cycle prédéfinit) et puisse aussi se multiplié à partir d'un seul clip, évidement de façon aléatoire.

Pour un Exemple plus concret je voudrais que mon clip agisse comme des rond dans l'eau qui peuvent être de taille différentes d'emplacements différents et d'un nombre aléatoire.

J'en demande peut-être un peu beaucoup, mais je penses que c'est possible et en plus sans une complexité énorme, mais bon mais connaissances son limitées.

Je vous remercie d'avance,

Thomas.
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 27 août 2008 à 11:00
3
Merci
Pas de nouvelles Bonne nouvelles

<hr />
Amicalement,Super Niaki
Si sa vous a aidé, n'oubliez pas, Réponse accepté

Merci Niaki 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Niaki
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 20 août 2008 à 09:03
0
Merci
Pfiou ton cahier des charges il est coriaces lol, je ne pense pas pouvoir répondre à tous mais bon lol
Je sais pas quelle niveau tu as en AS, moi je code en as3 je te préviens,
Alors ta une fonction qui s'apelle Math.Random et qui te donne aléatoirement un chiffre entre 0 et 1, ton animation 100% aléatoire peut fonctionner uniquement avec sa.

Supposons que ton animation fait 550pixel par 400, la taille de base, dans ton code tu apelle ton movieclip, genre var monAnim:anim = new anim; (monAnim étant le nom que tu lui donne, et anim le nom que tu a donné lors du lien avec actionscript, je sais pas quelle niveau ta j'essaye d'expliquer au mieux lol)ensuite tu fait addChild(monAnim); et tu doit lui donner une coordonné, c'est la que tu peux faire monAnim._x Math.Random()*550 (comme ton anim fait 550pixel alors sa coordonée en x sera comprise entre 0 et 550) je suis pu sur de comment y s'écrit le Math.Random j'ai pas flash je suis au boulot la, mais de toute façon sa devient bleu quand c'est bon lol. Ensuite tu fait la même chose pour ta coordonné en y : monAnim._y Math.Random()*400 .
Tu a déja ton movieclip placé aléatoirement
Ensuite, on va dire que ton movieclip c'est juste une boule, tu veux que d'abord on la voille pas et qu'ensuite elle grossise de plus en plus jusqu'a une taille aléatoire comprise entre deux valeurs, au même moment que de la placé en x et en y, tu lui donne sa taille de départ monAnim._width 1; et monAnim._height 1;
Pour la taille max aléatoire, il te suffit de créer une variable de taille max, si tu veux par exemple que ton ballon grossise entre 50 et 100 pixel ta va faire:

monAnim.tailleMax = 50 + Math.Random() * 50;
et tu a une taille max aléatoire.

après tu fais un addEventListeners on ENTERFRAME pour avoir une fonction qui s'éxécute en continue et c'est la que tu fera grossir ta boule genre :
monAnim._width += 2;
monAnim._height +=2;
(aprés tu peux aussi la faire grossir a une vitesse aléatoire il te suffit pareil que pour la taille max une autre variable aléatoire au moment de la déclaration
monAnim.vitesse = Math.Random()*20; après a toi de jouer sur les valeur pour obtenir ce que tu veux.)
Ensuite il faut que le ballon disparaisse lorsqu'il arrive a sa taille max, toujours dans la fonction tu met une condition genre
if ((monAnim._width >= monAnim.tailleMax) && (monAnim._height >= monAnim.tailleMax))
{
   removeChild(monAnim); //tu dégage ton movieclip
}
vu que ton anim c'est des rond dans l'eau, plutot qu'il disparaisse d'un coup je te conseil que dans ton movieclip tu met ton rond normal a la premiere frame, et que après tu fasse une petit anim pour qui s'estompe, comme sa tu fait un pti gotoAndPlay sa fera plus réaliste.

Heu je crois avoir répondu a tout mdr, c'est une solution un peu simpliste mais sa devrai marcher, si y en a qui ont des idées moi je suis prenant aussi l'aléatoire c'est toujours utile.
Amicalement, Niaki
Commenter la réponse de Niaki
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 20 août 2008 à 11:36
0
Merci
En gros

var goutte1 :clipGoutte = new clipGoutte;
goutte1._x  = Math.random()*550;
goutte1._y = Math.random()*400;
goutte1.tailleMax = 50 + Math.random()*50;
goutte1.vitesse = Math.random()*20;
goutte1._width = 1;
goutte1._height = 1;

stage.addEventListener (Event.ENTER_FRAME, boucle)

function boucle (evt : Event)
{
   goutte1._width + = goutte1.vitesse;
   goutte1._height += goutte1.vitesse;

    if  ((goutte1._width    >=    goutte1.tailleMax)    &&    (goutte1._height    <=    goutte1.tailleMax)){
   removeChild(goutte1);
}

}

En principe sa marche mais je peux pas tester la
Amicalement, Niaki
Commenter la réponse de Niaki
cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention - 20 août 2008 à 11:47
0
Merci
Bonjour Niaki!

Merci, pour cette réponse, j'ai pas tout compris parce que tu mélange le code rédigé et le code code (je sais pas si tu me comprend lol!).

Mais c'est déjà un très bon début! je connais un peu Math.Random (je te confirme ça s'écrit comme ça) et je sais placer aléatoirement un clip dans l'espace. Ce qui me posait le plus de problèmes c'est tout le reste et surtout les combiner tous ensemble. Mais je penses pouvoir essayer de m'en sortir avec ce que tu m'a dit. Je te tiens au courant.

Et je suis toujours preneur si quelqu'un a une idée

Encore merci,
Thomas.
Commenter la réponse de cs_THEPENGUIN
cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention - 20 août 2008 à 12:05
0
Merci
Il me renvoie deux erreur lorsque je copie ton code

var goutte1 :clipGoutte = new clipGoutte; ------> Impossible de charger la classe ou l'interface 'clipGoutte'.
function boucle (evt : Event)------> Impossible de charger la classe ou l'interface 'Event'.

??? je sais pas trop comment réctifier...
Commenter la réponse de cs_THEPENGUIN
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 20 août 2008 à 12:54
0
Merci
pour le clip goutte est ce que tu l'as creer ??
Faut que tu le creer avant genre tu dessine ta goutte tu la selectionne tu fait clique droit et tu clique sur convert to symbol ( je l'ai en anglais lol) tu dit que c'est un movie clip tu l'apelle clipGoutte ( ou un autre nom peut-etre ke clip c un mot interdit mais je crois pas) et aprs dans ta livrairie tu vois ton clipGoutte, tu fais clique de droite dessus et en anglais ta une option qui s'apelle linkage tu clique la tu peux cocher des case tu coche export for actionscript je crois c'est écris comme sa et y va te proposé direct le nom clipGoutte tu fais ok et maintenant ton objet est dispo et utilisable dans le script.

Ensuite pour boucle c'est bien
function boucle(evt:Event)
{
.....
}
essaye comme sa sans les espaces, sa devrais marcher normalement, mais comme je t'ai dit j'ai pas flash au boulot je peux pas tester, au pire des cas si se soir personne ne te propose une solution qui fonctionne ben je te poste un code qui marche que j'aurai tester chez moi dès demain matin.
Commenter la réponse de Niaki
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 20 août 2008 à 13:01
0
Merci
je viens de voir que sur d'autre code sur le net desfois y mette
function boucle(e:Event)
{
...
}
je sais pas pourquoi alors essaye comme sa aussi, sinon si y a quelqu'un du forum qui peut éclairer la dessus lol
Commenter la réponse de Niaki
cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention - 20 août 2008 à 14:28
0
Merci
Dur dur! surtout si tu n'as pas les outils à ta dispo.

J'ai modifié le code avec ce que tu m'a dit, mais pour tout ce qui est "._x" "._y" "._height" "._width" il m'a dit qu'il fallait mettre "DisplayObject." à la place des "._", ce que j'ai fait cependant maintenant il me met un autre message d'erreur

TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
    at Sansnom_fla::MainTimeline/Sansnom_fla::frame1()

Le code que j'ai est le suivant :

var goutte1 :clipGoutte = new clipGoutte;
goutte1.DisplayObject.x  = Math.random()*550;
goutte1.DisplayObject.y = Math.random()*400;
goutte1.tailleMax = 50 + Math.random()*50;
goutte1.vitesse = Math.random()*20;
goutte1.DisplayObject.width = 1;
goutte1.DisplayObject.height = 1;

stage.addEventListener(Event.ENTER_FRAME, boucle);

function boucle(e: Event) {
    goutte1.DisplayObject.width += goutte1.vitesse;
    goutte1.DisplayObject.height += goutte1.vitesse;

    if ((goutte1.DisplayObject.width    >=    goutte1.tailleMax)    &&    (goutte1.DisplayObject.height    <=    goutte1.tailleMax)) {
        removeChild(goutte1);
    }

}
Commenter la réponse de cs_THEPENGUIN
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 20 août 2008 à 14:37
0
Merci
arf j'essaye de tête mais au boulot si j'installe flash je vais me faire traiter, demain je prend mon ordi portable comme sa je l'aurai avec moi.

Bon sinon au lieu des ._x etc et des display object mais directement .x,

Le code sa donnerai sa :






stop();


var goutte1 :clipGoutte = new clipGoutte;
goutte1..x  = Math.random()*550;
goutte1..y = Math.random()*400;
goutte1.tailleMax = 50 + Math.random()*50;
goutte1.vitesse = Math.random()*20;
goutte1.width = 1;
goutte1.height = 1;

stage.addEventListener(Event.ENTER_FRAME, boucle);

function boucle(e: Event) {
    goutte1.width += goutte1.vitesse;
    goutte1.height += goutte1.vitesse;

    if  ((goutte1.width  >= goutte1.tailleMax) &&  (goutte1.height <=  goutte1.tailleMax)) 
   {
        removeChild(goutte1);
    }

}

Et juste pour précisions, si ton animation et vue du dessus les impacts des gouttes sur l'eau seront ronde, mais si c'est une animation genre comme si t'étais debous et que tu regarder de l'eau tu sais genre de face mais par le haut lol ben les onde elle seront oval et non pu ronde, dans ce cas il faudrat avoir de vitesse de propagation proportionnel l'une a l'autre.
Commenter la réponse de Niaki
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 20 août 2008 à 15:50
0
Merci
Bon le boulot est finit je vais rentrer chez moi j'ai pas le net, mais demain matin premières heures je te post un code as3 qui marche nicquel comme tu veux.
Bonne fin de journée

<hr />
Amicalement,Super Niaki
Commenter la réponse de Niaki
cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention - 20 août 2008 à 19:07
0
Merci
lol! ok merci c'est vraiment gentil

Bonne Soirée!
Commenter la réponse de cs_THEPENGUIN
Niaki 65 Messages postés mardi 19 août 2008Date d'inscription 10 février 2009 Dernière intervention - 21 août 2008 à 09:09
0
Merci
Bon ben moi quand je fait ça sa marche niquel chez moi, ta juste a creer ta class clipGoutte tu sais comme je t'ai dit plus haut et normalement sa amrche, sa te créer une goutte a un endroit aléatoire de taille aléatoire et qui se propage a une vitesse aléatoire, après a toi de le modifier comme tu veux :

stop();

stage.addEventListener(Event.ENTER_FRAME, boucle);

var goutte1 :clipGoutte = new clipGoutte;     //créer ton objet goutte
goutte1.x  = Math.random()*550;     //positionne de façon aléatoire en x
goutte1.y = Math.random()*400;       //positionne de façon aléatoire en y
goutte1.tailleMax = 150 + Math.random()*50;       //taille max de la goutte: 150<taille<200 
goutte1.vitesse = Math.random()*20;       //vitesse de propagation de la goutte
goutte1.width = 1;       // taille de départ de la goutte
goutte1.height = 1;       //taille de départ de la goutte
addChild(goutte1);      //on créer la goutte

function boucle(evt: Event)  // fonction qui se répette tout le temp
{
    goutte1.width += goutte1.vitesse;  //on augmente la taille de ton onde de propagation
    goutte1.height += goutte1.vitesse;  //on augmente la taille de ton onde de propagation

    if  ((goutte1.width  >= goutte1.tailleMax) &&  (goutte1.height >=  goutte1.tailleMax)) 
   //on test lorsque ta goutte arrive a la taille max définie aléatoirement plus haut
   {
        removeChild(goutte1); // si condition respecter on dégage la goutte
        stage.removeEventListener(Event.ENTER_FRAME, boucle); 
        // ici on doit aréter la fonction sinon elle va continuer mais comme ta goutte1 a été
        //supprimé ben y va te mettre une erreur comme quoi il l'a trouve pas
    }

}

voila essaye ça sa te fé juste une goutte, a toi de l'adapter comme tu veux/peut

Amicalement,Super Niaki
Commenter la réponse de Niaki
cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention - 1 sept. 2008 à 11:26
0
Merci
Salut!

Excuse moi j'étais en vacances. Je le test dès que possible et je te tiens au courant pour savoir si je suis vraiment une merde en flash ou si ça va ;)
Commenter la réponse de cs_THEPENGUIN
cs_THEPENGUIN 12 Messages postés mardi 19 août 2008Date d'inscription 7 novembre 2009 Dernière intervention - 1 sept. 2008 à 14:20
0
Merci
Merci c'est génial!! ça marche bien et tout, franchement merci!

Après je veux juste une petite précision, parce que j'ai essayé et je trouve pas, comment je fais pour faire plusieurs gouttes?
Par exemple la première se lance et pendant qu'elle grossit une autre se lance en même temps. et puis une autres en plus. Et aussi parfois yen a pas.

Enfin ma question plus précisément est comment dupliquer la goutte et jouer sur une apparition aléatoire tout au long du flash (sans durée limitée)???

je t'embête ^^
Commenter la réponse de cs_THEPENGUIN

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.