Skip to main content
Participant
August 3, 2011
Answered

AS3.0 XML loading image at different duration

  • August 3, 2011
  • 1 reply
  • 1108 views

Hi iam new to the Actionscript i have to run each image stay time for differnt duration like example "img1.jpg will be 20sec and img2.jpg will be 10sec" like that.

Can anyone to help me here.

This is the below code i have :

package com{
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
//import flash.display.Graphics;
import flash.events.Event;
//import flash.display.StageScaleMode;
import flash.utils.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;

public class MyMovie extends Sprite {
  //declaring variables...
  private var myXml:XML;
  private var myXMLURL:URLRequest;
  private var myLoader:URLLoader;
  private var imageList:XMLList;
  private var loader:Loader;
  private var no:Number = 0;
  private var currentImage:Loader;
  private var interval:uint = 0;
  //private var abc = 0;

  //defining cunstructor...
  /*public function MyMovie() {
   super();
   var g:Graphics = this.graphics;
   g.clear();
   g.beginFill(0x000000, 1);
   g.drawRect(0, 0, 768, 1360);
   g.endFill();

  }*/
  public function LoadXml(xmlPath:String = null):void {
   var XML_URL:String;
   if (xmlPath == null) {
    XML_URL = "data.xml";
   } else {
    XML_URL = xmlPath;
   }
   myXMLURL = new URLRequest(XML_URL);
   myLoader = new URLLoader(myXMLURL);
   myLoader.addEventListener("complete", xmlLoaded);
  }
  private function xmlLoaded(event:Event):void {
   myXml = new XML();
   myXml = XML(myLoader.data);
   imageList = new XMLList();
   imageList = myXml.children();
   loadImage();
   //trace(imageList[no].child("path"));
  }
  private function loadImage():void {
   clearInterval(interval);
   if (loader!=null){
             loader.unloadAndStop();
            loader=null;
       }
   //abc =5000;
   var imagePath:String = imageList[no].child("path");
   var imageRequest:URLRequest = new URLRequest(imagePath);
   loader = new Loader();
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
   loader.load(imageRequest);
   //currentImage = loader;
   addChild(loader);
  }
  private function completeHandler(evt:Event):void {
   clearInterval(interval);
   if (currentImage != null) {
    removeChild(currentImage);
   }
   currentImage = loader;
   currentImage.x = (768/2)-(currentImage.width/2);
   currentImage.y = (1360/2)-(currentImage.height/2);
     //var myTween:Tween = new Tween(currentImage, "alpha", Regular.easeOut, 0, 1, 0.5, true);
   //var myTween:Tween = new Tween(currentImage, "x", Strong.easeOut, 0, 0, 1, true);
   var myTween:Tween = new Tween(currentImage, "x", Strong.easeOut, 768, 0, 1, true);
   myTween.addEventListener("motionFinish", TweenFinishedHandler);
  }
  private function TweenFinishedHandler(evt:Event):void {
   no = no < imageList.length()-1 ? no+1 : 0;
   interval = setInterval(loadImage, 3000);
  
  }
}
}

xml file:

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<img>
  <path>images/img1a.swf</path>
</img>
<img>
  <path>images/img2a.swf</path>
</img>
<img>
  <path>images/img3a.swf</path>
</img>
</root>

This topic has been closed for replies.
Correct answer relaxatraja

Make your XML like this:

<?xml version="1.0" encoding="iso-8859-1"?>

<root>

      <img>

            <path>images/img1a.swf</path>
        <sec>10000</sec>

      </img>

      <img>

            <path>images/img2a.swf</path>
        <sec>20000</sec>

      </img>

      <img>

            <path>images/img3a.swf</path>
        <sec>30000</sec>

      </img>

</root>

and your code should be:

package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.Graphics;
import flash.events.Event;
import flash.display.StageScaleMode;
import flash.utils.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;

public class loadClass extends Sprite {
  //declaring variables...
  private var myXml:XML;
  private var myXMLURL:URLRequest;
  private var myLoader:URLLoader;
  private var imageList:XMLList;
  private var loader:Loader;
  private var no:Number = 0;
  private var currentImage:Loader;
  private var interval:uint = 0;
  private var seconds:Number;

  //defining cunstructor...
  public function loadClass() {
       super();
       var g:Graphics = this.graphics;
       g.clear();
       g.beginFill(0x000000, 1);
       g.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
       g.endFill();
    LoadXml();
  }
  public function LoadXml(xmlPath:String = null):void {
       var XML_URL:String;
       if (xmlPath == null) {
        XML_URL = "data.xml";
       } else {
        XML_URL = xmlPath;
       }
       myXMLURL = new URLRequest(XML_URL);
       myLoader = new URLLoader(myXMLURL);
       myLoader.addEventListener("complete", xmlLoaded);
      }
  private function xmlLoaded(event:Event):void {
       myXml = new XML();
       myXml = XML(myLoader.data);
       imageList = new XMLList();
       imageList = myXml.children();
       loadImage();
           //trace(imageList[no].child("path"));
  }
  private function loadImage():void {
       clearInterval(interval);
       if (loader!=null){
           loader.unloadAndStop();
           loader=null;
       }
       var imagePath:String = imageList[no].child("path");
       seconds = imageList[no].child("sec");
       var imageRequest:URLRequest = new URLRequest(imagePath);
       loader = new Loader();
       loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
       loader.load(imageRequest);
       //currentImage = loader;
       addChild(loader);
  }
  private function completeHandler(evt:Event):void {
       clearInterval(interval);
       if (currentImage != null) {
            removeChild(currentImage);
          }
       currentImage = loader;
       currentImage.x = (stage.stageWidth/2)-(currentImage.width/2);
       currentImage.y = (stage.stageHeight/2)-(currentImage.height/2);
         //var myTween:Tween = new Tween(currentImage, "alpha", Regular.easeOut, 0, 1, 0.5, true);
       //var myTween1:Tween = new Tween(currentImage, "x", Strong.easeOut, 0, 0, 1, true);
       var myTween:Tween = new Tween(currentImage, "x", Strong.easeOut, 768, 0, 1, true);
       myTween.addEventListener("motionFinish", TweenFinishedHandler);
  }
  private function TweenFinishedHandler(evt:Event):void {
       no = no < imageList.length()-1 ? no+1 : 0;
       trace(seconds);
       interval = setInterval(loadImage, seconds);
      
  }
}
}

Hope it solve

1 reply

relaxatraja
relaxatrajaCorrect answer
Inspiring
August 3, 2011

Make your XML like this:

<?xml version="1.0" encoding="iso-8859-1"?>

<root>

      <img>

            <path>images/img1a.swf</path>
        <sec>10000</sec>

      </img>

      <img>

            <path>images/img2a.swf</path>
        <sec>20000</sec>

      </img>

      <img>

            <path>images/img3a.swf</path>
        <sec>30000</sec>

      </img>

</root>

and your code should be:

package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.Graphics;
import flash.events.Event;
import flash.display.StageScaleMode;
import flash.utils.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;

public class loadClass extends Sprite {
  //declaring variables...
  private var myXml:XML;
  private var myXMLURL:URLRequest;
  private var myLoader:URLLoader;
  private var imageList:XMLList;
  private var loader:Loader;
  private var no:Number = 0;
  private var currentImage:Loader;
  private var interval:uint = 0;
  private var seconds:Number;

  //defining cunstructor...
  public function loadClass() {
       super();
       var g:Graphics = this.graphics;
       g.clear();
       g.beginFill(0x000000, 1);
       g.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
       g.endFill();
    LoadXml();
  }
  public function LoadXml(xmlPath:String = null):void {
       var XML_URL:String;
       if (xmlPath == null) {
        XML_URL = "data.xml";
       } else {
        XML_URL = xmlPath;
       }
       myXMLURL = new URLRequest(XML_URL);
       myLoader = new URLLoader(myXMLURL);
       myLoader.addEventListener("complete", xmlLoaded);
      }
  private function xmlLoaded(event:Event):void {
       myXml = new XML();
       myXml = XML(myLoader.data);
       imageList = new XMLList();
       imageList = myXml.children();
       loadImage();
           //trace(imageList[no].child("path"));
  }
  private function loadImage():void {
       clearInterval(interval);
       if (loader!=null){
           loader.unloadAndStop();
           loader=null;
       }
       var imagePath:String = imageList[no].child("path");
       seconds = imageList[no].child("sec");
       var imageRequest:URLRequest = new URLRequest(imagePath);
       loader = new Loader();
       loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
       loader.load(imageRequest);
       //currentImage = loader;
       addChild(loader);
  }
  private function completeHandler(evt:Event):void {
       clearInterval(interval);
       if (currentImage != null) {
            removeChild(currentImage);
          }
       currentImage = loader;
       currentImage.x = (stage.stageWidth/2)-(currentImage.width/2);
       currentImage.y = (stage.stageHeight/2)-(currentImage.height/2);
         //var myTween:Tween = new Tween(currentImage, "alpha", Regular.easeOut, 0, 1, 0.5, true);
       //var myTween1:Tween = new Tween(currentImage, "x", Strong.easeOut, 0, 0, 1, true);
       var myTween:Tween = new Tween(currentImage, "x", Strong.easeOut, 768, 0, 1, true);
       myTween.addEventListener("motionFinish", TweenFinishedHandler);
  }
  private function TweenFinishedHandler(evt:Event):void {
       no = no < imageList.length()-1 ? no+1 : 0;
       trace(seconds);
       interval = setInterval(loadImage, seconds);
      
  }
}
}

Hope it solve

nivaas82Author
Participant
August 3, 2011

Hi Raja ,

it's working fine.....thank you very much

relaxatraja
Inspiring
August 3, 2011

You'r Welcome