Aide avec AS3 image carrousel

  • goltoof
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Fév 01, 2010
  • Messages: 7
  • Status: Offline

Message Février 1st, 2010, 12:59 pm

J'ai pu faire ce script pour un carrousel xml image contrôlée. Ça marche vraiment bien, j'ai juste besoin de tordre un peu pour qu'il fonctionne comme je le veux.

Je tiens à la position du carrousel dans un certain domaine de la vidéo. Le seul paramètre que je vois pour contrôler où sa position est «plancher var: Number = 20;" mais cela ne contrôle que la position verticale. J'ai besoin de contrôler la position horizontale, en ce moment son juste centré. Je vois "xpos3D» mais ne savent pas quoi en faire.

Je tiens également à le garder de montrer à l'extérieur des cadres que je veux qu'il apparaisse. En ce moment quand je mets le script dans le film il apparaît dans chaque trame. Comment puis-je faire pour qu'elle ne figurent que dans certains cadres du film? Quand je mets "stop ();" à la fin de l'image clé qui présente encore dans les cadres après.

La dernière chose dont j'ai besoin est à la position de l'animation sur le dessus des couches autres. À l'heure actuelle il apparaît ci-dessous tous les autres calques dans le film.

Je ne sais pas quelles sont les parties à modifier pour accomplir ce donc bien sûr je ne sais pas quelles parties de la poste, ce qui explique pourquoi Im annonce le tout.

Conseils sur la manière d'accomplir l'une de ces très appréciée! :)


Code: [ Select ]
//We use 70x70 sized images (change this if different for your images)
const IMAGE_WIDTH:uint = 70;
const IMAGE_HEIGHT:uint = 70;

//Set the focal length
var focalLength:Number = 400;

//Set the vanishing point
var vanishingPointX:Number = stage.stageWidth / 2;
var vanishingPointY:Number = stage.stageHeight / 2;

//The 3D floor for the images
var floor:Number = 20;

//We calculate the angleSpeed in the ENTER_FRAME listener
var angleSpeed:Number = 0;

//Radius of the circle
var radius:Number = 200;

//Specify the path to the XML file.
//You can use my path or your own.
var xmlFilePath:String = "3D-carousel-settings.xml";

//We save the loaded XML to a variable
var xml:XML;

//This array will contain all the imageHolders
var imageHolders:Array = new Array();

//We want to know how many images have been loaded
var numberOfLoadedImages:uint = 0;

//The total number of images according to XML file
var numberOfImages:uint = 0;

//Load the XML file.
var loader = new URLLoader();
loader.load(new URLRequest(xmlFilePath));

//We call the function xmlLoaded() when the loading is complete.
loader.addEventListener(Event.COMPLETE, xmlLoaded);

//This function is called when the XML file is loaded
function xmlLoaded(e:Event):void {

    //Create a new XML object from the loaded XML data
    xml = new XML(loader.data);
    xml.ignoreWhitespace = true;

    //Call the function that loads the images
    loadImages();
}

//This function loads and creates holders for the images specified in the 3D-carousel-settings.xml
function loadImages():void {

    //Get the total number of images from the XML file
    numberOfImages = xml.number_of_images;

    //Loop through the images found in the XML file
    for each (var image:XML in xml.images.image) {

        //Create a new image holder for an image
        var imageHolder:MovieClip = new MovieClip();

        //Create a loader that will load an image
        var imageLoader = new Loader();

        //Add the imageLoader to the imageHolder
        imageHolder.addChild(imageLoader);

        //We don't want to catch any mouse events from the loader
        imageHolder.mouseChildren = false;

        //Position the imageLoader so that the registration point of the holder is centered
        imageLoader.x = - (IMAGE_WIDTH / 2);
        imageLoader.y = - (IMAGE_HEIGHT / 2);

        //Save where the imageHolder should link to
        imageHolder.linkTo = image.link_to;

        //Add the imageHolder to the imageHolders array
        imageHolders.push(imageHolder);

        //Load the image
        imageLoader.load(new URLRequest(image.url));

        //Listen when the image is loaded
        imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
    }
}

//This function is called when an image is loaded
function imageLoaded(e:Event):void {

    //Update the number of loaded images
    numberOfLoadedImages++;

    //Set the bitmap smoothing to true for the image (we know that the loader's content is a bitmap).
    e.target.content.smoothing = true;

    //Check to see if this is the last image loaded
    if (numberOfLoadedImages == numberOfImages) {

        //Set up the carousel
        initializeCarousel();
    }
}

//This function is called when all the images have been loaded.
//Now we are ready to create the 3D carousel.
function initializeCarousel():void {

    //Calculate the angle difference between the images (in radians)
    var angleDifference:Number = Math.PI * (360 / numberOfImages) / 180;

    //Loop through the images
    for (var i:uint = 0; i < imageHolders.length; i++) {

        //Assign the imageHolder to a local variable
        var imageHolder:MovieClip = (MovieClip)(imageHolders[i]);

        //Get the angle for the image (we space the images evenly)
        var startingAngle:Number = angleDifference * i;

        //Position the imageHolder
        imageHolder.xpos3D = radius * Math.cos(startingAngle);
        imageHolder.zpos3D = radius * Math.sin(startingAngle);
        imageHolder.ypos3D = floor;

        //Set a "currentAngle" attribute for the imageHolder
        imageHolder.currentAngle = startingAngle;

        //Calculate the scale ratio for the imageHolder (the further the image -> the smaller the scale)
        var scaleRatio = focalLength/(focalLength + imageHolder.zpos3D);

        //Scale the imageHolder according to the scale ratio
        imageHolder.scaleX = imageHolder.scaleY = scaleRatio;

        //Set the alpha for the imageHolder
        imageHolder.alpha = 0.3;

        //We want to know when the mouse is over and out of the imageHolder
        imageHolder.addEventListener(MouseEvent.MOUSE_OVER, mouseOverImage);
        imageHolder.addEventListener(MouseEvent.MOUSE_OUT, mouseOutImage);

        //We also want to listen for the clicks
        imageHolder.addEventListener(MouseEvent.CLICK, imageClicked);

        //Position the imageHolder to the stage (from 3D to 2D coordinates)
        imageHolder.x = vanishingPointX + imageHolder.xpos3D * scaleRatio;
        imageHolder.y = vanishingPointY + imageHolder.ypos3D * scaleRatio;

        //Add the imageHolder to the stage
        addChild(imageHolder);
    }

    //Add an ENTER_FRAME for the rotation
    addEventListener(Event.ENTER_FRAME, rotateCarousel);
}

function rotateCarousel(e:Event):void {

    //Calculate the angleSpeed according to mouse position
    angleSpeed = (mouseX - vanishingPointX) / 4096;

    //Loop through the images
    for (var i:uint = 0; i < imageHolders.length; i++) {

        //Assign the imageHolder to a local variable
        var imageHolder:MovieClip = (MovieClip)(imageHolders[i]);

        //Update the imageHolder's current angle
        imageHolder.currentAngle += angleSpeed;

        //Set a new 3D position for the imageHolder
        imageHolder.xpos3D=radius*Math.cos(imageHolder.currentAngle);
        imageHolder.zpos3D=radius*Math.sin(imageHolder.currentAngle);

        //Calculate a scale ratio
        var scaleRatio = focalLength/(focalLength + imageHolder.zpos3D);

        //Scale the imageHolder according to the scale ratio
        imageHolder.scaleX=imageHolder.scaleY=scaleRatio;

        //Update the imageHolder's coordinates
        imageHolder.x=vanishingPointX+imageHolder.xpos3D*scaleRatio;
        imageHolder.y=vanishingPointY+imageHolder.ypos3D*scaleRatio;
    }

    //Call the function that sorts the images so they overlap each others correctly
    sortZ();
}

//This function sorts the images so they overlap each others correctly
function sortZ():void {

    //Sort the array so that the image which has the highest
    //z position (= furthest away) is first in the array
    imageHolders.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);

    //Set new child indexes for the images
    for (var i:uint = 0; i < imageHolders.length; i++) {
        setChildIndex(imageHolders[i], i);
    }
}

//This function is called when the mouse is over an imageHolder
function mouseOverImage(e:Event):void {

    //Set alpha to 1
    e.target.alpha=1;
}

//This function is called when the mouse is out of an imageHolder
function mouseOutImage(e:Event):void {

    //Set alpha to 0.3
    e.target.alpha=0.3;
}

//This function is called when an imageHolder is clicked
function imageClicked(e:Event):void {

    //Navigate to the URL that is in the "linkTo" variable
    navigateToURL(new URLRequest(e.target.linkTo));
}
  1. //We use 70x70 sized images (change this if different for your images)
  2. const IMAGE_WIDTH:uint = 70;
  3. const IMAGE_HEIGHT:uint = 70;
  4. //Set the focal length
  5. var focalLength:Number = 400;
  6. //Set the vanishing point
  7. var vanishingPointX:Number = stage.stageWidth / 2;
  8. var vanishingPointY:Number = stage.stageHeight / 2;
  9. //The 3D floor for the images
  10. var floor:Number = 20;
  11. //We calculate the angleSpeed in the ENTER_FRAME listener
  12. var angleSpeed:Number = 0;
  13. //Radius of the circle
  14. var radius:Number = 200;
  15. //Specify the path to the XML file.
  16. //You can use my path or your own.
  17. var xmlFilePath:String = "3D-carousel-settings.xml";
  18. //We save the loaded XML to a variable
  19. var xml:XML;
  20. //This array will contain all the imageHolders
  21. var imageHolders:Array = new Array();
  22. //We want to know how many images have been loaded
  23. var numberOfLoadedImages:uint = 0;
  24. //The total number of images according to XML file
  25. var numberOfImages:uint = 0;
  26. //Load the XML file.
  27. var loader = new URLLoader();
  28. loader.load(new URLRequest(xmlFilePath));
  29. //We call the function xmlLoaded() when the loading is complete.
  30. loader.addEventListener(Event.COMPLETE, xmlLoaded);
  31. //This function is called when the XML file is loaded
  32. function xmlLoaded(e:Event):void {
  33.     //Create a new XML object from the loaded XML data
  34.     xml = new XML(loader.data);
  35.     xml.ignoreWhitespace = true;
  36.     //Call the function that loads the images
  37.     loadImages();
  38. }
  39. //This function loads and creates holders for the images specified in the 3D-carousel-settings.xml
  40. function loadImages():void {
  41.     //Get the total number of images from the XML file
  42.     numberOfImages = xml.number_of_images;
  43.     //Loop through the images found in the XML file
  44.     for each (var image:XML in xml.images.image) {
  45.         //Create a new image holder for an image
  46.         var imageHolder:MovieClip = new MovieClip();
  47.         //Create a loader that will load an image
  48.         var imageLoader = new Loader();
  49.         //Add the imageLoader to the imageHolder
  50.         imageHolder.addChild(imageLoader);
  51.         //We don't want to catch any mouse events from the loader
  52.         imageHolder.mouseChildren = false;
  53.         //Position the imageLoader so that the registration point of the holder is centered
  54.         imageLoader.x = - (IMAGE_WIDTH / 2);
  55.         imageLoader.y = - (IMAGE_HEIGHT / 2);
  56.         //Save where the imageHolder should link to
  57.         imageHolder.linkTo = image.link_to;
  58.         //Add the imageHolder to the imageHolders array
  59.         imageHolders.push(imageHolder);
  60.         //Load the image
  61.         imageLoader.load(new URLRequest(image.url));
  62.         //Listen when the image is loaded
  63.         imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
  64.     }
  65. }
  66. //This function is called when an image is loaded
  67. function imageLoaded(e:Event):void {
  68.     //Update the number of loaded images
  69.     numberOfLoadedImages++;
  70.     //Set the bitmap smoothing to true for the image (we know that the loader's content is a bitmap).
  71.     e.target.content.smoothing = true;
  72.     //Check to see if this is the last image loaded
  73.     if (numberOfLoadedImages == numberOfImages) {
  74.         //Set up the carousel
  75.         initializeCarousel();
  76.     }
  77. }
  78. //This function is called when all the images have been loaded.
  79. //Now we are ready to create the 3D carousel.
  80. function initializeCarousel():void {
  81.     //Calculate the angle difference between the images (in radians)
  82.     var angleDifference:Number = Math.PI * (360 / numberOfImages) / 180;
  83.     //Loop through the images
  84.     for (var i:uint = 0; i < imageHolders.length; i++) {
  85.         //Assign the imageHolder to a local variable
  86.         var imageHolder:MovieClip = (MovieClip)(imageHolders[i]);
  87.         //Get the angle for the image (we space the images evenly)
  88.         var startingAngle:Number = angleDifference * i;
  89.         //Position the imageHolder
  90.         imageHolder.xpos3D = radius * Math.cos(startingAngle);
  91.         imageHolder.zpos3D = radius * Math.sin(startingAngle);
  92.         imageHolder.ypos3D = floor;
  93.         //Set a "currentAngle" attribute for the imageHolder
  94.         imageHolder.currentAngle = startingAngle;
  95.         //Calculate the scale ratio for the imageHolder (the further the image -> the smaller the scale)
  96.         var scaleRatio = focalLength/(focalLength + imageHolder.zpos3D);
  97.         //Scale the imageHolder according to the scale ratio
  98.         imageHolder.scaleX = imageHolder.scaleY = scaleRatio;
  99.         //Set the alpha for the imageHolder
  100.         imageHolder.alpha = 0.3;
  101.         //We want to know when the mouse is over and out of the imageHolder
  102.         imageHolder.addEventListener(MouseEvent.MOUSE_OVER, mouseOverImage);
  103.         imageHolder.addEventListener(MouseEvent.MOUSE_OUT, mouseOutImage);
  104.         //We also want to listen for the clicks
  105.         imageHolder.addEventListener(MouseEvent.CLICK, imageClicked);
  106.         //Position the imageHolder to the stage (from 3D to 2D coordinates)
  107.         imageHolder.x = vanishingPointX + imageHolder.xpos3D * scaleRatio;
  108.         imageHolder.y = vanishingPointY + imageHolder.ypos3D * scaleRatio;
  109.         //Add the imageHolder to the stage
  110.         addChild(imageHolder);
  111.     }
  112.     //Add an ENTER_FRAME for the rotation
  113.     addEventListener(Event.ENTER_FRAME, rotateCarousel);
  114. }
  115. function rotateCarousel(e:Event):void {
  116.     //Calculate the angleSpeed according to mouse position
  117.     angleSpeed = (mouseX - vanishingPointX) / 4096;
  118.     //Loop through the images
  119.     for (var i:uint = 0; i < imageHolders.length; i++) {
  120.         //Assign the imageHolder to a local variable
  121.         var imageHolder:MovieClip = (MovieClip)(imageHolders[i]);
  122.         //Update the imageHolder's current angle
  123.         imageHolder.currentAngle += angleSpeed;
  124.         //Set a new 3D position for the imageHolder
  125.         imageHolder.xpos3D=radius*Math.cos(imageHolder.currentAngle);
  126.         imageHolder.zpos3D=radius*Math.sin(imageHolder.currentAngle);
  127.         //Calculate a scale ratio
  128.         var scaleRatio = focalLength/(focalLength + imageHolder.zpos3D);
  129.         //Scale the imageHolder according to the scale ratio
  130.         imageHolder.scaleX=imageHolder.scaleY=scaleRatio;
  131.         //Update the imageHolder's coordinates
  132.         imageHolder.x=vanishingPointX+imageHolder.xpos3D*scaleRatio;
  133.         imageHolder.y=vanishingPointY+imageHolder.ypos3D*scaleRatio;
  134.     }
  135.     //Call the function that sorts the images so they overlap each others correctly
  136.     sortZ();
  137. }
  138. //This function sorts the images so they overlap each others correctly
  139. function sortZ():void {
  140.     //Sort the array so that the image which has the highest
  141.     //z position (= furthest away) is first in the array
  142.     imageHolders.sortOn("zpos3D", Array.NUMERIC | Array.DESCENDING);
  143.     //Set new child indexes for the images
  144.     for (var i:uint = 0; i < imageHolders.length; i++) {
  145.         setChildIndex(imageHolders[i], i);
  146.     }
  147. }
  148. //This function is called when the mouse is over an imageHolder
  149. function mouseOverImage(e:Event):void {
  150.     //Set alpha to 1
  151.     e.target.alpha=1;
  152. }
  153. //This function is called when the mouse is out of an imageHolder
  154. function mouseOutImage(e:Event):void {
  155.     //Set alpha to 0.3
  156.     e.target.alpha=0.3;
  157. }
  158. //This function is called when an imageHolder is clicked
  159. function imageClicked(e:Event):void {
  160.     //Navigate to the URL that is in the "linkTo" variable
  161.     navigateToURL(new URLRequest(e.target.linkTo));
  162. }
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Février 1st, 2010, 12:59 pm

  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Février 1st, 2010, 1:08 pm

