Forums Développement Multimédia

Aller au contenu

Fonction pour faire ralentir une roue

CODE Actionscript

51 réponses à ce sujet

#1 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 10:31 AM

Bonjour,

Je suis entrain de faire une roue de la chance.
J'ai jusqu’à maintenant réussis à faire une fonction qui quand on clique sur un bouton, fait tourner une roue, mais a l'infini.

J'aimerai connaitre le code qui permet de faire arrêter cette roue après X tours en ralentissant.
J'ai cherché un peu partout, mais pas moyen de trouver comment faire

Merci de votre aide.
Nours.

#2 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 23 April 2013 - 11:02 AM

Bonjour nours 12 bienvenue ici :)


A moi de poser des questions : comment fais tu tourner la roue ? Ce n'est pas facile d'aider quand on ne sait pas à partir de quoi. Un morceau de code entre balises pour lisibilité (celui concerné) aurait été le bienvenu aussi :)

j'imagine donc un Timer et sa fonction de rappel qui augment la rotation d'un pas choisi par toi.
Pour ralentir il suffit de réduire le pas.
Pour réduire progressivement un nombre, le plus souvent on le multiplie par une valeur un peu plus petite que 1, genre 0.95.
Je le fais toujours à l'empirisme : j'essaie et modifie.

ça pourrait donner un truc comme ça :

var _lePas:Number=5


function tourne(te:TimerEvent){

roue.rotation+=_lePas
_lePas*=0.95
// ici
   if(_lePas<0{
         tonTimer.stop()
   }
}

Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#3 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 11:39 AM

Bonjour
Merci de ta réponse

Voici le code que j'ai utilisé pour faire tourner ma roue :


bt_power.addEventListener(MouseEvent.CLICK, onBtnbt_powerClick);
function onBtnbt_powerClick(monEvenement:MouseEvent) {
addEventListener(Event.ENTER_FRAME, onEnter);
function onEnter(evt:Event) {
Roue.rotation+= 30;
}
 

Merci

#4 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 23 April 2013 - 12:10 PM

Et bien parfait, tu utilises un EnterFrame au lieu d'un Timer ça ne change que l'arrêt, au lieu d'appliquer un stop au Timer tu supprimeras l'écouteur :)



Tu coinces où ?
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#5 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 23 April 2013 - 12:20 PM

Bonjour Nours,

Si tu es familier avec les Tweens (moi j'aime bien utiliser TweenLite de Greensock), tu peux avoir un effet plus esthétique du ralentissement de rotation (easing cubic.easeOut par exemple), avec une gestion de la fin de rotation intégrée (onComplete).
Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#6 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 14:40 PM

Merci de vos réponses !

Alors la je coinces sur le tonTimer.stop()
Dans le code il me marque comme erreur : Error #1065: La variable TCMText n'est pas définie.

Bonne journée.

#7 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 23 April 2013 - 14:58 PM

Re,

TCMText est une variable que tu crées toi-même dans ton code ?
Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#8 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 16:07 PM

Non justement je ne l'ai pas crée, c'est pour ça je ne comprend pas.

#9 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 23 April 2013 - 16:15 PM

ton code, ton code !!! ;)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#10 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 16:30 PM

J'ai réussis un nouveau code,
Voici mon code : est-il correcte ? j'ai l'impression que la roue accélère trop



var _lePas:Number=150

bt_power.addEventListener(MouseEvent.CLICK, onBtnbt_powerClick);
function onBtnbt_powerClick(monEvenement:MouseEvent) {
addEventListener(Event.ENTER_FRAME, onEnter);
function onEnter(evt:Event) {
Roue.rotation+= _lePas;
_lePas*=0.95
if(_lePas<0){
                Roue.rotation+= 0;
   }
}
}
 

Merci

#11 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 23 April 2013 - 17:03 PM

plutôt que laisser l'enterFrame tourner en ajoutant zéro à la rotation, sans cesse, supprime l'écouteur ! ;)

et pour le "ralentissement je t'ai donné une valeur au hasard, teste et modifie à ton goût.

et je rejoins Benzouye, une "tween" (même native) ferait sans doute l'affaire bien mieux :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#12 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 17:14 PM

Merci, c'est mieux !

Alors par contre concernant le Tween, comment l'insère t-on ? (en natif ? )

Bonne soirée.

#13 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 23 April 2013 - 17:44 PM

tu as jeté un œil sur la doc queje t'ai mise en lien ?

copie colle les trois premières lignes de code données au tout début de la page,
pose un clip nommé myObject sur la scène et teste

ici le "mode d'emploi" du constructeur : quoi lui passer entre parenthèses
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#14 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 18:57 PM

Alors oui j'avais jeté un oeil, et essayer de copier coller le code, mais cela ne fonctionnait pas.
Je re essaye ce soir.

Merci de ta réponse.

#15 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 23 April 2013 - 20:37 PM

Re,

Bon je n'y suis pas parvenu, je ne comprend pas trop comment ça marche, le clip que je dois créer, je dois le faire sur ma roue ?

Sinon tant-pis, c'est déjà bien ce que j'ai réussis à obtenir.

Merci.

#16 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 24 April 2013 - 08:03 AM

Bon,
Fallait tenter ;)
Si j'en ai le tps je te ferai un topo ce soir :)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#17 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 24 April 2013 - 08:41 AM

Oui Merci :)

C'est parce-que en faite je rencontre un autre problème, qui lui m'embête beaucoup plus :

Je voulais rajouter un mouvement d'un objet (flèche) qui descend et monte en interpolation classique sur 15 frames, donc le première frame, est nickel, mais dès que sa passe au frame 2, 3, 4 ... j'ai juste un fond blanc sans roue, sans ce que j'avais mis sur d'autres calques, j'ai donc crée également une image clé jusqu’à la 15eme frames, mais du coup maintenant, ma roue tourne et se relance sur les 15 premiers frames sans ralentir et s'arrêter comme je le souhaitais, j'ai tout essayé, mais je ne vois pas comment rajouter des interpolations sans que sa modifie donc aussi le temps que la fonction s'utilise ? (désolé si ce n'est pas très clair, mon code est toujours le même, je souhaite juste passer maintenant par l'interface graphique de Flash ) .

Avez-vous une idée ? (je suis sur c'est un truc tout bête, mais je n'ai pas trouvé ) .

Merci, et bonne journée.

#18 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 24 April 2013 - 09:11 AM

Salut Nours,

Je te propose d'utiliser TweenLite (à télécharger et copier le dossier com dans ton répertoire projet).
L'idée est d'appliquer un tween (variation) à la rotation de la roue, à partir d'une valeur et jusqu'à un objectif.
Il faut importer les classes TweenLite.
Pour pimenter un peu le truc, tu peux ajouter un random sur ton objectif pour ne pas que la roue s'arrête toujours après le même nombre de tour ... ici j'ai mis 720 (2 tours) + un aléa de 720, la roue va donc tourner entre 2 et 4 tours.

import com.greensock.*;
import com.greensock.easing.*;

//Initialiser la rotation de la roue
roue.rotation = 0;

bt_power.addEventListener ( MouseEvent.CLICK , lanceRoue );

function lanceRoue ( me:MouseEvent )
{
    //Durée de rotation en sec.
    var duree:Number = 5 + Math.random();

    //Valeur cible de fin de rotation en degres
    var objectif:Number = 720 + ( Math.random() * 720 );

    //Fait varier la rotation de roue depuis position d'origine jusqu'à objectif
    //avec un type de variation Cubique (cf. demo Greensock)
    //et quand le tween est fini lance la fonction finRotation
    TweenLite.to( roue, duree, {rotation: objectif, ease:Cubic.easeOut , onComplete: finRotation });
}

function finRotation ()
{
        trace ( "Fin rotation" );
}

Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#19 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 24 April 2013 - 09:19 AM

Salut.

Un sujet similaire ici : http://forums.mediab...ost__p__1143264

