IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Chargement d'arrière-plan aléatoire


Sujet :

ActionScript 3

  1. #1
    Nouveau candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Par défaut Chargement d'arrière-plan aléatoire
    Bonsoir !

    Je suis étudiant, et je n'ai que de très faibles notions d'acionscript (ma spécialité étant plus le graphisme). Je suis en train de bosser mon nouveau portfolio, mais me voilà bloqué dès le début: j'ai une fonction, qui au chargement de l'animation charge une image de fond aléatoire d'après une liste XML. J'aimerais que mon bouton (btn_ap) ré-exécute les 2 fonctions qui chargent l'arrière-plan aléatoire.

    J'ai pu trouver une solution, visible ici, mais c'est avec 2 images sur la ligne temporelle, et comme je vais devoir ensuite utiliser celle-ci pour faire les différentes sections de mon portfolio.

    La solution serait de combiner les 2 fonctions distinctes qui font ce chargement d'arrière plan aléatoire afin de la faire exécuter lors du clic sur le bouton... Mais je n'ai aucune idée de comment procéder.

    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    /* 
    Flashandmath.com tutorial by Doug Ensley. See "Loading Random Images from an XML List in Flash CS3" in the Basic section for documentation.
     
    Last modified on August 13, 2008.
    */
     
     
     
    var ap_largeur:Number = 900;
    var ap_hauteur:Number = 550;
     
    var listLoader:URLLoader = new URLLoader( new URLRequest("ap.xml") );
    var picLoader:Loader = new Loader();
     
    listLoader.addEventListener(Event.COMPLETE, gotList);
     
    function gotList(evt:Event):void {
      	var xmlData:XML = XML(listLoader.data);
      	var numImages:Number = xmlData.pix.length();
     
      	var stImage:String = xmlData.pix[Math.floor(numImages*Math.random())].toString();
     
    	picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, gotPic);
    	picLoader.load( new URLRequest(stImage) );
     
    	listLoader.removeEventListener(Event.COMPLETE, gotList);
    }
     
    function gotPic(evt:Event):void {
    	var thisBmp:Bitmap = Bitmap(evt.target.content);
    	thisBmp.x = 0;
    	thisBmp.y = 0;
    	var thisWidth:Number = thisBmp.width;
    	var thisHeight:Number = thisBmp.height;
     
    	thisBmp.scaleX = ap_largeur/thisWidth;
    	thisBmp.scaleY = ap_hauteur/thisHeight;
    	addChild(thisBmp);
    	setChildIndex(thisBmp,numChildren-2);
    	picLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE,gotPic);
    }
     
    stop()
     
    btn_ap.addEventListener(MouseEvent.MOUSE_DOWN,random_ap);
     
    function random_ap(evt:MouseEvent) {
    	gotoAndPlay(1)
    }
     
    setChildIndex(btn_ap,numChildren-1);

  2. #2
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Coucou !

    Voici une solution en plusieurs etape avec parfois plusieurs solutions et methode a toi de choisir celle que tu preferes !

    1 ) On Crée le container de l'arriere plan :

    1 a ) Crée dynamiquement un bitmap nommé "background" et ajoute le en ChildAt(0) a ton main ( pour qu'il soit tout en dessous des autres clip ).
    1 b ) Crée un clip vide et met le sur la scene tout en dessous en le nommant "background" par exemple.

    2 ) Crée un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var backgrounds:Array = new Array();
    3 ) Charge ton xml

    4 ) Quand le xml est chargé stock les valeurs dans le tableau

    5 ) Crée une fonction qui en choisis en une de maniere aléatoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var url = Math.floor(Math.random()*backgrounds.lenght)
    6 ) Charge l'image et met son contenu dans background (le clip créer sur la scene a l'etape 1 ).

    7 ) Sur le boutton l'event Click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clickHandler( e:MouseEvent ):void {
        chooseAndLoad();
    }

    Bonne chance !

  3. #3
    Nouveau candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Par défaut
    Alors, Je comprends parfaitement le raisonnement, mais la connaissance des morceaux de language me manque...

    1)a) J'ai bien créé la variable bitmap comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var Background:Bitmap = Bitmap(evt.target.content);
    Mais comment lui attribuer le ChildAt(0) dont tu parles ? Dans l'aide de Flash, on parle d'ailleurs d'un getChildAt() ou d'un AddChildAt() ...

    1)b) J'ai bien créé l'objet en question, le clip que j'ai ensuite nommé background.En parlant de clip vide, s'agit-il d'un clip vide au sens propre ou d'un clip contenant simplement une forme de la taille de mon image ?

    2) Pas de souci pour le tableau
    3) ni pour charger le XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var BackgroundS:Array = new Array();
    var Liste_AP:URLLoader = new URLLoader( new URLRequest("ap.xml") );
     
    Liste_AP.addEventListener(Event.COMPLETE);
    Question: cette dernière ligne est-elle juste ? je m'imagine qu'elle sert à n'enchainer sur la suite des opérations qu'une fois ma liste XML est chargée, mais ne suis-je pas en train d'oublier quelque-chose ?
    Dans le code de départ, après le COMPLETE, il y avait le nom de la fonction qui suivait.

    4) à partir d'ici, je suis de nouveau perdu:
    Avant de pouvoir stocker les valeurs dans le tableau, je dois interpréter le fichier XML ainsi chargé, dans un premier temps ?
    Ce code ressemble-t-il au suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var BackgroundS:XML = XML(Liste_AP.data);
    (je n'y crois pas trop: ma variable Bacjground était un tableau, et là on parle XML...)
    Je pense bien que la ligne qui est sencée y correspondre ne doit pet être très différente (ou pas) mais je ne peux pas l'inventer non plus dans l'état actuel de mes connaissances...

    5) Merci pour ce petit bout de code !

    6) chargement de l'image:
    heu, en théorie, si je commence à bien comprendre le fonctionnement de l'AS3, il faudra:
    -transférer l'URL obtenue dans l'étape précédente dans une variable de chargement de bitmap
    -charger le bitmap dans la variable Background que nous avons définie tout au début
    -et enfin faire en sorte que le contenu de cette variable s'affiche dans mon clip "background" qui est sur la scène.

    Déja que je ne sais pas si mon raisonnement est juste, j'ai d'autant plus de mal, même en regardant mon code de départ, à le mettre en pratique...

    7) la fonction ChooseandLoad citée dans ton bout de code de la fin englobe-t-elle la totalité des opérations que nous avons décrites auparavant ? dans ce cas, ma question au point 3) n'a plus de raison d'être, car je sais exécuter une fonction à partir d'un bouton

    Merci d'avance, Et encore désolé d'être un boulet xD Je n'ai étudié qu'un peu d'algorhytmie cette année, mais en aucun cas une chose allant vers une conception en terme "d'Objets", qui est le fonctionnement même de l'AS3...


  4. #4
    Membre chevronné Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Par défaut
    Quand je parle de movieclip vide , il est vraiment vide.

    utilise en effet AddChildAt(background,0);

    -----Note de style

    // Par convention tu devrais nommé tes variable avec une minuscule devant , pareil pour les fonctions. En effet les majuscule sont réservé au nom de class ( objet ) , exemple :

    var event:Event; On sait tout de suite que event est la variable et Event un type (une class). Sa evitera les erreurs inutile lors de la complétion

    -----

    3 ) Comment marche un ecouteur ? Alors en fait tu attribut a un objet une action qui declenchera une fonction , dans ton exemple si je dis pas de connerie :

    Liste_AP.addEventListener(Event.COMPLETE); la fonction est null

    Liste_AP.addEventListener(Event.COMPLETE,la_fonction_a_executer_lors_de_l_evenement);

    4 ) Du coup a quoi ressemblerais notre fonction : la_fonction_a_executer_lors_de_l_evenement qu'on appelera onXmlComplete pour les intimes ^^ !

    function onXmlComplete( e:Event ) :void{
    var xmlData:XML = XML(listLoader.data);//On crée un xml a partir des données stockée dans listLoader
    //ON traitre le xml mais
    }

Discussions similaires

  1. Chargement de page en arrière plan onmouseover et apparition onclick
    Par la-ilaha-ila-allah dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 27/01/2014, 22h15
  2. [Windows Phone 8] chargement en arriéré plan ?
    Par yassin123441 dans le forum Windows Phone
    Réponses: 1
    Dernier message: 26/04/2013, 06h40
  3. Page mise en arrière plan au chargement
    Par beeeeeennnnnn dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/11/2010, 00h05
  4. arrière plan aléatoire
    Par nicht dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/03/2009, 15h51
  5. Chargement d'un form en arrière plan
    Par Hobbi1 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/11/2006, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo