begin process at 2012 05 27 09:10:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Problème dans une gallerie


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

Problème dans une gallerie

jeudi 1 avril 2010 à 21:45:48 | Problème dans une gallerie

Irokwa

Bonsoir,

j'essaye de faire une galerie avec des tutos mais le tuto que j'utilise qui me convient le mieux à plusieurs points que je souhaite changer. J'ai réussis à obtenir ce que je voulais pour la plupart des choses qui ne me convenaient pas mais il y en a un particulièrement gênant qui me pose de gros problèmes.
En effet lorsque l'on clique sur une image dans la galerie pour l'agrandir il faut maintenir le clic pour que l'image sois en grande taille, et lorsqu'on lâche l'image redevient plus petite et reprend sa place dans la galerie (je précise que lorsque cette image est en pleine taille on peut la balader partout sur l'écran, ce qui n'a pas grand intérêt pour moi). Le problème c'est que j'aimerais que l'image s'agrandisse seulement quand on clique dessus, et reprenne sa petite taille et position dans la galerie sois lorsqu'on re-clique dessus, sois lorsque l'on clique sur une autre image de la galerie. J'ai essayer de bidouiller pas mal ce code mais impossible de trouver la solution...

Quelqu'un pourrait-il, s'il vous plaît m'aider?
lundi 5 avril 2010 à 18:37:50 | Re : Problème dans une gallerie

BBFUNK01

Hello,

d'après tes explications on peut imaginer que lorsque tu fais un "onPress" sur une des miniatures de ta galerie ça agrandit l'image en question, et lors du "onRelease" l'image reprend sa taille miniature. Pour bien faire il faudrait que tu fasses un "LoadMovie()" sur chaque image miniature, ce qui inclut le fait, dans l'idéal, de stocker la liste de tes images dans un xml.
Mets dans ton post le code que tu utilises pour afficher en grand tes images, ça permettra à ceux qui consultent ton post d'avoir les détails pour t'aider :).

A plus,

BBFUNK01
lundi 5 avril 2010 à 23:52:10 | Re : Problème dans une gallerie

Irokwa

Bonsoir,

tout d'abord merci pour cette réponse je n'y croyait plus. ^^
Je ne sais pas si je peux faire de l'image par image, car en fait j'ai juste copier coller le code du tuto, corrigé les valeurs pour les adaptées à mon site, et sinon tout s'affiche tout seul, je n'ai qu'a entré le nom de l'image dans un XML, et sur mon clip je n'ai qu'une image clé avec le code qui suit, aucun autre élément. Je n'ai commencé Flash qu'en février en cours donc je galère un peu.

Je récapitule donc, le code marche parfaitement, j'aimerais seulement n'avoir qu'à cliquer une fois sur l'image pour qu'elle s'affiche, et cliquer de nouveau pour qu'elle redevienne miniature. Si c'est possible j'aimerais aussi supprimer le genre de clignotement de l'image lorsqu'on l'ouvre.
J'ai cherché à modifier pas mal de lignes de ce code mais sans succès, il à vraiment l'air compliqué.

Voici le code:


import mx.transitions.*;


_global.thisX = -350;
_global.thisY = -200;


_global.stageWidth = -350;
_global.stageHeight = -200;


var gallery_xml:XML = new XML();
gallery_xml.ignoreWhite = true;
gallery_xml.onLoad = function(success:Boolean) {
try {

if (success) {
var images:Array = this.firstChild.childNodes;
var gallery_array:Array = new Array();
for (var i = 0; i<images.length; i++) {
gallery_array.push({src:images[i].firstChild.nodeValue});
}

displayGallery(gallery_array);
} else {
throw new Error("Unable to parse XML");
}
} catch (e_err:Error) {
trace(e_err.message);
} finally {
delete this;
}
};


gallery_xml.load("GallerieInfo.xml");


function displayGallery(gallery_array:Array) {
var galleryLength:Number = gallery_array.length;

for (var i = 0; i<galleryLength; i++) {

var thisMC:MovieClip = this.createEmptyMovieClip("image"+i+"_mc", i);

mcLoader_mcl.loadClip(gallery_array[i].src, thisMC);

preloaderMC = this.attachMovie("preloader_mc", "preloader"+i+"_mc", 5000+i);


preloaderMC.bar_mc._xscale = 0;
preloaderMC.progress_txt.text = "0%";


thisMC._x = _global.thisX;
thisMC._y = _global.thisY;


preloaderMC._x = _global.thisX;
preloaderMC._y = _global.thisY+20;


if ((i+1)%5 == 0) {

_global.thisX = -350;
_global.thisY += 150;
} else {
_global.thisX += 90+10;
}
}
}

var mcLoader_mcl:MovieClipLoader = new MovieClipLoader();
var mclListener:Object = new Object();
mclListener.onLoadStart = function() {
};

mclListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
var pctLoaded:Number = Math.round(loadedBytes/totalBytes*100);

var preloaderMC = target_mc._parent["preloader"+target_mc.getDepth()+"_mc"];
preloaderMC.bar_mc._xscale = pctLoaded;
preloaderMC.progress_txt.text = pctLoaded+"%";
};

mclListener.onLoadInit = function(evt:MovieClip) {
evt._parent["preloader"+evt.getDepth()+"_mc"].removeMovieClip();

var thisWidth:Number = evt._width;
var thisHeight:Number = evt._height;
var borderWidth:Number = 2;
var marginWidth:Number = 8;
evt.scale = 20;

evt.lineStyle(borderWidth, 0x000000, 100);
evt.beginFill(0xFFFFFF, 100);
evt.moveTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
evt.lineTo(thisWidth+borderWidth+marginWidth, -borderWidth-marginWidth);
evt.lineTo(thisWidth+borderWidth+marginWidth, thisHeight+borderWidth+marginWidth);
evt.lineTo(-borderWidth-marginWidth, thisHeight+borderWidth+marginWidth);
evt.lineTo(-borderWidth-marginWidth, -borderWidth-marginWidth);
evt.endFill();


evt._xscale = evt.scale;
evt._yscale = evt.scale;

evt._rotation = 0;

evt.onPress = function() {

this.startDrag();
this._xscale = 100;
this._yscale = 100;
this.origX = this._x;
this.origY = this._y;

this.origDepth = this.getDepth();

this.swapDepths(this._parent.getNextHighestDepth());

this._x = (_global.stageWidth-evt._width+30)/2;
this._y = (_global.stageHeight-evt._height+30)/2;
mx.transitions.TransitionManager.start(this, {type:mx.transitions.Photo, direction:0, duration:1, easing:mx.transitions.easing.Strong.easeOut, param1:empty, param2:empty});
};

evt.onRelease = function() {
this.stopDrag();
this._xscale = this.scale;
this._yscale = this.scale;
this._x = this.origX;
this._y = this.origY;
};

evt.onReleaseOutside = evt.onRelease;
};
mcLoader_mcl.addListener(mclListener);

mardi 6 avril 2010 à 02:33:06 | Re : Problème dans une gallerie

BBFUNK01

Re,

bon et bien effectivement c'est ce que je pensais : c'est sur ton "onPress" et "onRelease" qu'il faut faire des modifications.
A la rigueur, tu peux même te passer du "onPress" et mettre toute la fonction pour charger l'image dans ton "onRelease".
Le tout après c'est de définir si tu charges en "grand" la même image qui est chargée en "petit" (en miniature quoi), car le mieux por un diaporama pas trop lourd, c'est de charger de petites images pour les miniatures, du genre des images de 80x80 pixels, et d'avoir des images plus grandes pour charger les images en "plein écran", du genre des images de 600x600 pixels. Bref, le mieux c'est de dissocier les 2, tu gagneras en légèreté pour ton animation.

Donc c'est sur cette fonction qu'il faut que tu fasses des modifications :
Code ActionScript :
evt.onRelease = function(){
...fonction...
}


et la solution à ton problème je l'ai trouvé il y a peu :
Centrer une image avec MovieClipLoader

jettes-y un oeil et fais le test, ça devrait te convenir. Par contre supprime ta fonction "evt.onPress()", elle ne contient que des paramètres permettant de dragger ton image et de l'afficher plus grand.

A plus,

BBFUNK01
vendredi 9 avril 2010 à 17:06:03 | Re : Problème dans une gallerie

martinearth





Salut Irowka, Bon je me lance 1th time!
je cherche moi aussi à apprendre l'action Script mais je parts avec un gros handicap je suis graphiste dessinateur de formation et une fille de surcroit; bref j'ai un peu de mal, pourrais tu donner l'adresse de ton tuto. Ca fait un semaine que je suis dessus, j'ai trouvé des galerie déjà faite sur le site et qui sont très bien; mais question explications je capte Z.
J'ai essayée de bidouiller un truc mais il me renvoie une erreur si quelqu'un pouvait me dire ce qui cloches se serait sympa.Il renvoie cette info en sortie quand on clique sur la thumb.
Merci de votre attention et patience avec une novice.

Code :
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at test_fla::MainTimeline/resizeHandler()


Code ActionScript :
import fl.controls.TileList;
import fl.data.DataProvider;
import fl.controls.ScrollBarDirection;
import fl.events.ComponentEvent;
import fl.containers.UILoader;
import fl.controls.Button;
var dossierImage:String = 'images/';
	var dossierImageMini:String = 'images/min/';	

var monXML:XML = <galerie>
	<image src="underwater.jpg" alt="DepthCore - Underwater (David)" />
	<image src="retro_pheromone.jpg" alt="DepthCore - Retro Pheromone (Jinberdeem)" />
	<image src="hocus_pocus.jpg" alt="DepthCore - Hocus pocus (Surpy)" />
	<image src="torment.jpg" alt="DepthCore - Torment (Radu Pop)"/>
	<image src="lola.jpg" alt="DepthCore - Lola (Caramelow)" />
	<image src="delicacy.jpg" alt="DepthCore - Delicacy (Rogue)" />
	<image src="local_seduction.jpg" alt="DepthCore - Local seduction (Jinberdeem)" />
	<image src="corrindon.jpg" alt="DepthCore - Blok party (83Grafik)"/>
	<image src="casapaco.jpg" alt="DepthCore - Blok party (83Grafik)"/>
	<image src="carrelage.jpg" alt="DepthCore - Blok party (83Grafik)" />
	<image src="renault.jpg" alt="DepthCore - Blok party (83Grafik)" />
	<image src="autoplus.jpg" alt="DepthCore - Blok party (83Grafik)" />
	<image src="blok_party.jpg" alt="DepthCore - Blok party (83Grafik)"/>
		<image src="lola.jpg" alt="DepthCore - Lola (Caramelow)" />
	<image src="delicacy.jpg" alt="DepthCore - Delicacy (Rogue)" />
	<image src="local_seduction.jpg" alt="DepthCore - Local seduction (Jinberdeem)" />
	<image src="corrindon.jpg" alt="DepthCore - Blok party (83Grafik)" />
	<image src="casapaco.jpg" alt="DepthCore - Blok party (83Grafik)"/>
	<image src="carrelage.jpg" alt="DepthCore - Blok party (83Grafik)"/>
	<image src="renault.jpg" alt="DepthCore - Blok party (83Grafik)"/>
	<image src="autoplus.jpg" alt="DepthCore - Blok party (83Grafik)"/>
	<image src="blok_party.jpg" alt="DepthCore - Blok party (83Grafik)"/>
	
</galerie>;


var dp:DataProvider = new DataProvider(monXML);

var myTileList:TileList = new TileList();
myTileList.dataProvider = dp;
myTileList.labelFunction = myLabelFunction;
myTileList.addEventListener(MouseEvent.MOUSE_DOWN,resizeHandler);
myTileList.sourceField = "src";
myTileList.columnWidth = 100;
myTileList.rowHeight = 67;
myTileList.columnCount = 3;
myTileList.rowCount = 6;
myTileList.move(10, 10);
addChild(myTileList);

function myLabelFunction(item:Object):String {
	var fileName:String = item.src;
	var filePath:Array = fileName.split("/");
	return filePath.pop();
}
function resizeHandler(event:MouseEvent):
void {
    var myImg:UILoader = event.currentTarget as UILoader;
	myImg.source = dossierImage+monXML.image[1].attribute("src");
    var newX:uint = (stage.stageWidth - myImg.width) / 2;
    var newY:uint = (stage.stageHeight - myImg.height) / 2;
    myImg.move(newX, newY);
}
mardi 13 avril 2010 à 03:27:29 | Re : Problème dans une gallerie

Irokwa

Bonsoir,

merci à toi BBFUNK01 pour m'avoir apporté ton aide j'ai finalement réussit par m'en sortir.

martinearth: Yep, alors le tuto viens de ce site même, et le voici le lien:
http://www.flashkod.com/codes/PHOTOTHEQUE-MOZAIQUE-TWEEN_43413.aspx


Cette discussion est classée dans : problème, taille, image, clique, galerie


Répondre à ce message

Sujets en rapport avec ce message

Problème avec Gallery photo [ par massdell ] Bonjour à tous,J'ai chercher dans les différentes partie de flashkod mais pas moyen de trouver la réponse, c'est pourquoi je poste ce message suivant. galerie photos flash problème taille [ par sleepless_2101 ] boujourj'ai trouvé une galerie photos en flash, et je l'aie un peu modifiée pour l'adapter à ce que je voulais en faire. mais je me suis rendu compte Problème sur une galerie AS3, simple ne faisant pas appel à un XML [ par Geoffbulbe ] Bonjour à tous, Je suis nouveau dans le monde de l'AS3 (3j...), et je me casse bien les dents dessus. Je souhaite réaliser une galerie tout ce qu'il problème affichage galerie xml [ par lefouill ] J'ai un problème bizarre que je n'arrive pas à résoudre : J'ai une galerie xml qui se charge dans un fullflash à partir d'un swf externe. Lors de la Comment [ par kenott ] Bonjour, Je débute dans la création d'animation en flash et je bute sur un truc tout bête, mais je ne trouve la solution nul part.. Je viens de crée Loader ne redimensionne pas toujorus l'image avec scale On [ par RyoSaebaSG1 ] Bonjour à tous, alors voilà j'ai un problème un peut particulier, j'ai dans un fla un MovieClip, qui contient notament un Loader (Elément mxLoader), Problème avec les caractères [ par figueline ] Bonjour à tous ! J'ai un problème avec les caractères accentués. J'ai inséré du texte dans un fichier xml. Aussi, lorsque j'ai lancé l'anim. les à,é, Taille d'un clip [ par JonFever ] Bonjour ! Je viens donc poster un message ici car j'ai un problème avec un de mes projets sur lequel je travail en ce moment : un jeu de point'n'clic Loader : chargement de fichier dont le nom contient un "%" [ par thenaoh ] Bonjour, Je suis face à un problème tout bête : je veux charger avec un Loader une image jpg, dont le nom contient un "%", grâce au code suivant : [ Galerie swf animés (AS2) [ par HappyBlueFrog ] Bonjour tlm! Alors voila malgré mes très très nombreuses recherches sur internet, je n'arrive pas à trouver une solution à mon problème. [u]Donc j


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

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