Flash AS3 - Chargement de fichiers SWF et d'images

De EduTech Wiki
Aller à la navigation Aller à la recherche

Cet article est une ébauche à compléter. Une ébauche est une entrée ayant un contenu (très) maigre et qui a donc besoin d'un auteur.

Introduction

En ActionScript 3.0, les fichiers SWF ainsi que les images sont chargés avec la classe Loader. Pour charger un fichier SWF externe, vous devez définir quatre étapes en ActionScript :

  1. Créer un objet URLRequest avec l'adresse URL du fichier.
  2. Créer un objet Loader.
  3. Appeler la méthode load() de l'objet Loader en lui passant en paramètre l'occurrence de l'objet URLRequest.
  4. Appeler la méthode addChild() pour un conteneur d'objet d'affichage. Autrement dit, vous devez ajouter l'instance crée de l'objet chargé à un objet de type "conteneur" (DisplayObject). Typiquement, on ajoute un élément à la timeline principale.

Charger une image

Le principe

Code exemple simple

var request:URLRequest = new URLRequest("image.jpg"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);

Si vous voulez repositionner l'image et/ou changer ses dimensions: flash-cs5-load-external-pictures-2.fla flash-cs5-load-external-pictures-2.swf

// Load the picture
var request:URLRequest = new URLRequest("pics/mad1.jpg"); 
var loader:Loader = new Loader() 
loader.load(request); 

// Manage the event that picture is loaded
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, pict_is_loaded)

// position, resize and then add to the scene
function pict_is_loaded (e:Event) {
	var pict = loader.content;
	pict.x = 100;
	pict.y = 100;
	pict.width = 224;
	pict.height = 168;
 	addChild(pict);
	// trace (loader.content);
}

Charger plusieurs images

A mon avis, il est difficile de charger des images en parallèle, donc je le charge une après les autres. Une fois une image chargé on lance le chargement du suivant etc. C'est le boulot de la fonction "pict_is_loaded".

// adapt the next two lines for your needs
var picture_name_list = ["mad1","mad2","mad3","mad4","mad5","mad6","mad7","mad8","mad9"];
var directory = "pics";

// global variables
var picture_list = new Array();
var total_pictures = picture_name_list.length;
var loader:Loader = new Loader();
var pictures_loaded = 0;

// call the load_image function with the first picture
load_image(picture_name_list[0]);

// This function will load a picture (well just start loading it)
function load_image(img_name)
{
	var request:URLRequest = new URLRequest(directory + "/" + img_name + ".jpg");
	loader.load(request);
}

// Manage the event that one picture is loaded
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, pict_is_loaded);

// position, resize and then add to the list of pictures;
function pict_is_loaded(e:Event)
{
	var pict = e.target.content;
	// insert the picture into an array for display once we loaded all
	picture_list.push(pict);
	// increment picture count;
	pictures_loaded++;
	// load pictures one by one
	if (pictures_loaded < total_pictures)
	{
		load_image(picture_name_list [pictures_loaded]);
	}
	else
	{
		// means we are done loading and can call the rendering function
		render_pictures();
	}
}

function render_pictures()
{
	var layer:int = -1;
	var pict:Bitmap;
	for (var i:int=0; i < total_pictures; i++)
	{
		// get a picture from the list and resize it
		pict = picture_list[i];
		pict.width = 224;
		pict.height = 168;
		// this is code to display pictures in columns of 3
		var posi = i % 3;
		if (posi == 0)
		{
			layer = layer + 1;
		}
		pict.x = posi * pict.width;
		pict.y = layer * pict.height;
		//trace(pict + "x=" + pict.x + ",y=" + pict.y);
		// positioned pictures are then added to the stage
		addChild (pict);

	}
}

Charger un swf

Code exemple

var request:URLRequest = new URLRequest("externalSwf.swf"); 
var loader:Loader = new Loader() 
loader.load(request); 
addChild(loader);

Remerciement et modification du copyright