#20 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 24 April 2013 - 10:44 AM

Super, Merci Benzouye ! cela fonctionne.
Merci Jano95, je vais regarder.

Alors maintenant justement, du coup, avec le "random" qui donc détermine un "lot" au hasard, ou "perdu" (en fonction du nombre de tour)
Une question :
Comment déterminer l'endroit ou la roue s'arrête, par exemple la roue s'arrête sur la case "Appareil photo" qui lance la suite de l'animation( par exemple) "Bravo vous avez gagné un appareil photo" ou sur "perdu" > "dommage vous avez perdu"

J'avais regardé un peu, j'ai vu qu"il fallait déterminer des zones (découper la roue), cela avait l'air difficile, mais la je m'y connais pas du tout.
Si jamais cela est trop dur, dites le moi, je ne le tenterai pas.

Merci.
Bonne journée.
Nours.

#21 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 24 April 2013 - 10:51 AM

Voir le messageNours12, le 24 April 2013 - 10:44 AM, dit :

Comment déterminer l'endroit ou la roue s'arrête, par exemple la roue s'arrête sur la case "Appareil photo" qui lance la suite de l'animation( par exemple) "Bravo vous avez gagné un appareil photo" ou sur "perdu" > "dommage vous avez perdu"
Dans le lien donné ci-dessus, un peu plus loin http://forums.mediab...ost__p__1143277

#22 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 24 April 2013 - 11:20 AM

Merci,