Créer un MovieClip vide sur la scène dans le cadre que vous souhaitez utiliser. Ensuite, mettre tout le code carrousel votre intérieur de ce clip en blanc. De cette façon, vous devriez être capable de le positionner où vous voulez et il ne devrait pas montrer sur plusieurs trames.
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com
  • goltoof
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Fév 01, 2010
  • Messages: 7
  • Status: Offline

Message Février 1st, 2010, 1:34 pm

graphixboy a écrit:
Créer un MovieClip vide sur la scène dans le cadre que vous souhaitez utiliser. Ensuite, mettre tout le code carrousel votre intérieur de ce clip en blanc. De cette façon, vous devriez être capable de le positionner où vous voulez et il ne devrait pas montrer sur plusieurs trames.


Merci. Il est donc sembler facile fou. J'ai créé le clip en blanc, on le traîna à la scène, lui a donné un nom d'instance. En CS4 Je ne peux mettre que le code du type «carrousel» dans «le clip en blanc. Alors, j'ai mis le code dans la couche où le clip est (je suppose que cela est faux, mais sa seule option que j'ai vu), le carrousel est encore derrière tout et apparaît sur chaque image. Je mets le code dans le cadre quand je double cliquez sur le clip, le carrousel est encore derrière tout, mais dans une position différente et ne pas afficher sur chaque image .. What am I missing?

