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

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

[AS3] Petit problème intégration diaporama


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

[AS3] Petit problème intégration diaporama

samedi 14 mai 2011 à 14:38:25 | [AS3] Petit problème intégration diaporama

manamiroo

Bonjour à tous,
merci de lire mon sujet,

Je connais bien les fonctions de Flash mais reste débutante en ActionScript 3, or je suis en train de réaliser un site entièrement en Flash. Je rencontre actuellement un souci sur la partie galerie de mon site. Je m'explique : lorsqu'on clique sur "portfolio" dans le menu, pas de souci, le diaporama correspondant s'affiche et fonctionne sans problème. Le souci est que lorsque je veux retourner sur d'autres pages du site, comme Infos ou Liens, le diaporama reste affiché en superposition avec le reste...
En gros je voudrais que le diaporama disparaisse quand on passe à une autre catégorie de mon site. Comment faire ?

De plus, bien que le diaporama fonctionne sans problème, une erreur s'affiche en sortie, je ne sais pas si ça a un lien avec cet effet de superposition :
Code ActionScript :
 TypeError: Error #2007: Le paramètre child ne doit pas être nul.
	at flash.display::DisplayObjectContainer/addChildAt()
	at fl.controls::ProgressBar/drawTrack()
	at fl.controls::ProgressBar/draw()
	at fl.core::UIComponent/callLaterDispatcher()


Je précise que j'ai réalisé ce diaporama à partir d'un tuto trouvé sur le net...

Voilà le code du diaporama en lui-même :

Code ActionScript :
import fl.controls.ProgressBar;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.display.*;

var columns:Number;
var my_x:Number;
var my_y:Number;
var my_thumb_width:Number;
var my_thumb_height:Number;
var my_images:XMLList;
var my_total:Number;

var container_mc:MovieClip;
var preloaders_mc:MovieClip;
var full_mc:MovieClip;

var x_counter:Number = 0;
var y_counter:Number = 0;

var my_tweens:Array = [];
var container_mc_tween:Tween;
var full_tween:Tween;

var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("gallery.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
	var myXML:XML = new XML(e.target.data);

	columns = myXML.@COLUMNS;
	my_x = myXML.@XPOSITION;
	my_y = myXML.@YPOSITION;
	my_thumb_width = myXML.@WIDTH;
	my_thumb_height = myXML.@HEIGHT;
	my_images = myXML.IMAGE;
	my_total = my_images.length();

	createContainer();
	callThumbs();

	myXMLLoader.removeEventListener(Event.COMPLETE, processXML);
	myXMLLoader = null;
}

function createContainer():void {
	container_mc = new MovieClip();
	container_mc.x = my_x;
	container_mc.y = my_y;
	addChild(container_mc);

	container_mc.addEventListener(MouseEvent.CLICK, callFull);
	container_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver);
	container_mc.addEventListener(MouseEvent.MOUSE_OUT, onOut);
	container_mc.buttonMode = true;

	preloaders_mc = new MovieClip();
	preloaders_mc.x = container_mc.x;
	preloaders_mc.y = container_mc.y;
	addChild(preloaders_mc);
}

function callThumbs():void {
	for (var i:Number = 0; i < my_total; i++) {

		var thumb_url = my_images[i].@THUMB;

		var thumb_loader = new Loader();
		thumb_loader.load(new URLRequest(thumb_url));
		thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded);

		thumb_loader.name = i;

		thumb_loader.x = (my_thumb_width+10)*x_counter;
		thumb_loader.y = (my_thumb_height+10)*y_counter;

		if (x_counter+1 < columns) {
			x_counter++;
		} else {
			x_counter = 0;
			y_counter++;
		}
		var preloader_pb:ProgressBar = new ProgressBar();
		preloader_pb.source = thumb_loader.contentLoaderInfo;
		preloader_pb.x = thumb_loader.x;
		preloader_pb.y = thumb_loader.y;
		preloader_pb.width = my_thumb_width;
		preloader_pb.height = my_thumb_height;
		preloaders_mc.addChild(preloader_pb);

		preloader_pb.addEventListener(Event.COMPLETE, donePb);
	}
}

