begin process at 2012 05 27 15:18:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Multimédia

 > 

Animation

 > 

onEnterFrame AS2


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

onEnterFrame AS2

mercredi 21 avril 2010 à 16:37:01 | onEnterFrame AS2

ninodroc

Bonjour !
je débute en ... tout (Je fais un peu de html, php, mysql et maintenant flash AS2 et 3).
J'essaie d'animer des clips en AS2, sans utiliser les outils de dessin, ni la Timeline de flash CS3.
je suis arrivé à créer mes clips de champs texte, avec createEmptyMovieClip et createTextField depuis un fichier XML simple (4 nodes).
Et j'utilise onEnterFrame pour animer mes clips ( les formules mathématiques ne sont pas très académiques).
Le problème est le suivant :
j'obtiens un seul mouvement pour tout les clips et non pas un mouvement différent par clips.
Pouvez-vous m'aider à les animer indépendamment ?
Merci, voici mon code :
Code ActionScript :
//chargement du xml
function load_xml(path:String, type:String) {
	var xml:XML = new XML();
	xml.ignoreWhite = true;
	xml.onLoad = function() {
		var nodes = this.firstChild.childNodes;
		numOfItems = nodes.length;
		//création du nuage
		nuage(nodes);
	};
	xml.load("xml/"+path);
}

function nuage(nodes) {
	cx = 100;
	cy = 50;
	monClip._x = cx;
	monClip._y = cy;
	monFormat = new TextFormat();
	monFormat.size = 15;
	monFormat.font = "maPoliceDeLettre";
	monFormat.color = "0xCC3300";
	monFormat.align = "center";
	
	_root.createEmptyMovieClip("monClip",this.getNextHighestDepth());
	for (var i = 0; i<numOfItems; i++) {
		var texte = monClip.createEmptyMovieClip("texte"+i, i+1);
		texte.angle = i*((Math.PI*2)/(1*numOfItems));
		texte._x = Math.cos(texte.angle)*90+cx;
		texte.createTextField("champDeTexte",this.getNextHighestDepth(),0,00,200,200);
		texte.champDeTexte.border = false;
		texte.champDeTexte.selectable = false;
		texte.champDeTexte.embedFonts = true;
		texte.champDeTexte.text = nodes[i].attributes.tag;
		texte.champDeTexte.setTextFormat(monFormat);

	}
	var anglex = 0;
	var angley = 0;
	this.onEnterFrame = function() {
		anglex += i/25;
		angley += i/35;
		this.swapDepths(Math.round(this._xscale)+100);
		this._x = 70+50*Math.cos(anglex/numOfItems);
		this._y = 20+30*Math.sin(angley/numOfItems);
		var s:Number = (this._y)/(cy+1);
		//trace(s);
		this._xscale = this._yscale=s*100;
	};
}
load_xml("2mei.xml");

et mon xml :
Code XML :
<icons>
<icon tag="A" />
<icon tag="B" />
<icon tag="C"  />
<icon tag="D" />
</icons>
vendredi 23 avril 2010 à 10:18:42 | Re : onEnterFrame AS2

dj_ouf

HEllo,

Bienvenue dans le monde de flash alors

En zieutant ton code, voilà ce que je pense qui faudrait modifier :

Code ActionScript :
var texte = monClip.createEmptyMovieClip("texte"+i, i+1);
Là, tu créer tes différents champs de texte dans le même conteneur "monClip".

Code ActionScript :
this.onEnterFrame = function() {
A ce niveau là, tu fais la boucle onEnterFrame sur this, qui contient donc "monClip", le mouvement sera effectif sur toute ta scène. Car c'est le conteneur global.

Si tu veux faire un mouvement différent pour chacun de tes clips, il faut affecter une boule onEnterFrame sur chacun de tes clips crées.

Ensuite, dans ta boucle onEnterFrame, tu réutilises la variable "i". Or cette variable aura pour unique valeur la dernière affection de la boucle (ici, numOfItems), car la boucle est terminée. Donc là je l'ai affecté à texte.i, pour qu'elle soit différente pour chaque instance de "texte".
Idem pour anglex et angley, à moins bien sûr que tu veuille qu'il soient tous synchronisés.

Voilà un exemple :
Code ActionScript :
	_root.createEmptyMovieClip("monClip",this.getNextHighestDepth());
	for (var i = 0; i<numOfItems; i++) {
		var texte = monClip.createEmptyMovieClip("texte"+i, i+1);
		texte.angle = i*((Math.PI*2)/(1*numOfItems));
		texte._x = Math.cos(texte.angle)*90+cx;
		texte.createTextField("champDeTexte",this.getNextHighestDepth(),0,00,200,200);
		texte.champDeTexte.border = false;
		texte.champDeTexte.selectable = false;
		//texte.champDeTexte.embedFonts = true;
		texte.champDeTexte.text = nodes[i].attributes.tag;
		texte.champDeTexte.setTextFormat(monFormat);
		texte.anglex = 0;
		texte.angley = 0;
		texte.i = i;
		
		texte.onEnterFrame = function() {
			this.anglex += this.i/25;
			this.angley += this.i/35;
			this.swapDepths(Math.round(this._xscale)+100);
			this._x = 70+50*Math.cos(this.anglex/numOfItems);
			this._y = 20+30*Math.sin(this.angley/numOfItems);
			var s:Number = (this._y)/(cy+1);
			this._xscale = this._yscale=s*100;
		};

	}


J'ai testé, ça fonctionne, maintenant à toi d'ajuster pour avoir ce que tu recherches
vendredi 23 avril 2010 à 14:12:52 | Re : onEnterFrame AS2

ninodroc

Bravo et merci !
C'est encore mieux que mes dernières modifications !
L'animation est très fluide, contrairement à toute mes bidouilles.
C'EST TROP FORT !
vendredi 23 avril 2010 à 15:57:13 | Re : onEnterFrame AS2

dj_ouf

Content que ça t'ai dépanné
C'est plus fluide tu dis ? ça me semble bizarre ça..
Tu as laissé commentée cette ligne : //texte.champDeTexte.embedFonts = true;
vendredi 23 avril 2010 à 16:12:41 | Re : onEnterFrame AS2

ninodroc

Non, j'avais créer une nouvelle boucle for sur onEnterFrame de ce style :
Code ActionScript :
var angley = 0;
	var a:Number = 0;
	monClip["texte"+a].onEnterFrame = function() {

		anglex += i/100;
		angley += i/100;
		this.swapDepths(Math.round(this._xscale)+100);
		monClip["texte"+a]._x = (80)+(15*a)*Math.cos(a/10*anglex/numOfItems);
		monClip["texte"+a]._y = (5*a)+(6*a)*Math.sin(a/2*angley/numOfItems);
		a++;
		if (a>=numOfItems) {
			a = 0;
		}
		var s:Number = ((monClip["texte"+a]._y))/(20);
		//trace(s);
		monClip["texte"+a]._xscale = monClip["texte"+a]._yscale=s*100;
	};

C'était le mieux que j'ai pu faire pour les animer séparément.
vendredi 20 mai 2011 à 15:30:01 | Re : onEnterFrame AS2

mosani

pouet


Cette discussion est classée dans : xml, nodes, clips, monformat, as2


Répondre à ce message

Sujets en rapport avec ce message

Pb d'accès à un membre de classe AS2 [ par francisek ] Salut,Je commence en AS2 donc c'est peut être tout bête.Voilà l'énoncé de mon problème:J'ai créé une classe avec un membre XML. Dans le gestionnaire o [XML] probleme redaction [ par jarlaath ] Bonjour,je suis en train de créer une animation pour flash avec du XML et je me trouve devant un probleme. J'aurais aimé faire en sorte de pouvoir fai Problème sur un scrolling vertical [ par Tanaka56 ] Bonjour, le code ci-dessous affiche un certain nombre d'images lus dans un fichier xlm. Je lui fais faire un scrolling v Aide AS2 PHP XML [ par libelulule38 ] Bonjour, je cherche depuis quelques temps des tutos qui expliquent comment faire le lien entre flash (AS2) et PHP. D'après mes connaissances, je sais Carrousel 3D [ par cash1 ] Bonjour à tous,Voilà, après avoir chercher un peu partout sur la toile je n'arrive pas à trouver ce qui me convient.J'ai réalisé un carrousel "3D" en XML CLIC ELEMENT CARROUSEL->GETURL [ par Kikuts ] Bonjour, J'ai quasiment terminé mon site Internet :) héhé (enfin c'est pas dure de faire un site php qui intègre du flash ^^)www.wilog.fr conditionnelle flash as2 [ par danypetit ] bonjour! j'ai un petit problème à vous soumettre: dans flash, j'ai créé plusieurs clips qui se déroulent quand on clique dessus. Je voudrais qu'une Modifier un fichier xml avec flash [AS2] [ par carton99 ] Bonjour, alors je sais c'est impossible directement. Il faut passer par php. En plus c'est chient en AS2. D'accord ,mais je veux quand même le faire. Calendrier evénmentiel flash as2 + XML : HELP [ par choupifou ] Bonjour, j'ai récupéré un calendrier flash [url=http://ctl.mc.maricopa.edu/_resources/helpdocs/workshops/flash_components/FlashXMLCalendar.html]ici[/u AS2 mx chargement xml d'un loadMovie online [ par june07 ] Bonjour, Je post très peu sur les forums car je suis plutôt débrouillard mais ma débrouillardise vient d'atteindre sa limite. [^^clinoeil1] Je suis do


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales