<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 ?

Commentaires fermés sur Comment créer un préloader en AS3 ?

É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.

https://www.actionscript-facile.com/wp-content/uploads/2011/07/FLV-Slicer-preloader.swf

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.

Télécharger “FLV Slicer” ex-flv-slicer.zip – Téléchargé 409 fois – 23 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 ?



Développez des Jeux et Applications Flash avec la Formation AS3 Facile !

Recevez Gratuitement Des Cours en Vidéos, des codes source et des livrets de formation.
Et en bonus gratuit : Le Framework AS3 Facile ! 


massa luctus sit nec accumsan facilisis