function thumbLoaded(e:Event):void {
	var my_thumb:Loader = Loader(e.target.loader);
	container_mc.addChild(my_thumb);
	my_tweens[Number(my_thumb.name)]=new Tween(my_thumb, "alpha", Strong.easeIn, 0,1,0.5, true);

	my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETE, thumbLoaded);
}

function callFull(e:MouseEvent):void {
	var full_loader:Loader = new Loader();
	var full_url = my_images[e.target.name].@FULL;
	full_loader.load(new URLRequest(full_url));
	full_loader.contentLoaderInfo.addEventListener(Event.INIT, fullLoaded);

	var full_pb:ProgressBar = new ProgressBar();
	full_pb.source = full_loader.contentLoaderInfo;
	full_pb.x = (stage.stageWidth - full_pb.width)/2;
	full_pb.y = (stage.stageHeight - full_pb.height)/2;
	preloaders_mc.addChild(full_pb);

	full_pb.addEventListener(Event.COMPLETE, donePb);

	container_mc.removeEventListener(MouseEvent.CLICK, callFull);
	container_mc.buttonMode = false;
	container_mc.removeEventListener(MouseEvent.MOUSE_OVER, onOver);
	container_mc.removeEventListener(MouseEvent.MOUSE_OUT, onOut);
	container_mc_tween = new Tween(container_mc, "alpha", Strong.easeIn, 1,0.5,0.5, true);
}
function fullLoaded(e:Event):void {
	full_mc = new MovieClip();
	full_mc.buttonMode = true;
	addChild(full_mc);
	var my_loader:Loader = Loader(e.target.loader);
	full_mc.addChild(my_loader);
	full_tween = new Tween(my_loader, "alpha", Strong.easeIn, 0,1,0.5, true);
	my_loader.x = (stage.stageWidth - my_loader.width)/2;
	my_loader.y = (stage.stageHeight - my_loader.height)/2;
	my_loader.addEventListener(MouseEvent.CLICK,removeFull);

	my_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, fullLoaded);
}
function removeFull(e:MouseEvent):void {
	var my_loader:Loader = Loader (e.currentTarget);
	full_tween = new Tween(my_loader, "alpha", Strong.easeOut, 1,0,0.5, true);
	full_tween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinished);

	container_mc_tween = new Tween(container_mc, "alpha", Strong.easeOut, 0.5,1,0.5, true);
}

function donePb(e:Event):void {
	var my_pb:ProgressBar = ProgressBar(e.target);
	preloaders_mc.removeChild(my_pb);
	my_pb.removeEventListener(Event.COMPLETE, donePb);
}

function tweenFinished(e:TweenEvent):void {
	var my_loader:Loader = Loader (e.target.obj);
	my_loader.unload();
	full_mc.removeChild(my_loader);
	removeChild(full_mc);
	full_mc = null;

	container_mc.addEventListener(MouseEvent.CLICK, callFull);
	container_mc.buttonMode = true;
	container_mc.addEventListener(MouseEvent.MOUSE_OVER, onOver);
	container_mc.addEventListener(MouseEvent.MOUSE_OUT, onOut);

	var my_tween:Tween = Tween(e.target);
	my_tween.removeEventListener(TweenEvent.MOTION_FINISH, tweenFinished);
}
function onOver(e:MouseEvent):void {
	var my_thumb:Loader = Loader(e.target);
	my_thumb.alpha = 0.5;
}
function onOut(e:MouseEvent):void {
	var my_thumb:Loader = Loader (e.target);
	my_thumb.alpha = 1;
}

Merci d'avance pour votre aide
samedi 14 mai 2011 à 22:21:39 | Re : [AS3] Petit problème intégration diaporama

aerolyte

Bonjour, concernant l'erreur la réponse est simple:

Code ActionScript :
preloaders_mc.addChild(full_pb);


comme tu as déclarer la variable preloaders_mc dans une fonction celle ci n'est reconnu que dans cette dernière et pas à la ligne affichée au dessus.

Déclare ta variable en début de classe

Pour faire "disparatre"le diaporama, le plus approprié est de supprimer les éléments ainsi que les events, afin de les rendres élisible au Garbage collector.

Cordialement
dimanche 15 mai 2011 à 14:18:18 | Re : [AS3] Petit problème intégration diaporama

manamiroo

Bonjour,

Merci pour ta réponse, j'ai arrangé la variable (j'ai du aussi le faire pour container_mc) et plus d'erreur à présent.

Pour ce qui est de faire "disparaître" le diaporama, j'ai trouvé un truc tout simple. Au lieu d'insérer le code dans la main timeline, j'ai crée un clip et je l'ai inséré à l'intérieur. De cette manière le code ne se déclare que lorsque le clip se trouve visible.

Cordialement
dimanche 15 mai 2011 à 14:45:27 | Re : [AS3] Petit problème intégration diaporama

aerolyte

Re,
ton "truc" n'est pas l'ideal pour la gestion de la memoire cache.

Si tu ouvres plusieurs fois de suite ta page diaporama, tu vas finir par remplir ta ram (servant de stockage à la mémoire cache) jusqu'a saturation et blocage browser, voir meme systeme d'exploitation.

la bonne solution est de faut passer par une suppression des éléments et de leur events.

Cordialement


Cette discussion est classée dans : var, mc, my, loader, thumb


Répondre à ce message

Sujets en rapport avec ce message

galerie photos avec plusieurs catégories [ par kestibibi ] Bonjour, je tente depuis plusieurs jours de créer une galerie dynamique avec plusieurs catégories. J'ai "réussi" à un détail prés, lorsque l'on clic Menu xml avec rollOver et rollOut [ par latour500 ] Bonjour à tous, j'aimerai grossierement quelques conseils,je suis en train de construire un menu dynamique en As2, avec des sous menu, les fonctions s probleme flashvars sur bdd xml [ par vilkoyote ] Bonjour a tous :) Voila j'ai dev un petit flash en AS3 et j ai un problème de récupération de variable via la section AC_FL_RunContent du html génér petite correction en as2 [ par tonydanza ] Bonjour, J'ai besoin d modifier un code mais je n'y arrive pas. Dans le code suivant,je dois Changer les calendriers qui sont a l'interieur de: mbIn attribut css dans champs de texte actionscript2 [ par jerrrrrry ] bonjour j'aimerais crée un système d'incrémentation automatique dans un champs de texte crée en actionscriptil est dynamique j'aimerais que le nombre Texte dynamique dans clip - XML [ par chindra ] Bonjour,Je préviens de suite, je suis une méga débutante...je pratique Flash depuis seulement quelques mois et ce n'est pas du tout ma formation initi Traduction d'un petit code AS1&2 vers AS3 [ par Syphou ] Bonjour :-)J'ai trouvé un code en ActionScript 1&2 qui permet d'écrire en rond. Un fois compilé en swf j'ai tenté d'appeler une de ses méthodes via Fl probleme de photo et galerie [ par phania ] Bonjour je voudrais seulement que sur un click que l'image pop up ou de quoi semblable pour voir l'image en plus gros Le problème que j'ai est que si probleme de lien d'une image tiré d'un xml [ par scoubydog ] Bonjour, je suis en train de faire une galerie de photos et mon problème est que le code qui me permet de transformer chaque image miniature en bouton Pb menu dynamique vertical [ par SuNn123 ] Bonjour,J'essaie de réaliser mon menu personnalisé, après avoir lu qques pdf :var photo:Loader;for (var i:in


Nos sponsors


Sondage...

Comparez les prix

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,889 sec (3)

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