J'ai essayé d'intégrer ton code que tu avais fait, dans le mien (ce que j'ai mis en dessous de la fonction qui permet de lancer la roue)

Donc ma roue en faite, il y a 3 choix : Soit 2 cases gagnantes, soit une perdante.
Elle est divisée en 12, donc 4 cases appareil photo, 4 cases DVD et 4 cases perdantes.
J'ai donc divisé : 360 / 12 = 30°
Mais la je ne sais pas comment m'y prendre, pour enchaîner sur la suite, à savoir : si sa tombe sur une des 4 cases DVD, alors cela lance la suite de l'animation (animation qui correspond au "bravo vous avez gagné un DVD"), pareil pour Appareil photo, ou perdu ...

J'ai repris ton code :

function Release(Evt):void {
var vv:Number = Math.round(Math.random() * 360);
import fl.transitions.Tween;
import fl.transitions.easing.*;
new Tween(Roue, "rotation", Regular.easeOut, Roue.rotation, 360 + vv - vv % 30 , 2, true);
};
 

Merci de votre aide.

#23 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 24 April 2013 - 11:58 AM


var vv:Number = Math.round(Math.random() * 5);
 
Pour 6 cases : 0 1 2 3 4 5

Donc pour 12 cases : 0 1 2 3 4 5 6 7 8 9 10 11

var vv:Number = Math.round(Math.random() * 11);
 

Edit:
et

new Tween(roue, "rotation", Regular.easeOut, roue.rotation, 360 + vv * 30 , 2, true);
 


#24 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 24 April 2013 - 12:02 PM

Bon, là je dois partir, de retout demain après midi si tu as encore besoin de moi :cry:

#25 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 24 April 2013 - 12:29 PM

Je te remercie !

Alors oui encore une petite question, maintenant que j'ai fragmenté ma roue en 12 parties,
Comment procède t-on pour :
- Forcer la roue à s'arrêter bien au milieu des cases (enfin pas entre deux cases )
- Permettre de faire un truc du genre : si la roue (avec la flèche qui pointe là) s'arrête sur les cases 1, 4, 7, 10, alors on lance l'animation 2
si la roue s'arrête sur les cases 2, 5, 8 , 11 alors on lance animation 3
et si la roue s'arrête sur les cases 3, 6, 9, 12 alors on lance animation 4
C'est faisable de faire un truc dans ce genre la ?

Pour cela j'utilise les If, Else ? et les nextStep() ?

Merci et bonne journée.

#26 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 24 April 2013 - 13:03 PM

Voir le messageNours12, le 24 April 2013 - 11:20 AM, dit :

Donc ma roue en faite, il y a 3 choix : Soit 2 cases gagnantes, soit une perdante.
Elle est divisée en 12, donc 4 cases appareil photo, 4 cases DVD et 4 cases perdantes.
J'ai donc divisé : 360 / 12 = 30°
Mais la je ne sais pas comment m'y prendre, pour enchaîner sur la suite, à savoir : si sa tombe sur une des 4 cases DVD, alors cela lance la suite de l'animation (animation qui correspond au "bravo vous avez gagné un DVD"), pareil pour Appareil photo, ou perdu ...

Cela va dépendre de comment tu as réparti les cases sur la roue : aléatoirement ou dans l'ordre (1 DVD, 1 APN, 1 perdu, 1DVD, 1 APN, 1 perdu, etc.). Tu pourrais stocker cela dans un tableau (Array).

L'avantage de TweenLite, c'est la facilité de gestion offerte par onComplete qui lance une fonction lorsque le tween est fini (dans mon exemple la fonction finRotation).

Du coup dans la fonction finRotation, tu n'as plus qu'a récupéré roue.rotation, la diviser par 30 (si 12 cases) et la comparer aux données de ton tableau.
Attention, un petit piège sur la valeur de la rotation, flash la convertie par une valeur de -180 à 180 (cf. doc AS3).

On peut imaginer un truc du genre :

import com.greensock.*;
import com.greensock.easing.*;

//Initialiser la rotation de la roue
roue.rotation = 0;

//Le tableau descriptif de la roue ( à corriger )
var tabResult:Array = [ "DVD" , "Perdu" , "APN" , "DVD" , "Perdu" , "APN" , "DVD" , "Perdu" , "APN" , "DVD" , "Perdu" , "APN" ];

bt_power.addEventListener ( MouseEvent.CLICK , lanceRoue );

function lanceRoue ( me:MouseEvent )
{
        // EDIT : Bien penser à supprimer l'écouteur pour ne pas pouvoir relancer la roue pendant qu'elle tourne !
        bt_power.removeEventListener ( MouseEvent.CLICK , lanceRoue );

        //Durée de rotation en sec.
        var duree:Number = 5 + Math.random();
       
        //Valeur cible de fin de rotation en degres
        var objectif:Number = 720 + ( Math.random() * 720 );
       
        //Fait varier la rotation de roue depuis position d'origine jusqu'à objectif
        TweenLite.to( roue, duree, {rotation: objectif, ease:Cubic.easeOut , onComplete: finRotation });
}

function finRotation ()
{
        var result:uint;
        if ( roue.rotation < 0 )
        {
           // Si la rotation est négative, on rajoute 360 pour avoir une valeur de 0 à 360°
                result = Math.floor ( ( roue.rotation + 360 ) / 30 );
        }
        else
        {
                result = Math.floor ( roue.rotation / 30 );
        }
        var lot:String = tabResult[result];
        trace ( roue.rotation , result , lot );

        // EDIT : et on remet l'écouteur (si on veut pouvoir la relancer ...
        bt_power.addEventListener ( MouseEvent.CLICK , lanceRoue );
}
A mon avis ceci est perfectible selon comment sont ordonnés tes cases.

Modifié par Benzouye, 24 April 2013 - 16:30 PM.

Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#27 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 24 April 2013 - 16:34 PM

J'ai peut être oublié de préciser comment traiter la suite ...
Dans un cas simple avec seulement trois possibilités, un switch est sympa :
switch ( lot )
{
        case "DVD": ...
        break;
        case "APN": ...
        break;
        default: ...
}

Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#28 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 24 April 2013 - 16:52 PM

Merci pour ton aide,
Alors justement, comment savoir ou se situent telles ou telles cases sur la roue ?
Il prend la position à partir de quel endroit ?

#29 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 24 April 2013 - 17:25 PM

Je vais essayer de décrire selon les aiguilles d'une montre.

Le premier segment ( celui pour tabResult[0] ) doit être "dessiné" entre 12h et 11h.
Le deuxième segment ( celui pour tabResult[1] ) suivra de 11h à 10h.
et ainsi de suite
Le dernier segment ( celui pour tabResult[11] ) rejoindra par la droite le premier segment de 1h à 12h.
La boucle est bouclée :smile:

Par défaut, la rotation de la roue est à 0.
Le tween va augmenter la valeur de rotation, ta roue va alors tourner dans le sens des aiguilles d'une montre. Faisant passer en premier le segment qui est entre 11h et 12h. Dans ce segment, rotation vaudra entre 0 et 30, result = Math.floor ( roue.rotation / 30 ) = 0
Entre 10h et 11h, rotation vaudra entre 30 et 60, result = Math.floor ( roue.rotation / 30 ) = 1
etc...
Entre 12h et 1h, rotation vaudra entre 330 et 360 ( que flash converti entre -30 et 0) , result = Math.floor ( ( roue.rotation + 360 ) / 30 ) = 11.


Je me demande si je suis clair ... dis moi.
Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#30 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 24 April 2013 - 18:12 PM

Nickel ! cela fonctionne, j'ai positionné ma flèche entre 11h et 12h, comme ça j'ai le bon résultat. Merci !

Bon maintenant me reste plus qu'a faire le système, si c'est DVD alors Bravo vous avez gagner un DVD.

Tu me conseilles de procéder comment ? Re-faire une animation au bout de autant de temps ? Qui comprend la disparition de la roue, et tout, et l'apparition ? Ou tu as une autre idée ?

Merci encore.

#31 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 25 April 2013 - 07:49 AM

Bonjour,

Encore une fois cela dépend de ton expérience.

Tu peux simplement utiliser la timeline avec des gotoAndPlay avec une frame dessinée pour chaque cas (3 donc), mais là je ne vais pas pouvoir beaucoup t'aider, les flasheurs du forum seront plus à même que moi de répondre.

Tu peux également tout gérer en code.
Si tu reprends le switch que je t'ai proposé plus haut (inclus dans la fonction finRotation), tu peux faire un truc comme ça :
// retire la roue et les écouteurs si il y en a encore
removeChild ( roue );
bt_power.removeEventListener( MouseEvent.CLICK , lanceRoue );

// Teste le résultat ( lot ) et pour chaque cas exécute un bout de code approprié
switch ( lot )
{
        case "DVD":
                addChild ( clipGagneDvd ); // un symbole dessiné en bibliothèque
                break;
        case "APN":
                addChild ( clipGagneApn ); // un symbole dessiné en bibliothèque
                break;
        default:
                addChild ( clipPerdu ); // un symbole dessiné en bibliothèque
}

Cela me paraît simple, dis moi.
Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#32 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 25 April 2013 - 09:02 AM

Bonjour,

Tout d'abord Merci.
C'est vrai que le faire avec du code, je comprend beaucoup mieux ce que je fais, et en plus tu expliques bien clairement.

Voila, j'ai copié le code, modifié un peu, cela fonctionne pour la partie qui se retire, mais par contre mon symbole ne s'ajoute pas à la scène une fois DVD gagné.
Je suis obligé de l'ajouter sur la scène pour pouvoir lui donner un nom d'occurrence ? (Car moi je l'ai mis en dehors de ma scène pour que le symbole Gagne DVD arrive sur le côté avec :(exemple)

GagneDVD.y=300;
 
Est ce la bonne méthode ?

Bonne journée.

#33 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 25 April 2013 - 09:47 AM

Si tu as créé ton symbole en bibliothèque (coché "Exporter pour ActionScript" avec un nom de classe), il te faut l'instancier dans le code (créer une instance du symbole qui n'est pour l'instant que dans ta bibliothèque), en tout début de code ou au moment où tu as besoin de l'utiliser, c'est comme tu veux :
var gagneDvd:GagneDVD = new GagneDVD();
Ensuite tu vas pouvoir l'ajouter dans la liste d'affichage :
addChild ( gagneDvd );
Pour l'apparition glissée, je te propose encore d'utiliser les tweens :
// gagneDvd vient en x = 0 en 1 seconde ( à peaufiner )
TweenLite.to ( gagneDvd , 1 , { x: 0 } );

Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#34 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 25 April 2013 - 11:12 AM

Merci pour ton aide, mais cela ne fonctionne pas non plus, au moment de l'exécution j'ai :


"Contrainte implicite d'une valeur du type GagneDVD vers un type sans rapport flash.display:DisplayObject."

J'ai importer dans ma bibliothèque le texte "bravo vous gagnez un DVD" double cliqué dessus, puis dans exporter en ActionScript, jai mis en nom de classe "gagneDvd".

#35 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 25 April 2013 - 11:54 AM

Peux-tu poster l'erreur complète, avec le N° de ligne correspondante, ainsi que ton code en l'état ?

Merci.
Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#36 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 25 April 2013 - 15:08 PM

Re,

Voici mon code :


import com.greensock.*;
import com.greensock.easing.*;
var BRAVO:gagneDVD = new gagneDVD();
roue.rotation = 0;
var tabResult:Array = [ "DVD" , "Perdu" , "APN" , "DVD" , "Perdu" , "APN" , "DVD" , "Perdu" , "APN" , "DVD" , "Perdu" , "APN" ];
bt_power.addEventListener ( MouseEvent.CLICK , lanceRoue );
function lanceRoue ( me:MouseEvent )
{
            bt_power.removeEventListener ( MouseEvent.CLICK , lanceRoue );
            var duree:Number = 5 + Math.random();
           
            var objectif:Number = 720 + ( Math.random() * 720 );
            TweenLite.to( roue, duree, {rotation: objectif, ease:Cubic.easeOut , onComplete: finRotation });
}
function finRotation ()
{
            var result:uint;
            if ( roue.rotation < 0 )
            {
                            result = Math.floor ( ( roue.rotation + 360 ) / 30 );
            }
            else
            {
                            result = Math.floor ( roue.rotation / 30 );
            }
            var lot:String = tabResult[result];
            trace ( roue.rotation , result , lot );
            bt_power.addEventListener ( MouseEvent.CLICK , lanceRoue );
{
            case "DVD":
                            addChild ( BRAVO );
                            break;
            case "APN":
                            addChild ( BRAVO );
                            break;
            default:
                            addChild ( BRAVO );
}
}
 

J'espère que j'ai rien oublié en copier coller
Donc les erreurs sont :


Séquence 1, Calque 'Roue', Image 1, ligne 59 1067: Contrainte implicite d'une valeur du type gagneDVD vers un type sans rapport flash.display:DisplayObject.


Séquence 1, Calque 'Roue', Image 1, ligne 62 1067: Contrainte implicite d'une valeur du type gagneDVD vers un type sans rapport flash.display:DisplayObject.


Séquence 1, Calque 'Roue', Image 1, ligne 65 1067: Contrainte implicite d'une valeur du type gagneDVD vers un type sans rapport flash.display:DisplayObject.

Donc ici en cause ce sont les 3 lignes de "addchild"

Merci

#37 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 25 April 2013 - 15:52 PM

slt :)

gagneDVD est bien le nom de classe d'un symbole de bibli comme copie d'écran ?
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#38 Benzouye

  • Members
  • PipPipPipPipPipPipPipPip
  • 583 messages

Posté 25 April 2013 - 15:58 PM

Re,

L'erreur t'indique donc que ton symbole gagneDVD n'est pas un DisplayObject, il faudrait que tu vérifies dans les propriétés du symbole gagneDVD qu'il soit bien typé MovieClip. Tu dois pouvoir spécifier le type de classe "mère" pour ton symbole quelque part ... par contre au niveau des écrans Flash, je ne vais pas pouvoir t'aider. :jesors:

Après, en relisant ton code, quelques petites touches de formalisme pour aider à la lecture seraient utiles.
Quand tu nommes tes classes, ou tes symboles, penses à mettre une majuscule en premier et à chaque changement de mot et tout le reste en minuscule ( ex : MaClasseSpeciale ) pour les différencier des variables ( maVariableQuiTue ) et fonctions ( maFonctionSpeciale ) qui elles n'auront pas de majuscule en premier.
gagneDVD => GagneDvd (symbole)
BRAVO => bravo (variable)
bt_power => boutonPower (variable/instance)

Enfin, juste avant le switch, penses à enlever l'écouteur pour empêcher de relancer la roue avant d'avoir traité le résultat ... ;-)

Allez cherche bien ! :mrgreen:

[EDIT : Arf grillé par Nataly :D]

Modifié par Benzouye, 25 April 2013 - 15:59 PM.

Benzouye
Travaille avec FlashDevelop 4 + Flex SDK 4.6 open source

#39 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 25 April 2013 - 16:46 PM

Salut.

Me revoilou...

Me suis amusé, modifié ce que j'avais donné comme exemple.

Fichier(s) joint(s)



#40 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 25 April 2013 - 16:48 PM

Salut,

Jano, je viens de gagner un DVD, je peux le retirer où ? .................. :mrgreen:

:jesors:

#41 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 25 April 2013 - 16:50 PM

Voir le messageMonsieur Spi, le 25 April 2013 - 16:48 PM, dit :

Salut,

Jano, je viens de gagner un DVD, je peux le retirer où ? .................. :mrgreen:
Demande à Nours ;-)

#42 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 25 April 2013 - 17:00 PM

Yes ! et moi un appareil photo ! J'adore ce forum ! Trop cool
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#43 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 25 April 2013 - 17:29 PM

Re
Merci à tous pour vos réponses, alors non ce n'est pas a moi qu'il faut demander les lots ^^

Sinon pour en revenir a la bibliothèque, je viens de voir mon problème
En faite il est en bitmap, et je ne vois nul part ou le convertir en clip, si je veux le convertir en clip il faut que je l'ajoute sur la scène, puis clique droit convertir en symbole ...

Vous savez ou trouver ça ?

Merci

EDIT :
J'y suis parvenu en cachant le calque en dessous de mon arrière plan, mais je suppose qu'il doit y avoir une autre méthode ?

#44 Kommodo

    Ceinture Blanche

  • Members
  • Pip
  • 7 messages

Posté 25 April 2013 - 20:15 PM

Bonjour tout le monde, je suis intéressé par vos conseils car je cherche à faire une roue de la même façon, en ce qui concerne ce petit problème, j'ai importé mes textes " bravo..." etc... dans ma bibliothèque en image PNG car je les ai crée sur Illustrator, puis je suis allé faire un tour dans leur propriété pour cocher la case " Exporter pour ActionScript " et leur attribuer un nom de classe. Grâce à ça, je n'ai plus l'erreur précédente mais j'ai celle-ci :

--------------

TypeError: Error #1007: Tentative d'instanciation sur un élément non constructeur.
at DSMultim_fla::MainTimeline/frame1()
--------------

Une erreur d'instanciation que je ne comprend pas trop donc si quelqu'un peut m'aider à résoudre ce petit soucis technique ^^

Merci ;)

Edit :

Désolé du dérangement mais mon problème a été résolu ;) message à supprimer donc.

#45 Nours12

    Ceinture Jaune

  • Members
  • PipPip
  • 22 messages

Posté 25 April 2013 - 23:19 PM

Bonjour,

Alors j'ai tout refais le code, au tout début cela fonctionnait, il m'affichait mon nouveau clip, mais plus maintenant ??

Voici mon erreur : Séquence 1 1046: Ce type est introuvable ou n'est pas une constante de compilation : Perdu

Dès que je fais une variable, il me marque ça ?


Voici mon code :


  var clipPerdu:Perdu = new Perdu();

 


Ici je test juste pour voir si mon image Perdu fonctionne (mise sous un calque en dessous du fond, convertie en symbole clip, exporte en AS sous le nom de Perdu.

Merci encore, je vois pas ou est mon erreur ?



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)