Skip to main content
Inspiring
August 20, 2011
Answered

Displaying random images

  • August 20, 2011
  • 1 reply
  • 687 views

I want to display let's say 3 random images out out of 6 images. Every time I click a button, I should be having a display of 3 unique random images.

All I know, and understand is the following. My XML file has 6 images. I know that I need the shuffle function to get to the desired result, but I don't know How.

The script below, will only trace all of them or one of them, that's it. It is the math part that I don't comprehend much. I thought I'll give it another shot, before I decide taking up another hobby,................ like playing soccer with my crazy rottweiller.

Sam

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("jamilou.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);
trace(myXML.IMAGE.*);
}

This topic has been closed for replies.
Correct answer kglad

you didn't position your loaders and you didn't add the shuffle() function correctly:


var imageA:Array = [];

var loader1:Loader=new Loader();

addChild(loader1);

var loader2:Loader=new Loader();

addChild(loader2);

var loader3:Loader=new Loader();

addChild(loader3);
loader2.x=200;

loader3.x=400;

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("jamilou.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);

for (var i:int=0; i<myXML.IMAGE.length(); i++)
{

  imageA.push(new URLRequest(myXML.IMAGE));

}

yourbutton.enabled = true;

}

yourbutton.addEventListener(MouseEvent.CLICK,clickF);

yourbutton.enabled = false;

function clickF(e:MouseEvent):void
{

shuffle(imageA);

  loader1.load(imageA[0]);

  loader2.load(imageA[1]);

  loader3.load(imageA[2]);


}

function shuffle(imageA:Array)
{
  var p:int;
  var t:*;
  var ivar:int;
  for (ivar = imageA.length-1; ivar>=0; ivar--)
  {
   p=Math.floor((ivar+1)*Math.random());
   t = imageA[ivar];
   imageA[ivar] = imageA

;
   imageA

= t;
  }

}

1 reply

kglad
Community Expert
Community Expert
August 20, 2011

:

var imageA:Array = [];

var loader1:Loader=new Loader();

addChild(loader1);

var loader2:Loader=new Loader();

addChild(loader2):

var loader3:Loader=new Loader();

addChild(loader3);
// position your loaders

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("jamilou.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);

for(var i:int=0;i<myXML.IMAGE.length();i++){  // not sure myXML.IMAGE is correct

imageA.push(new URLRequest(myXML.IMAGE));

}

yourbutton.enabled=true;

}

yourbutton.addEventListener(MouseEvent.CLICK,clickF);

yourbutton.enabled=false;

function clickF(e:MouseEvent):void{

shuffle(imageA);  // make sure shuffle() is in your code

loader1.load(imageA[0]);

loader2.load(imageA[1]);

loader3.load(imageA[2]);

}

SamsimmsAuthor
Inspiring
August 21, 2011

Hi

Thank you for taking care of my problem. I did try the script, adding the function shuffle, altought I don't fully comprehend it( I just copied it with some changes). I did get some result. When I click on my button, only one random card( instead of three) is displayed. It must be the shuffle function.

<?xml version="1.0" encoding="utf-8"?>
<GALLERY>
<IMAGE TITLE="school">1.jpg</IMAGE>
<IMAGE TITLE="garden">2.jpg</IMAGE>
<IMAGE TITLE="shop">3.jpg</IMAGE>
<IMAGE TITLE="school">4.jpg</IMAGE>
<IMAGE TITLE="garden">5.jpg</IMAGE>
<IMAGE TITLE="shop">6.jpg</IMAGE>

</GALLERY>

var imageA:Array = [];

var loader1:Loader=new Loader();

addChild(loader1);

var loader2:Loader=new Loader();

addChild(loader2);

var loader3:Loader=new Loader();

addChild(loader3);
// position your loaders

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("jamilou.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);

for (var i:int=0; i<myXML.IMAGE.length(); i++)
{// not sure myXML.IMAGE is correct

  imageA.push(new URLRequest(myXML.IMAGE));

}

yourbutton.enabled = true;

}

yourbutton.addEventListener(MouseEvent.CLICK,clickF);

yourbutton.enabled = false;

function clickF(e:MouseEvent):void
{

shuffle(imageA);
// make sure shuffle() is in your code
function shuffle(imageA:Array)
{
  var p:int;
  var t:*;
  var ivar:int;
  for (ivar = imageA.length-1; ivar>=0; ivar--)
  {
   p=Math.floor((ivar+1)*Math.random());
   t = imageA[ivar];
   imageA[ivar] = imageA

;
   imageA

= t;
  }

  loader1.load(imageA[0]);

  loader2.load(imageA[1]);

  loader3.load(imageA[2]);

}
}

kglad
Community Expert
kgladCommunity ExpertCorrect answer
Community Expert
August 21, 2011

you didn't position your loaders and you didn't add the shuffle() function correctly:


var imageA:Array = [];

var loader1:Loader=new Loader();

addChild(loader1);

var loader2:Loader=new Loader();

addChild(loader2);

var loader3:Loader=new Loader();

addChild(loader3);
loader2.x=200;

loader3.x=400;

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("jamilou.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);

for (var i:int=0; i<myXML.IMAGE.length(); i++)
{

  imageA.push(new URLRequest(myXML.IMAGE));

}

yourbutton.enabled = true;

}

yourbutton.addEventListener(MouseEvent.CLICK,clickF);

yourbutton.enabled = false;

function clickF(e:MouseEvent):void
{

shuffle(imageA);

  loader1.load(imageA[0]);

  loader2.load(imageA[1]);

  loader3.load(imageA[2]);


}

function shuffle(imageA:Array)
{
  var p:int;
  var t:*;
  var ivar:int;
  for (ivar = imageA.length-1; ivar>=0; ivar--)
  {
   p=Math.floor((ivar+1)*Math.random());
   t = imageA[ivar];
   imageA[ivar] = imageA

;
   imageA

= t;
  }

}