PDA

View Full Version : Flash XML Thumbnails loading so slowly!! Please help



ryanl
November 26th, 2009, 05:31 AM
Hi,

I have been having a problem with slow thumbnail loading on my website. I am not sure why because I have continually reduced the thumbnail sizes and they are very small. The thumbnails are pointed to via an XML file. Any help would be immensely appreciated!!!

Here is my code:



stop();

import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
import caurina.transitions.*;

var container:Sprite = new Sprite();
container.x = 0;
container.y = 135;
addChild(container);

var scene:Scene3D = new MovieScene3D(container);
var cam:Camera3D = new Camera3D();
cam.zoom = 6.5;
cam.y = 155;
tn_title.text = "";
tn_desc.text = "";
tn_url.text = "";

var radius:Number = 1200;
var anglePer:Number;
var angleX:Number = 0;
var camera_distance:Number = radius * 2;
var dest:Number = 0;
var current:Number = 0;

var filename_list = new Array();
var url_list = new Array();
var url_target_list:Array = new Array();
var title_list = new Array();
var description_list = new Array();
var folder:String = "thumbnails/";
var folder2:String = "gallery/";

var i:Number;
var total:Number;
var flashmo_xml:XML = new XML();
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("image_list.xml"));
loader.addEventListener(Event.COMPLETE, create_thumbnail);


loader_mc.stop();
loader_mc.visible=false;

function create_thumbnail(e:Event):void
{
flashmo_xml = XML(e.target.data);
total = flashmo_xml.thumbnail.length();
anglePer = Math.PI * 2 / total;
for( i = 0; i < total; i++ )
{
url_list.push( flashmo_xml.thumbnail[i].@url.toString() );
url_target_list.push( flashmo_xml.thumbnail[i].@target.toString() );
title_list.push( flashmo_xml.thumbnail[i].@title.toString() );
description_list.push( flashmo_xml.thumbnail[i].@description.toString() );

var bfm:BitmapFileMaterial = new BitmapFileMaterial(
folder + flashmo_xml.thumbnail[i].@filename.toString());
bfm.oneSide = false;
bfm.smooth = true;
var p:Plane = new Plane(bfm, 140, 105, 2, 2);
scene.addChild(p);

if (i==0)
loadImage(folder2 + flashmo_xml.thumbnail[current].@filename.toString());

p.x = Math.cos(i * anglePer) * radius;
p.z = Math.sin(i * anglePer) * radius;
p.rotationY = (-i*anglePer) * (180/Math.PI) + 270;
}

setCurrent(current);
//setChildIndex(go,numChildren - 1);
}

left.addEventListener(MouseEvent.CLICK, moveLeft);
right.addEventListener(MouseEvent.CLICK, moveRight);
left_big.addEventListener(MouseEvent.CLICK, moveLeft);
right_big.addEventListener(MouseEvent.CLICK, moveRight);
//go.addEventListener(MouseEvent.CLICK, loadHandler);
this.addEventListener(Event.ENTER_FRAME, render);

function moveLeft(e:Event):void
{
dest--; current--;
if( current < 0 ) current = total - 1;
Tweener.addTween(this, {angleX:dest*anglePer, time:0.8, transition:"easeInOutQuart"});
setCurrent(current);
loadImage(folder2 + flashmo_xml.thumbnail[current].@filename.toString());
}
function moveRight(e:Event):void
{
dest++; current++;
if( current >= total ) current = 0;
Tweener.addTween(this, {angleX:dest*anglePer, time:0.8, transition:"easeInOutQuart"});
setCurrent(current);
loadImage(folder2 + flashmo_xml.thumbnail[current].@filename.toString());
}
function setCurrent(c:Number):void
{
tn_title.text = title_list[c];
tn_desc.text = description_list[c];
tn_url.text = url_list[c];
}

/*function loadHandler(e:Event):void
{
loadImage(folder2 + flashmo_xml.thumbnail[current].@filename.toString());
}*/


var imageLoader:Loader;

function loadImage(url:String):void {

// Set properties on my Loader object
loader_mc.play();
loader_mc.visible=true;

imageLoader = new Loader();
imageLoader.load(new URLRequest(url));
imageLoader.contentLoaderInfo.addEventListener(Pro gressEvent.PROGRESS, imageLoading);
imageLoader.contentLoaderInfo.addEventListener(Eve nt.COMPLETE, imageLoaded);

}

function imageLoaded(e:Event):void {

// Load Image
if (imageArea_mc.numChildren!=0)
imageArea_mc.removeChildAt(0);

loader_mc.stop();
loader_mc.visible=false;

imageArea_mc.addChildAt(imageLoader,0);
imageArea_mc.x = 0 - (imageArea_mc.width/2);
//left_big.x = 0-imageArea_mc.width/2-left_big.width;
//right_big.x = 0+imageArea_mc.width/2+right_big.width;
}

function imageLoading(e:ProgressEvent):void {

// Use it to get current download progress
// Hint: You could tie the values to a preloader :)

}




function render(e:Event):void
{
cam.x = Math.cos(angleX) * camera_distance;
cam.z = Math.sin(angleX) * camera_distance;
scene.renderCamera(cam);
}


Thanks,

Ryan