Passembler plusieurs fla

tiene77 Messages postés 6 Date d'inscription jeudi 23 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010 - 23 déc. 2010 à 10:01
tiene77 Messages postés 6 Date d'inscription jeudi 23 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010 - 30 déc. 2010 à 16:22
Bonjour,
je débute en flash , j'ai créer une animation (en AS2/CS3) mais j'ai un petit soucis.
Je voudrais combiner deux actions: la première est un effet machine à écrire et la seconde est une signature en fin de lettre qui apparaît comme si une personne la signe.

Mes deux fla fonctionnent séparément, mais je n'arrive à les mètre dans un même fla.
En fait j'ai bien réussi à réunir les deux, l'effet machine à écrire fonctionne, mais la signature après le texte ne se lance pas.

Mon fla machine à écrire est sur un calque, 3 images
img1: gotoAndPlay(2);
img2: texte = "mon texte";

message=texte.substr(0,compteur);
compteur+=1;

img3:if (compteur ==texte.length +1)
{
stop();
}
else
{
gotoAndPlay(2);
};


Ma signature est sur 2 calques: pris sur ce lien

Si je met ma signature en img1, elle se lance en même temps que la machine à écrire, si je la met en img4 elle ne se lance pas du tout, j'ai tenter de modifier l'img3 de la machine à écrire en mettant
if (compteur ==texte.lenght -1)
{
gotoAndPlay(4);
}
else
{
gotoAndPlay(2);
};
Mais ça ne fais rien non plus.

Comment faire ?

Merci

8 réponses

tiene77 Messages postés 6 Date d'inscription jeudi 23 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
23 déc. 2010 à 10:30
erreur:mon code à l'img1 c'est compteur=0; et non gotoAndPlay(2);
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
23 déc. 2010 à 15:31
Hello,

essaie en écrivant correctement
length
, ça vient probablement de ça.

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
tiene77 Messages postés 6 Date d'inscription jeudi 23 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
23 déc. 2010 à 16:22
oui en fait cette erreur je m'en suis rendu compte, j'ai déjà modifier mais ça change rien, bizar d’ailleurs. et c'est length +1 ou -1 ?
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
23 déc. 2010 à 19:43
Et bien ça dépend :
tu ne nous dis pas ce qu'est "compteur" : une variable ? Je présume que oui mais je ne saisis pas comment tu la définis, ni comment tu l'incrémentes, car je ne vois aucun setInterval() dans ton code qui permettrait d'afficher lettre par lettre ton texte et ensuite lorsque ton texte est affiché en totalité, de basculer vers l'image 4 pour lancer la signature.

A mon avis c'est là que ça pêche, il faudrait que tu revoies ta méthode afin d'améliorer ton script. D'ailleurs tu n'es pas obligé de jouer sur 4 images clé, tu peux très bien coder de manière procédurale sur une seule image clé (pour ma part c'est la solution que je préfère car beaucoup plus adaptée à d'éventuelles modifications par la suite).

Ce que je te préconise :
suivant la longueur de ton texte tu pourrais le stocker en dur dans ton fla.
Tu le définis comme variable String :
var monTexte:String = "tatatitatata...";

Ensuite tu définis une variable Number à laquelle tu donnes comme valeur la longueur de ta variable monTexte :
var monTexte:String = "tatatitatata...";
var Compteur:Number = monTexte.length;


Après tu crées une fonction qui décrémente Compteur et qui en parallèle affiche ton texte :
var monTexte:String = "tatatitatata...";
var Compteur:Number = monTexte.length;

function Afficher(){
Compteur -= 1;
tonChamp.text = monTexte.substring(Compteur);
if(Compteur == 0){
tonChamp.text = monTexte;
clearInterval(Tempo);
}
}


Puis il ne te reste plus qu'à lancer l'intervalle et à rédiger par exemple une fonction pour "lancer" ta signature :

var monTexte:String = "tatatitatata...";
var Compteur:Number = monTexte.length;

function Afficher(){
Compteur -= 1;
tonChamp.text = monTexte.substring(Compteur);
if(Compteur == 0){
tonChamp.text = monTexte;
clearInterval(Tempo);
Signature();
}
}

Tempo = setInterval(Afficher, 250);

function Signature(){
//là tu affiches ta signature comme tu le souhaites
}


A plus ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tiene77 Messages postés 6 Date d'inscription jeudi 23 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
27 déc. 2010 à 09:31
Merci pour ta réponse, et désoler de ne répondre que maintenant.

Etant débutant j'apprends tous les jours.

Et pour afficher ma signature je fais un gotoAndPlay() ?
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
28 déc. 2010 à 12:19
Hello,

