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

Flash Discussion :

Créer turntable - 360-


Sujet :

Flash

  1. #1
    Membre du Club
    Homme Profil pro
    Modeleur 3D - Graphiste
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Modeleur 3D - Graphiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 49
    Points
    49
    Par défaut Créer turntable - 360-
    Bonjour,

    Je me présente MonsieurRaton, alias Éric ou inversement, je suis modeleur 3D pour le jeu vidéo.

    Je souhaite mettre sur mon site internet un turntable interactif fait sous flash.

    J'ai quasi réussi, mais je rencontre 3 principaux problèmes :
    1) mon loader n'affiche pas les valeurs correctement...
    Il affiche les pourcentages de 0 à 9 puis "hésite" à afficher 1 ou 0 et même le "%".

    2) lorsque l'utilisateur clique et fait glisser sa souris de gauche à droite, au lieux de lire les frames de 1 à 90, il lit la frame 1 puis saute directement à la 15 et continue normalement jusqu'à 90.

    3) Mon turntable n'est pas infini, c'est à dire qu'il s'arrête à l'image 90 mais ne retourne pas à la frame 1 pour recommencer un cycle.

    Pouvez-vous m'aider s'il vous plait ?
    Cela fait plusieurs heures que je cherche dans le code et je ne comprends pas pourquoi ça ne fonctionne pas.

    Est-ce que les scripts sont en action script 1, 2 ou 3 ?
    Je ne sais pas.

    Je vous mets ici la source de mon turntable basé sur le travail de Endlessillusionx sur DA.
    le fichier *.swf (pour que vous voyez ce que ça donne) -> http://foxcoon.free.fr/3dvf_forum/Ai..._Turntable.swf
    le fichier *.fla (pour que vous voyez les scripts) -> http://foxcoon.free.fr/3dvf_forum/Ai..._Turntable.fla

    Merci d'avance pour votre aide.

    P.S: J'ai déjà demandé un coup de main à l'auteur de cette base, mais il m'a répond que ça faisait bien longtemps qu'il l'a crée et il ne peut pas m'aider sur ce coup là.

  2. #2
    Membre du Club
    Homme Profil pro
    Modeleur 3D - Graphiste
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Modeleur 3D - Graphiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 49
    Points
    49
    Par défaut
    Aucune réponse ?
    Hum...

    Voici le code qui permet de faire le turntable.
    Le code est liée à au symbole "Model"
    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
    onClipEvent(mouseDown) {
    	down = 1;
    	down_x = _xmouse;
    	currentFrm = frm;
    }
     
    onClipEvent(mouseUp) {
    	down = 0;
    	drag = 0;
    	frm = currentFrm;
    }
     
    onClipEvent(mouseMove) {
    	if (down) {
    		drag = 1;
    		up_x = _xmouse;
    		distance = (-1)*(Math.floor((down_x - up_x)*100/480));
    		turn = Math.floor(distance/3.33);
    		currentFrm = frm+turn;
    		if (currentFrm < 1) {
    			currentFrm = Math.abs(89+currentFrm);
    		}
    		if (currentFrm > 89) {
    			currentFrm = Math.abs(currentFrm-89);
    		}
    		goToAndStop(currentFrm);
    	}
    }
    Voyez-vous une erreur qui fait que ça passe directement de 0 à 15 puis 16,17,18,19 ect jusqu'à 89 ?

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Perso, je n'ai pas flash mais je peux essayer de t'orienter sur une méthode qui marchera...
    Voici du code as3 que je viens de faire vite fait pour faire bouger un rapporteur à la souris en fonction de l'angle :
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    package 
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.events.MouseEvent;
    	import flash.text.TextField;
    	import flash.text.TextFormat;
    	import flash.geom.Point;
         [SWF( width = '1024', height = '500', backgroundColor = '0xdcdcdc')]
     
    	public class Main extends Sprite 
    	{
    		private const R:uint = 240;
    		private var angle:Number = 0;
    		private var pt:Point;
    		private var oldtheta:Number = 0;
    		private var Rapporteur:Sprite = new Sprite();
    		private var infoangle:TextField = new TextField();
    		private var police:TextFormat = new TextFormat();
     
     
    		public function Main():void{
    			if (stage)
    				init();
    			else
    				addEventListener(Event.ADDED_TO_STAGE, init);
    		}
     
    		private function init(e:Event = null):void{
    		 const pi:Number = Math.PI;
    	         const l:Number = 1.95 * R / 2;
    		 const d:Number = 1.8 * R / 2;
    		 removeEventListener(Event.ADDED_TO_STAGE, init);
     
     
    		  x =2* R;
    		  y = stage.stageHeight / 2;
     
    		  with (graphics) {
    			  lineStyle(1, 0);
    			  moveTo(R,0);
    			  lineTo(1.3*R,0);
    		  }	  
     
    		  with (Rapporteur.graphics){
    			  beginFill(0xFFFFFF);
    			  drawCircle(0, 0, R);
    			  endFill();
    			  lineStyle(2, 0);
    			  drawCircle(0, 0,0.01*R);
    			  moveTo(R, 0);
    			  lineTo(R - 0.3 * l, 0);
     
    			  for (var i:uint = 0; i < 360; i++){
    					moveTo(R * Math.cos(i * pi / 180), R * Math.sin(i * pi / 180));
    					lineTo(l * Math.cos(i * pi / 180), l * Math.sin(i * pi / 180));
    			  }
    			  for (var j:uint = 0; j < 36; j++){
    			    moveTo(R * Math.cos(10 * j * pi / 180), R * Math.sin(10 * j * pi / 180));
    			    lineTo(d * Math.cos(10 * j * pi / 180), d * Math.sin(10 * j * pi / 180));
    			  }
    		     } 
     
    			with (police){
    				font = "Tahoma";
    				size = 14;
    				bold = true;
    				color = 0;
    			}
     
    			with (infoangle){
    				x = 1.1*R;
    				y = 50;
    				defaultTextFormat = police;
    				text = String(angle);//en degrés
    			}
     
     
    		  Rapporteur.buttonMode = true;
    		  addChild(Rapporteur);
    		  addChild(infoangle);
    		  Rapporteur.addEventListener(MouseEvent.MOUSE_DOWN, dodown);
    		  stage.addEventListener(MouseEvent.MOUSE_UP, doup);
    		}
     
    		private function doup(e:MouseEvent):void{
    			Rapporteur.removeEventListener(MouseEvent.MOUSE_MOVE, domove);
    		}
     
    		private function domove(e:MouseEvent):void{
    			var dtheta:Number;
     
    			pt = new Point(mouseX, mouseY);
    			dtheta = Math.atan2(pt.y, pt.x) * 180 / Math.PI;
    			Rapporteur.rotationZ += dtheta - oldtheta;
    			angle = (Rapporteur.rotationZ % 360);
    			oldtheta = dtheta;
    			infoangle.text = String(angle);
    		}
     
    		private function dodown(e:MouseEvent):void{
    			pt = new Point(mouseX, mouseY);
    			oldtheta = Math.atan2(pt.y, pt.x) * 180 / Math.PI;
    			Rapporteur.addEventListener(MouseEvent.MOUSE_MOVE, domove);
    		}
     
    	}
     
    }
    L'idée pour toi, serait que le currentFrame de ton movieclip s'incrémente à chaque fois que angle augmente de 4° (360/90 en 2d ici pour moi...) un gotoAndStop(currentFrame+1) suivant le sens de rotation...
    ...Soit une condition avec angle modulo 4=0...

    cordialement

    PS :ton code avec des valeurs numériques non expliquées ne permet pas de trouver comme ça. J'ai donc essayé une autre approche...
    Fichiers attachés Fichiers attachés

  4. #4
    Membre du Club
    Homme Profil pro
    Modeleur 3D - Graphiste
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Modeleur 3D - Graphiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 49
    Points
    49
    Par défaut
    Bonjour Archimède, merci de votre réponse, mais ce n'est pas ce que je cherche.

    J'ai finalement réussit à faire ce que je voulais en modifiant à peine le code.
    Le résultat se trouve sur ma gallerie DA, voici le lien.

    -> http://monsieurraton.deviantart.com/...able-439911159

    Il y a juste une problème, impossible de précharger mon fichier.
    Lorsque je fais une séquence de chargement à la première frame de la première séquence, mon turntable tourne tout seul sans qu'on puisse intervenir comme je le voulais avant.

    Je n'ai pas réussi à résoudre ce problème encore.

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Oui, si un simple déplacement arbitraire en x sur un quelconque endroit de la scène te suffit pour faire tourner ton personnage sans suivi. Pas de problème....

    Tu remarqueras aussi que si tu essaies de faire tourner ton objet, à mi-course, il tourne dans l'autre sens...ce qui est normal avec ta méthode

    Joli personnage !

  6. #6
    Membre du Club
    Homme Profil pro
    Modeleur 3D - Graphiste
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Modeleur 3D - Graphiste
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 49
    Points
    49
    Par défaut
    Bonjour Archimède, Merci.

    Pour le fait que le personnage tourne dans l'autre sens, ça m'arrive lorsque je déplace la souris très vite à gauche ou à droite. O_x

Discussions similaires

  1. Turntable 360 avec zones de survol
    Par superleon dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/02/2012, 18h14
  2. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 17h10
  3. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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