Dans les deux cas, le clip montre vide sur la scène comme un petit point. J'ai besoin de le redimensionner et repositionner. Changer les propriétés de x / y position ne fait rien et h / w propriétés sont grisées.
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Février 1st, 2010, 1:48 pm

ainsi un clip en blanc n'a pas une hauteur ou la largeur car elle ne dispose pas de contenu jusqu'à ce que le script s'exécute si vous ne serez pas en mesure de changer cela. Je suppose que le script est révélateur du carrousel autour du point central de la donnée Pare pas quel était le stade avant, mais est maintenant le petit "point" du clip vide. Si vous déplacez qui parsèment peu à l'endroit que vous voulez le carrousel au centre il devrait fonctionner.

Quant à être en dessous de tout, vous dire essentiellement flash pour tirer le carrousel dans le clip en blanc si vous devriez être en mesure de déplacer simplement le clip en blanc à une couche supérieure.
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com
  • goltoof
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Fév 01, 2010
  • Messages: 7
  • Status: Offline

Message Février 1st, 2010, 2:29 pm

graphixboy a écrit:
Quant à être en dessous de tout, vous dire essentiellement flash pour tirer le carrousel dans le clip en blanc si vous devriez être en mesure de déplacer simplement le clip en blanc à une couche supérieure.


