Donnerstag, Mai 28, 2020

Laden Sie die Bilder in separate movie-clips aus einer XML, Flash, Actionscript 3.0

Ich habe eine xml-Bildergalerie, ziemlich standard, und ich habe einen Lader, zusammen mit Film-clips, ich will die Bilder geladen, das problem, dass ich laufen bin, ist, ich will das laden von Bildern in separate movie-clips, so dass ich mit einer case-Anweisung, um anzugeben, wohin Sie gehen. Jedoch, nur kann ich Sie laden zu einem Film-clip, ich nehme an, Sie sind be-ontop von einander und ich weiß nicht, wie um Sie zu trennen. Ich poste meinen code. Es macht keinen Sinn für mich, aber wenn Sie irgendwelche Vorschläge haben wäre echt Super.

Kann ich machen, separaten Lader und dann nur 1 Bild pro loader, aber das klingt nicht richtig für mich.

   var counterNumber:Number = 0;

   function callThumbs():void{
     for (var i:Number = 0; i <3; i++){
        thumbLoaded();
        counterNumber++;
     }
   }




    function thumbLoaded(){

    var photoLoader = new Loader();

    switch (counterNumber){

            case 1:
                photoLoader.load(new URLRequest(MovieClip(this.parent)[email protected][0]));
                whole.boxOne.pictureLoader.addChild(photoLoader);
                trace("1Done");
                break;

            case 2:
                photoLoader.load(new URLRequest(MovieClip(this.parent)[email protected][0]));
                whole.boxTwo.pictureLoader.addChild(photoLoader);
                trace("2Done");
                break;    
       }
   }
InformationsquelleAutor James Dunay | 2010-06-07

1 Kommentar

  1. 1

    Hier ist, wie würde ich es angehen. Das einzige, was ich nicht getan habe ist, ändern Sie die position des MovieClips, nachdem Sie geladen sind, mit den Bildern. Sie könnte leicht fügen Sie in diese Funktion in der imageLoaded () – Funktion.

    Setzen Sie den folgenden code in das Bedienfeld „Aktionen“ von den ersten frame eine AS3-FLA-Datei. Dies setzt Voraus, dass ein Verzeichnis namens „images“ existiert im gleichen Verzeichnis wie die FLA/SWF.

    //Create array of image filenames
    var filenames:Array = new Array();
    filenames[0] = 'some_image.jpg';
    filenames[1] = 'some_other_image.jpg';
    filenames[2] = 'and_another.jpg';
    
    //Declare variables
    const IMAGES_DIRECTORY:String = 'images/';
    var loaders:Array = new Array();
    var movieClips:Array = new Array();
    
    //This function instantiates the exact number of Loader objects that are required
    //and initiates the loading process for each image file. As each image is loaded,
    //imageLoaded() is called
    function createLoaders(filenamesAsArray:Array, directory:String):void
    {
        for(var i:int = 0; i < filenamesAsArray.length; i++)
        {
            loaders[i] = new Loader();
            loaders[i].load(new URLRequest(directory + filenamesAsArray[i]));
            loaders[i].contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
        }
    }
    
    createLoaders(filenames, IMAGES_DIRECTORY);
    
    //This function is called as each Loader object is completely loaded
    //It creates each individual movieclip, adds the image to it, and then adds the MC to the stage
    function imageLoaded(e:Event):void
    {
        if(e.target.content.bitmapData)
        {
            var mc:MovieClip = new MovieClip();
            var bmp:Bitmap = new Bitmap(e.target.content.bitmapData);
            mc.addChild(bmp);
            movieClips.push(mc);
            addChild(movieClips[movieClips.length - 1]);
        }
    }

    Über den Import von XML-Daten

    Blick in die XML-Objekt.

    das Laden von XML-Beispiel

    XML-Dokument zum Beispiel:

    <images>
        <image>
            <title>Portrait of a Woman</title>
            <filename>portrait.jpg</filename>
        </image>
        <image>
            <title>Rural Landscape</title>
            <filename>landscape.jpg</filename>
        </image>
        <image>
            <title>My Cat</title>
            <filename>cat.jpg</filename>
        </image>
    </images>

    Den AS3-für das Laden der obigen XML-Dokument

    //Instantiate some objects (URLoader and XML)
    var xmlLoader:URLLoader = new URLLoader();
    var xmlData:XML = new XML();
    
    //Listen for the instance of URLLoader (xmlLoader) to trigger Event.COMPLETE,
    //which will call the function named 'loadXML()'
    xmlLoader.addEventListener(Event.COMPLETE, loadXML);
    
    //Initiate the process of loading the XML document
    //In this case, 'test.xml' is located in the same directory as the SWF/FLA
    //that this code is located in
    xmlLoader.load(new URLRequest('test.xml'));
    
    //This is the function that will be called by the event listener above (when
    //the xmlLoader signals Event.COMPLETE
    function loadXML(e:Event):void
    {
        //Retrieve the contents of the XML document
        xmlData = new XML(e.target.data);
    
        //Trace the entire document:
        trace(xmlData);
    
        //Trace the filename for the first <image> node
        trace(xmlData.image[0].filename);
    }

    Natürlich, Ihr XML-Dokument kann sehr unterschiedlich sein, in welchem Fall, Sie brauchen, um Praxis abrufen die genauen Informationen, die Sie wollen. Dies ist der schwierigste Teil, meiner Meinung nach. Auch würden Sie instanziieren ein array außerhalb des Bereichs der loadXML – Funktion oben. Dann, rekursiv füllen Sie das array mit den Dateinamen aus dem XML-Dokument.

    • Ich freue mich auf Eure post, ich danke Ihnen für Ihr Interesse.
    • Kurz überlegt, was Sie mir hier, danke btw. Sagen wollte ich das Bild aus einer XML-Datei, statt nur wie Sie in den /images-Ordner und suchen Sie auf diese Weise, wäre das möglich? Vielleicht organisieren der Bilder in Ihre eigene Reihe?
    • Siehe die zusätzlichen Informationen über das laden der XML, die ich gerade Hinzugefügt.
    • Okay. Letzte Frage, ich verspreche, ich habe die Bilder laden auf der Seite alle spaced out in eine schöne Gitter, aus einer XML-Datei, sondern sagen statt der Schaffung einer neuen „mc“ für jeden, ich wollte nur legen Sie Sie im inneren bereits erstellten movieclips auf der Bühne, ist, dass so etwas möglich ist? Ich habe versucht, es durch die Schaffung eines neuen array, und mit der Zugabe von speziellen „pre-erstellt“ movieclips (2 in diesem Fall) und die Zugabe von bmp ‚ s zu, das array, aber wieder bekomme ich das gleiche problem mit es nur die Anzeige des letzten Bildes.
    • Sind die Instanz-Namen des zuvor erstellten MovieClips hart codiert? Auch gibt es eine Feste Anzahl von bereits erstellten MovieClips?
    • Die Instanznamen sind in der Tat hart codiert. Und ja, ich habe eine Feste Anzahl von Ihnen.
    • Haben Sie kein Glück mit diesem?

Kostenlose Online-Tests