mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 02:58 Benutzername: Passwort: Auto-Login

Thema: Endlosschleife in Slideshow - Problem! vom 02.09.2010


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Multimedia -> Endlosschleife in Slideshow - Problem!
Autor Nachricht
icke3
Threadersteller

Dabei seit: 02.09.2010
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 02.09.2010 14:36
Titel

Endlosschleife in Slideshow - Problem!

Antworten mit Zitat Zum Seitenanfang

hallo,

ich soll für meine ausbildung eine scrollende slideshow erstellen. ich habe das so weit auch hinbekommen. aber nun soll das ganze endlos laufen. wie mache ich einen loop bei einer xml datei? die daten der xml liste werden in ein arry gespeichert und dann durchgearbeitet. wenn vorbei dann vorbei.

nun stehe ich unter zeitdruck. habe schon den ganzen tag probiert und stehe völlig auf dem schlauch. ihr seid meine letzt rettung!!!!

in bild 1 ist folgender code:
Code:
var slideshow:Slideshow = new Slideshow("list.xml");
addChild(slideshow);


in der as datei steht folgendes:
Code:
package
{
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;
   import flash.text.*;
   import flash.utils.*;



   public class Slideshow extends Sprite
   {

      private const PIC_SPACING:int = 30;
      private const ANIMATION_STILL_TIME:int =  0;
      private const ANIMATION_SPEED_FACTOR:int = 1;
      private const ANIMATION_INTERVAL:int = 50;
      private const RANDOMIZE_IMAGES:Boolean = true;
      
      private var queue:Array  = [];
      private var titles:Array = [];
      
      private var loader:Loader;
      private var xmlLoader:URLLoader;
      private var datasource:String;
      private var animator:Timer;
      
      private var xPos:int;
      private var yPos:int;
      private var lastTime:int;
      private var loadedItems:int;
      private var displayedItems:int;
      private var crtTitle:String;
      
      private var container:Sprite;
      private var titleField:TextField;
      

      public function Slideshow(datasource:String)
      {
         container = new Sprite();
         addChild(container);
         
         this.datasource = datasource;
         
         xmlLoader = new URLLoader(new URLRequest(datasource));
         xmlLoader.addEventListener(Event.COMPLETE, onDataLoaded);
         addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
      }
      

      private function onAddedToStage(e:Event):void
      {
         stage.scaleMode = StageScaleMode.EXACT_FIT;      
         container.x = stage.stageWidth;
         container.y = stage.stageHeight/2.2;
         
         titleField = new TextField();
         titleField.x = 0;
         titleField.width = stage.stageWidth;
         titleField.y = stage.stageHeight - 30;
         titleField.height = 30;
         titleField.selectable = false;
         titleField.embedFonts = true;
         titleField.antiAliasType = flash.text.AntiAliasType.ADVANCED;

         var format:TextFormat = new TextFormat();
            format.font = new TitleFont().fontName;
            format.align = TextFormatAlign.CENTER;
            format.size = 20;
            titleField.defaultTextFormat = format;
         titleField.text = "";

         addChild(titleField);
         
         animator = new Timer(ANIMATION_INTERVAL);
         animator.addEventListener(TimerEvent.TIMER, animate);
         animator.start();

      }

      private function onDataLoaded(e:Event):void
      {
         if (!xmlLoader.data)
         {
            trace("XML Load failed");
            return;
         }
         
            var dataXml:XML = XML(xmlLoader.data);
            for each (var item:XML in dataXml.item)
            {
               queue.push({url:item.@src, title:item.@title});
            }
            if (RANDOMIZE_IMAGES)
               queue = shuffle(queue);
      
            loadNextItem();
            }
      private function loadNextItem():void
      {
         var item:Object = queue.shift();
         
         if (item==null)
            return;
         crtTitle = item.title;
         
         loader = new Loader();
         loader.contentLoaderInfo.addEventListener(Event.INIT, onItemLoaded);
         loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onItemError);
         loader.load(new URLRequest(item.url));
      }


      private function onItemLoaded(e:Event):void
      {
         trace("loaded "+crtTitle);
         
         loadedItems++;
         
         var content:Bitmap = Bitmap(loader.content);
         content.x = xPos;
         xPos += content.width + PIC_SPACING;
         yPos = 500;
         container.addChild(content);
         titles.push(crtTitle);
         
         if (queue.length>0)
            loadNextItem();
         else
         {
            var refFirst:Bitmap = Bitmap(container.getChildAt(0));
            var refLast :Bitmap = Bitmap(container.getChildAt(container.numChildren-1));
            
            var copyFirst:Bitmap = new Bitmap(refFirst.bitmapData);
            var copyLast:Bitmap  = new Bitmap(refLast.bitmapData);
            
            copyLast.x = -copyLast.width - PIC_SPACING;
            copyFirst.x = xPos;
            
            container.addChild(copyFirst);
            container.addChild(copyLast);
         }
      }
      
      private function onItemError(e:Event):void
      {
         trace("load error");
         loadNextItem();
      }
      

      private function animate(e:TimerEvent):void
      {            
         if (loadedItems<1)
            return;
         
         if (container.numChildren > displayedItems)
         {
            var picToShow:Bitmap = Bitmap(container.getChildAt(displayedItems));
            var targetX:int = stage.stageWidth/2;
            var itemX:int = picToShow.x + picToShow.width/2 + container.x;
            
            var delta:int = 5;//(itemX-targetX) / ANIMATION_SPEED_FACTOR;
         }
         else
         {
            var picToShow:Bitmap = Bitmap(container.getChildAt(displayedItems-1));
            var delta:int = 0;
         }

         if (delta<=0)
         {

            if (((getTimer()-lastTime) >= ANIMATION_STILL_TIME * 1000) && (container.numChildren > displayedItems))
            {
               lastTime = getTimer();
               displayedItems++;
               titleField.text = "";
            }
            else
            {

               if (titleField.text == "" && titles[container.getChildIndex(picToShow)] != null)
                  titleField.text = titles[container.getChildIndex(picToShow)];
            }
         }

         else
         {
            if ((displayedItems==loadedItems) && ((container.x + container.getChildAt(displayedItems-1).x) <=0))
            {
               var diff:int = 0 - (container.x + container.getChildAt(displayedItems-1).x);
               
               container.x = container.getChildAt(container.numChildren-1).width - diff;
               displayedItems = 0;
            }
               
            container.x -= delta;   
         }
      }
      

      private function shuffle(arr:Array):Array
      {
         var shuffled:Array = arr.slice();
         for (var i:int=0; i<arr.length; i++)
         {
            var element:Object = shuffled[i];
            var rnd:int = Math.floor(arr.length * Math.random());
            shuffled[i] = shuffled[rnd];
            shuffled[rnd] = element;
         }
         return shuffled;
      }
   }
}


die xml datei liegt im selben ordner und hat folgende struktur:
Code:
<slideshow>
   <item src="slides/1.jpg" title=""/>
   <item src="slides/2.jpg" title=""/>
   <item src="slides/3.jpg" title=""/>
   <item src="slides/4.jpg" title=""/>
</slideshow>
  View user's profile Private Nachricht senden
icke3
Threadersteller

Dabei seit: 02.09.2010
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 02.09.2010 14:38
Titel

Antworten mit Zitat Zum Seitenanfang

es sind am ende in der xml datei 258 bilder enthalten, daher ist es schwierig die in flash in die bibliothek zu ziehen.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
 
Ähnliche Themen Slideshow Variablen Problem
DHTML slideshow & lightbox Problem
[jQuery Cycle] Slideshow in Slideshow wechseln zusammen
DVD als Endlosschleife?
mp4 als Endlosschleife in pdf
Probleme mit endlosschleife
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Multimedia


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.