Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 13h21   #1
Invité de passage
 
Aurélie Mydlarz
Inscription : septembre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : Aurélie Mydlarz

Informations forums :
Inscription : septembre 2010
Messages : 10
Points : 1
Points : 1
Par défaut Problème Preload AS3

bonjour,

j'utilise un code en AS3 qui fonctionnait très bien avant, pour précharger mon site, et qui ne fonctionne plus...

Sauriez-vous m'éclairer ?
gracias !


sur le frame 1, j'ai placé le code du preload, le site commence au frame 5 (ou "accueil")...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
stop();
 
this.loaderInfo.addEventListener(ProgressEvent.PRO GRESS, chargementEnCours);
function chargementEnCours(evt:ProgressEvent) {
//trace("chargé : "+evt.currentTarget.bytesLoaded + "total : " +evt.currentTarget.bytesTotal);
var pourcentage=Math.ceil(evt.currentTarget.bytesLoade d/evt.currentTarget.bytesTotal*100);//ceil : afficher que les valeurs avant la virgule.
trace(pourcentage);
textepreload_mc.charge_txt.text=pourcentage+"%";
//'textepreload_mc' est le nom de l'occurrence du movie clip du texte preload dans la scène principale
//'charge_txt' est le nom de l'occurrence dans le symbole du texte preload
barre_mc.scaleX=pourcentage/100; //on divise par 100 car le scaleX va de 0 à 1;
// eviter width qui est en pixels alors que scale est en %
}
 
 
this.loaderInfo.addEventListener(Event.COMPLETE, finChargement);
function finChargement(evt:Event) {
trace("fin");
gotoAndPlay('accueil');
}
siu.territories est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 14h10   #2
Invité de passage
 
Aurélie Mydlarz
Inscription : septembre 2010
Messages : 10
Détails du profil
Informations personnelles :
Nom : Aurélie Mydlarz

Informations forums :
Inscription : septembre 2010
Messages : 10
Points : 1
Points : 1
Par défaut solution

bon entre temps j'ai trouvé un code qui fonctionne sur ce site, et très compréhensible :

http://www.riacodes.com/flash/basic-flash-preloader/

l'idée est donc d'avoir un fichier preload.swf qui vient charger le fichier comprenant le site content.swf
siu.territories est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 15h10   #3
Candidat au titre de Membre du Club
 
fabien huet
Inscription : juillet 2010
Messages : 6
Détails du profil
Informations personnelles :
Nom : fabien huet

Informations forums :
Inscription : juillet 2010
Messages : 6
Points : 12
Points : 12
Ce n'est pas forcément une bonne idée d'avoir un swf qui en charge un autre. Tu aura des soucis d'accès à différentes propriété du stage par exemple. La bonne pratique est la suivante :

Une classe preloader qui prototype ton appli avec à peu près ça dedans :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.getDefinitionByName;
	import flash.ui.*;
	import flash.net.*;
 
	public class Preloader extends MovieClip 
	{
		public function Preloader() 
		{
			if (stage)
			{
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
			}
			addEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
		}
 
		private function ioError(e:IOErrorEvent):void {trace(e.text);}
		private function progress(e:ProgressEvent):void {/* fait un truc quand le loader est updaté */}
 
		private function checkFrame(e:Event):void 
		{
			if (currentFrame == totalFrames) 
			{
				stop();
				loadingFinished();
			}
		}
 
		private function loadingFinished():void 
		{
			removeEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);
 
			/* fait des trucs quand le loader a finit */
 
			var mainClass:Class = getDefinitionByName("Main") as Class;
			addChild(new mainClass() as DisplayObject);
		}
	}
}
Puis une classe Main qui est ton site.

Ça joue sur un des plus vieux truc de flash qui est le loading par frame. Initialement, quand tu avait une anim faite sous flash avec 200 frames, il les chargeait une par une au lieu de toutes à la fois. Tu pouvais donc commencer à jouer ton anim avant de l'avoir chargée en entier. C'est exactement ce que ça fait là.
fabien_huet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h32.


 
 
 
 
Partenaires

Hébergement Web