J'ai déplacé le clip dot-tour et s'est positionné là où je veux, sans le montrer sur chaque image. Score! gif "alt =": D "title =" très heureux ">

Le problème reste pas moins que le montre le carrousel derrière tout, même si la couche contenant elle est positionnée dessus de tout autre couche.

Est-ce abordées dans le code?
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Février 1st, 2010, 2:38 pm

hmm le code est maintenant sur la ligne de temps dans le clip en blanc correct?

Si vous tentez donc changer la ligne 156 de votre code ci-dessus pour cet. addChild (conteneurImage);

Je pense que sa tente toujours de joindre les images de la scène principale, même si elle devrait être au coeur de ce clip. Si le «ceci» ne fonctionne pas vous pouvez essayer conteneurImage (blankclipinstancename.addChild);
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com
  • goltoof
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Fév 01, 2010
  • Messages: 7
  • Status: Offline

Message Février 1st, 2010, 2:41 pm

Nevermind! Son travail justes comme je le veux! Je pensais itd être intéressant de voir comment accomplir tout cela avec l'AS mais si vous n'avez pas besoin de connaître parfois son mieux ne pas.

Merci!
  • graphixboy
  • Control + Z
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 11, 2005
  • Messages: 1828
  • Loc: In the Great White North
  • Status: Offline

Message Février 1st, 2010, 3:07 pm

Glad it worked. Vous pourriez avoir tout vu avec le code, mais Ive a constaté que lorsque votre essayant d'intégrer quelqu'un elses travaux dans votre projet que vous avez suivi la méthode est généralement préférable.
If at first you don't succeed F1... If that doesn't work try Google!
//// Designer, Developer & Teacher - Interactive, Motion and 3D \\\\
Portfolio at WhenImNotSleeping.com
  • goltoof
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Fév 01, 2010
  • Messages: 7
  • Status: Offline

Message Février 1st, 2010, 3:54 pm

Il ya un petit problème qui se pose. J'ai le carrousel positionné sur le côté droit du panneau d'affichage, pas le centre. Ainsi, le périmètre de droit du carrousel est juste à la frontière de la SWF (20px de marge), alors qu'il ya 700px ou donc quitté le périmètre du carrousel

La vitesse du carrousel est tributaire de la position de la souris. Quand le pointeur de souris vers la droite du carrousel, la vitesse atteint un sommet et y reste que la souris se déplace au large de la SWF. Mais quand le pointeur de la souris à l'extrémité opposée du panneau, le carrousel tourne progressivement ridiculement rapide. Jaimerais faire équilibrée de sorte que le carrousel atteint la même vitesse des deux côtés et cesse de voir passage de la souris à un certain point sur la gauche.

Est-ce raisonnable?

Ne voyez-vous un endroit pour aborder ce problème dans le code? Sinon je suppose theres une sorte de wrapper je peux appliquer à travers le clip vide qui maintient l'effet mouseover contenue?
  • goltoof
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Fév 01, 2010
  • Messages: 7
  • Status: Offline

Message Février 2nd, 2010, 8:33 am

I Got It regardant la façon dont j'ai besoin, mais ce bug de vitesse est assez importante et le fait pour la plupart inutilisables. Je vois le "angleSpeed = (mouseX - vanishingPointX) / 4096; qui est aussi ne contrôle que la vitesse de passage de la souris, mais tout à fait Im clueless comment corriger ce bug d'ici.

Ill continuer à regarder, mais aucun indice fort apprécié.

Afficher de l'information

  • Total des messages de ce sujet: 10 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 44 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC