manguecarotte
Messages postés53Date d'inscriptionlundi 19 février 2007StatutMembreDernière intervention24 février 2010
-
7 oct. 2008 à 11:18
littlelawrent
Messages postés4Date d'inscriptionmercredi 30 avril 2008StatutMembreDernière intervention24 novembre 2009
-
24 nov. 2009 à 15:34
Bonjour à tous,
voila mon petit soucis:
J'ai fais ce petit code (AS2) qui me permets de charger aléatoirement des bannieres (swf) dans mon clip 'o_pub' :
this.createEmptyMovieClip('o_pub',0);
var chargement_aleatoire = Math.round(Math.random()*6);
var Tableau:Array = ['entete_banniere_1_fr.swf', 'entete_banniere_2_fr.swf', 'entete_banniere_3_fr.swf', 'entete_banniere_4_fr.swf', 'entete_banniere_5_fr.swf', 'entete_banniere_6_fr.swf'];
loadMovie(Tableau[chargement_aleatoire], o_pub);
Jusque la, tout va bien...
Maintenant mon but est qu'à la fin d'une banniere, elle charge automatiquement une autre sans relire la meme.
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 7 oct. 2008 à 11:56
Hello,
L'idée est la suivante :
utiliser un moviecliploader pour charger la bannière car movieClipLoader génère un evenement onLoadInit qu'on va récupérer et utiliser pour lancer une fonction onEneterFrame sur le clip o_pub
cette fonction contrôle si l'animation jouée dans o_pub est terminée ou non (if (this._currentframe == this._totalframes) { ), si c'est le cas, on arrete l'animation et on détruit le onEnterframe. Juste avant on lance le chargement de la bannière suivante.
Et pour ne pas charger 2 fois de suite la même, on utilise une variable oldID.
this.createEmptyMovieClip('o_pub',0);
var chargement_aleatoire = -1
var Tableau:Array = ['entete_banniere_1_fr.swf', 'entete_banniere_2_fr.swf', 'entete_banniere_3_fr.swf', 'entete_banniere_4_fr.swf', 'entete_banniere_5_fr.swf', 'entete_banniere_6_fr.swf'];
var pub_mcl:movieClipLoader= new movieClipLoader()
pub_mcl.addListener(this);
function onLoadInit(mc:MovieClip) {
o_pub.onEnterFrame= function(){
if (this._currentframe == this._totalframes) {
this.stop()
loadNextBanner()
delete (this.onEnterFrame)
}
}
}
function loadNextBanner(){
var oldID=chargement_aleatoire
while(oldID==chargement_aleatoire){
chargement_aleatoire = Math.round(Math.random()*6);
}
mcLoader.loadClip(Tableau[chargement_aleatoire], o_pub);
}
loadNextBanner()
stop()
Bon, tout ca c'est de la théorie, alors pas sur que ca va marcher...
manguecarotte
Messages postés53Date d'inscriptionlundi 19 février 2007StatutMembreDernière intervention24 février 2010 7 oct. 2008 à 12:12
C'est impressionnant de voir du code tapé aussi facilement.
Vraiment..
Merci beaucoup, il y a une chose dont il n'apprecie pas:
'impossible de charger la classe ou l'interface 'Movie Clip loader'
référence à cette ligne: var pub_mcl:movieClipLoader= new movieClipLoader()
Je ne connais pas Movie Clip loader, mais cela me parait bien interessant.
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 7 oct. 2008 à 14:02
encore une erreur de ma part (et sans doute pas la dernière...)
dans la fonction loadNextBanner
function loadNextBanner(){
mcLoader.loadClip(Tableau[chargement_aleatoire], o_pub);
a remplacer par
pub_mcl.loadClip(Tableau[chargement_aleatoire], o_pub);
}
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 7 oct. 2008 à 14:05
reprend le code complet ci-dessous
var pub_mc=this.createEmptyMovieClip('o_pub', this.getNextHighestDepth());
var chargement_aleatoire = -1
var Tableau:Array = ['entete_banniere_1_fr.swf', 'entete_banniere_2_fr.swf', 'entete_banniere_3_fr.swf', 'entete_banniere_4_fr.swf', 'entete_banniere_5_fr.swf', 'entete_banniere_6_fr.swf'];
var pub_mcl:MovieClipLoader= new MovieClipLoader()
pub_mcl.addListener(this);
function onLoadInit(mc:MovieClip) {
pub_mc.onEnterFrame= function(){
if (this._currentframe == this._totalframes) {
this.stop()
loadNextBanner()
delete (this.onEnterFrame)
}
}
}
function loadNextBanner(){
var oldID=chargement_aleatoire
while(oldID==chargement_aleatoire){
chargement_aleatoire = Math.round(Math.random()*6);
}
pub_mcl.loadClip(Tableau[chargement_aleatoire], pub_mc);
}
cs_Girou
Messages postés1203Date d'inscriptionlundi 10 mars 2003StatutMembreDernière intervention23 juillet 20092 7 oct. 2008 à 14:53
non, rien a voir avec level1
tes banners sont composés d'une seule frame (avec eventuellement des clip dedans) ?
si c'est le cas, on va avoir un soucis !
soit tu crées une ligne du temps de la longuer (nombre de frame) de tes bannières dans chaque banniere,
( modifier aussi, if (this._currentframe == (this._totalframes-1))
soit a la fin de chaque 'animation' bannière tu appelles la fonction loadNextBanner() en faisant (a tester)
loadNextBanner()
this._parent.loadNextBanner()
this._parent._parent.loadNextBanner()
manguecarotte
Messages postés53Date d'inscriptionlundi 19 février 2007StatutMembreDernière intervention24 février 2010 7 oct. 2008 à 15:23
Mes bannieres sont composés d'une seule frame avec des clips à l'interieur.
J'ai suivi ton conseil, mettre:
loadNextBanner()
this._parent.loadNextBanner()
this._parent._parent.loadNextBanner()
à la fin de chaque animations...Il ne veut toujours pas..
cs_momad321
Messages postés1Date d'inscriptionjeudi 30 novembre 2000StatutMembreDernière intervention24 octobre 2008 24 oct. 2008 à 18:16
Pour un affichage aleatoire des swf non stop g prie le meme code avec un seul changement :
au niveau de la function loadNextBanner()
// eliminer le stop();
Vioci le code :
var pub_mc=this.createEmptyMovieClip('o_pub', this.getNextHighestDepth());
var chargement_aleatoire = -1
var Tableau:Array = ['pn_1.swf', 'pn_2.swf'];
var pub_mcl:MovieClipLoader= new MovieClipLoader()
pub_mcl.addListener(this);
function onLoadInit(mc:MovieClip) {
pub_mc.onEnterFrame= function(){
if (this._currentframe == this._totalframes) {
this.stop()
loadNextBanner()
delete (this.onEnterFrame)
}
}
}
function loadNextBanner(){
var oldID=chargement_aleatoire
while(oldID==chargement_aleatoire){
chargement_aleatoire = Math.round(Math.random()*1);
trace (chargement_aleatoire);
}
pub_mcl.loadClip(Tableau[chargement_aleatoire], o_pub);
// stop()
}
littlelawrent
Messages postés4Date d'inscriptionmercredi 30 avril 2008StatutMembreDernière intervention24 novembre 2009 18 oct. 2009 à 11:29
Bonjour a vous!
j'utilise également votre code qui ma enormément aidé mais j'aimerais savoir si on peut allé un peut plus loin, j'entends par la est-ce que l'on peut utiliser une mémoire pour ne pas rechargé les 2 ou 3 dernière animation précedement chargé.
J'espere etre assez clair.
En gros une sorte d'aléatoire controlé :-)
Merci d'avance a vous
littlelawrent
Messages postés4Date d'inscriptionmercredi 30 avril 2008StatutMembreDernière intervention24 novembre 2009 24 nov. 2009 à 15:34
Personne pour m'aider?
J'ai pourtant pas mal chercher mais je n'arrive pas a garder en mémoire les 4 ou 5 dernières valeur pour éviter qu'elle ne soit tiré en aléatoire.