<h2>Votre Formation vidéo</h2><br/>
Votre formation est décomposée<br/>
en chapitres très clairs de 20 à 30 min. <h2>Des exemples SWF </h2><br/>
Chaque leçon est accompagnée<br/>
du code source avec le fla et les classes. <h2>Votre Suivi personnalisé</h2><br/>
Vous pouvez  me poser toutes<br/>
vos questions sous les cours vidéos.

Comment créer un préloader en AS3 ?

0 question

Écrit le 21 juillet par Matthieu
Publié dans le(s) sujet(s) ActionScript 3

Mots clés : , , , , , , , , ,

Le Kit du Développeur Flash

Cette fois, sur le site bit-101, j’ai trouvé une option de compilation très pratique.

La création d’un preloader en pure AS3 pour les applications flash imposantes (supérieure à 200Ko).

Il suffit pour cela de rajouter une seule ligne de code dans votre classe principale Main.

Très utile pour indiquer à vos visiteurs la progression du chargement de votre application et les inviter à patienter ;)

Dans le cours ci-dessous, apprenez à utiliser cette option de compilation du SDK Flex.

Préloader en AS3

Version démonstration

Ci-dessous, le résultat dans de l’application FLV Slicer.

Merci d'activer Javascript et Flash pour voir cette vidéo Flash.

Télécharger le code source flv slicer

Vous trouverez l’ensemble du code source commenté pour vous aider dans l’intégration de cette fonctionnalité dans vos applications flash.

TELECHARGEZ FLV Slicer

(Téléchargé 289 fois - Taille : 23.37 MB)

Ci-dessous, une partie de la classe Main modifiée.

package
{
 
	import flash.events.MouseEvent;
	import button.ButtonValider;
	import flash.net.FileReference;
	import org.bytearray.video.events.SlicedEvent;
	import org.bytearray.video.FLVSlice;
	import flash.media.Video;
	import flash.net.NetStream;
	import flash.net.NetConnection;
	import org.bytearray.video.FLVSlicer;
 
	import flash.display.Sprite;
	import flash.events.Event;
 
	import com.demonsters.debugger.MonsterDebugger;
 
	// permet de créer un preloader en AS3
	[Frame (factoryClass = "Preloader")]
	public class Main extends Sprite
	{
		// intègre la video flv directement dans le swf
		[Embed( source="beyond-black-mesa-trailer.flv", mimeType="application/octet-stream" )]
		private var flvBytes:Class;
 
		private var oNetConnect : NetConnection;
		private var oNetStream : NetStream;
		private var video : Video;
 
		private var oBtnCut : ButtonValider;
		private var oBtnPlayPause : ButtonValider;
		private var oBtnDownload : ButtonValider;
 
		private var merged : FLVSlice;
		private var slicer : FLVSlicer;
 
		/**
		 * Constructeur.
		 *
		 */
		public function Main()
		{
			// attend la fin de l'initialisation de la scène
			this.addEventListener(Event.ADDED_TO_STAGE, onReady, false, 0, true);
		}
 
		/**
		 * Démarrage de l'application.
		 *
		 */
		protected function onReady(event : Event) : void
		{
			this.removeEventListener(Event.ADDED_TO_STAGE, onReady);
 
			// Init De MonsterDebugger
            		MonsterDebugger.initialize(this);
            		MonsterDebugger.trace(this, "Start Application");
            	}
         }

La classe Preloader.as, celle qui affiche la progression du chargement de l’application.

package
{
 
	import flash.ui.ContextMenu;
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.utils.getDefinitionByName;
 
	public class Preloader extends MovieClip
	{
		// le nom de la classe qui lance l'application, généralement Main
		private var mainClassPath : String;
 
		/**
		 * Constructeur.
		 *
		 */
		public function Preloader()
		{
			stop();
			mainClassPath = "Main";
			configureStage();
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		public function onEnterFrame(event : Event) : void
		{
			graphics.clear();
			if (framesLoaded == totalFrames)
			{
				removeEventListener(Event.ENTER_FRAME, onEnterFrame);
				init();
			}
			else
			{
				// affiche une barre de progression
				var percent : Number = root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal;
				graphics.beginFill(0x006f77);
				graphics.drawRect(0, stage.stageHeight /2 - 10, stage.stageWidth * percent, 20);
				graphics.endFill();
			}
		}
 
		/**
		 * Lance l'application swf sur la 2ème frame.
		 *
		 */
		private function init() : void
		{
			nextFrame();// passe à la frame suivante (notre application)
 
			// instanciation de notre application
			var mainClass : Class = Class(getDefinitionByName(mainClassPath));
			if (mainClass)
			{
				var app : Object = new mainClass();
				addChild(app as DisplayObject);
			}
		}
 
		/**
		 * Personnalisation des options du stage.
		 *
		 */
		private function configureStage() : void
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
			var menu : ContextMenu = new ContextMenu();
			menu.hideBuiltInItems();
			contextMenu = menu;
		}
	}
}

Et vous, utilisez cette technique de la création d’une frame ?

Ou préférez-vous celle, plus classique, d’un swf léger qui preload votre application flash ?



Une question sur ce cours ?

Vous avez un point bloquant ?
Besoin d'explications supplémentaires ?
Ou vous voulez partager votre code source.
Votre adresse de messagerie ne sera pas publiée.
Les champs obligatoires sont indiqués avec *