non tu n'es pas obligé de faire un gotoAndplay(), du fait que ce que je t'ai préconisé consiste à coder sur une seule image clé, tu peux par exemple stocker ta signature dans un clip qui sera lui même stocké dans la bibliothèque, et tu charges ce clip sur la scène dans la fonction Signature(). Pour créer un clip à stocker dans la bibliothèque, tu crées un clip qui contient ta signature, tu ne lui donnes pas de nom d'occurrence mais tu li attibues un identifiant de liaison après avoir coché "exporter pour actionscript" dans la fenêtre de création de symbole. Ensuite tu supprimes de la scène le clip créé car celui-ci est dorénavant stocké dans la bibliothèque. Si par exemple tu as donné comme identifiant de liaison "ma_signature" à ton clip, tu peux essayer un truc comme ça :
function Signature(){
this.attachMovie("ma_signature", "Signa" {_x:500, _y:300, getNextHighestDepth()});
}

Ce code te permet d'afficher ton clip sur la scène aux coordonnées _x:500 et _y:300,
getNextHighetDepth() permet de l'afficher au 1er plan, "ma_signature" est l'identifiant de liaison de ton clip dans la bibliothèque et "Signa" le nom que tu lui donnes sur la scène. Par conséquent lorsque tu voudras supprimer ce clip de la scène il faudra utiliser le nom donné sur la scène :
removeMovieClip("Signa");

Si ton clip est sur plusieurs images clé le simple fait de l'attacher sur la scène lancera la lecture automatiquement.
Si ton clip est sur une image clé et qu'il est animé par le code il se lancera automatiquement aussi.
Si on est dans le 1er cas : clip anié sur plusieurs images clé, et que tu veux le supprimer lorsque le clip a atteint la dernière image clé, tu peux rajouter quelques paramètres dans la fonction pour cela :
function Signature(){
this.attachMovie("ma_signature", "Signa" {_x:500, _y:300, getNextHighestDepth()});
var NbrIM:Number = Signa._totalframes();//ici tu récupères le nombre d'images clés de ton clip
//tu crées ensuite en dehors de la fonction une autre fonction qui sera appelée
//dans un setInterval pour "suivre" la lecture du clip et l'arrêter lorsque la
//dernière image clé est atteinte, et tu lances le setInterval dans la fonction Signature() :
Tempo = setInterval(Pister, 1000/24);
}

//et donc la fonction qu'appelle le setInterval() :
function Pister(){
var IM:Number = Signa._currentframe();//là tu crées à chaque intervalle une variable Number
//à laquelle tu attribues comme valeur l'image clé en lecture du clip Signa
if(IM == NbrIM){
clearInterval(Tempo);
removeMovieClip("Signa");
//si IM est égal à NbrIm, donc si l'image clé en lecture correspond à la dernière image clé du clip,
//tu stoppes le setInterval() et tu supprimes le clip
}
}


A plus ,

BBFUNK01
//C'est en forgeant qu'on devient forgeron... ;-) ;
0
tiene77 Messages postés 6 Date d'inscription jeudi 23 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
30 déc. 2010 à 16:14
Merci pour cette réponse développée,et merci de prendre tant de temps pour répondre.
Avec ces éléments je vais tenter de résoudre mon problème et reviendrait vers toi si je n'y arrive pas.

MERCI
0
tiene77 Messages postés 6 Date d'inscription jeudi 23 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
30 déc. 2010 à 16:22
justement je me sert du système de signature pour faire des courbes animées, et justement sur un graphique j'ai deux courbes, mais avec mon code les deux courbes sont de la même couleur. Or je voudrais quelles soient de deux couleurs différentes.
J'en tenter quelques truc mais rien ne change, ça s’aggrave même lol.

Voici le code:
vitesse = 5;
distanceMin = 10;
initialiser = function () {
clearInterval(intervalle);
this.createEmptyMovieClip("trajectoire", 0);
trajectoire._x = guide._x;
trajectoire._y = guide._y;
trajectoire.clear();
trajectoire.lineStyle(3, "0x572381", 100);
guide.gotoAndStop(1);
oldx = guide.point._x;
oldy = guide.point._y;
trajectoire.moveTo(oldx, oldy);
guide.point._visible = false;
intervalle = setInterval(nextImage, vitesse);
};
nextImage = function () {
guide.nextFrame();
if (guide._currentframe == guide._totalframes) {
clearInterval(intervalle);
} else {
var newx = guide.point._x;
var newy = guide.point._y;
var dx = newx-oldx;
var dy = newy-oldy;
var d = Math.sqrt(dx*dx+dy*dy);
if (d>distanceMin) {
trajectoire.moveTo(newx, newy);
} else {
trajectoire.lineTo(newx, newy);
}
oldx = newx;
oldy = newy;
}

};
initialiser();
playAgain.onPress = function() {
initialiser();
};

stop();


La couleur unique est 572381 et j'en voudrais deux.

Ps: voici le tuto que j'ai suivi -> Tapez le texte de l'url ici.

Merci
0
Rejoignez-nous