cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 2010
-
13 déc. 2008 à 10:50
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 2010
-
6 janv. 2009 à 17:43
Bonjour à tous,
après de multiple effort, j'ai presque réussi un loader en as3 :
Voici le code :
// Mise en place du sprite qui doit suivre le pourcentage de chargement
var rectangle:Sprite = new Sprite();
// utilisation de l'api de dessin
rectangle.graphics.beginFill ( 0x55AAFF, 1);
rectangle.graphics.drawRect ( 30, 30, 1, 20 );
addChild ( rectangle );
// création du chargeur
var chargeur:Loader = new Loader();
// référence à l'objet LoaderInfo
var cli:LoaderInfo = chargeur.contentLoaderInfo;
// écoute des événements liés au chargement
cli.addEventListener ( Event.OPEN, debutChargement );
cli.addEventListener ( ProgressEvent.PROGRESS, chargement );
cli.addEventListener ( Event.COMPLETE, chargementTermine );
cli.addEventListener ( IOErrorEvent.IO_ERROR, echecChargement );
// url à atteindre
var maRequete:URLRequest = new URLRequest ("anim/anim.swf");
// chargement du contenu
chargeur.load( maRequete );
// ajout à la liste d'affichage
addChild ( chargeur );
//définition d'un clip dans lequel l'animation chargé sera intégrée
var scenario:MovieClip;
function debutChargement ( pEvt:Event ):void {
trace( pEvt );
}
function chargement ( pEvt:ProgressEvent ):void {
var pourcent:Number=(pEvt.bytesLoaded/pEvt.bytesTotal)*100;
rectangle.width = pourcent;
trace("pourcentage de chargement = "+pourcent);
}
Q1 : Le problème, c'est que mon abruti de rectangle, en plus grandir avance ! Et vraiment, je ne comprends pas pourquoi.
Q2 : Y'a pas plus simple ???
Q3 : j'ai essayé d'appliquer le code à l'animation elle même, mais je me fait envoyer boulé si je mets root ou quoi que soit d'autre qui essaie de faire appel à l'animation elle-même dans le loader. Visiblement, le loader ne peut pas se porter lui-même. Comment faire ???
Vous remerciant pour votre aide et vos conseils avisés.
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 20102 13 déc. 2008 à 17:20
Rebonjour,
prenons les choses de façon plus simple. J'essaie de construire un loadre, non pas d'une animation loadé mais de l'animation elle-même :
// Mise en place du sprite qui doit suivre le pourcentage de chargement
var rectangle:Sprite = new Sprite();
rectangle.graphics.beginFill ( 0x55AAFF, 1);
rectangle.graphics.drawRect ( 30, 30, 1, 20 );
function debutChargement ( pEvt:Event ):void {
// arrete la tête de lecture en attendant le chargement
stop();
}
function chargement ( pEvt:ProgressEvent ):void {
var pourcent:Number=(pEvt.bytesLoaded/pEvt.bytesTotal)*100;
trace("pourcentage de chargement = "+pourcent);
rectangle.scaleX = pourcent;
}
function chargementTermine ( pEvt:Event ):void {
trace("!!!!!!!!!!!! on aura tout vu !!!!!!!!!!!!!!");
gotoAndStop(2);
}
L'animation s'arrête bien en attendant d'être complètement chargé (j'ai mis une grosse photo sur l'image deux) et passe bien à l'image deux une fois chargée.
Mais mon rectangle continue à avancé !!!!
Ça pourrait faire un effet sympa... mais c'est pas le but recherché.
Donc, j'espère que quelqu'un pourra me dire ce qu'il en est. Merci pour votre attention.
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 20102 13 déc. 2008 à 17:29
Alors, juste pour dire.Si je mets un clip sur la scène et que je mets rectangle.width pourcent; à la place de rectangle.scaleX pourcent;... çà marche !
Mais quand même... j'aimerais bien comprendre pourquoi mon rectangle avance si je le fais apparaître par le code !
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 20102 15 déc. 2008 à 07:26
Salut,
merci de participer.
Non, ce n'est pas le problème puisque le problème est pendant le chargement... le rectangle avance durant le chargement de l'animation.
par contre je prends en compte ta remarque parce qu'il me semble que l'on doit effectivement supprimer les écouteurs quand ils n'ont plus de rôle à jouer.
Si tu as une autre idée, n'hésite pas.
Tout vient à qui sait attendre
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 20102 15 déc. 2008 à 10:50
Naon... ça marche pas.
Tu as essayé ce code avec une seconde image clé avec une image un peu lourde dessus pour avoir du temps de chargement ???
// Mise en place du sprite qui doit suivre le pourcentage de chargement
var rectangle:Sprite = new Sprite();
rectangle.graphics.beginFill ( 0x55AAFF, 1);
rectangle.graphics.drawRect ( 30, 30, 1, 20 );
function debutChargement ( pEvt:Event ):void {
// arrete la tête de lecture en attendant le chargement
stop();
}
function chargement ( pEvt:ProgressEvent ):void {
var pourcent:Number=(pEvt.bytesLoaded/pEvt.bytesTotal)*100;
trace("pourcentage de chargement = "+pourcent);
rectangle.scaleX = pourcent;
}
function chargementTermine ( pEvt:Event ):void {
trace("!!!!!!!!!!!! on aura tout vu !!!!!!!!!!!!!!");
gotoAndStop(2);
}
Tout vient à qui sait attendre
Kenshinhim
Messages postés3Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention26 mars 2013 6 janv. 2009 à 17:24
Je pense que ton problème viens de la manière d'utiliser la propriété scaleX.
En effet la propriété ScaleX altère l'échelle horizontale de ton rectangle en utilisant la valeur donner comme multiplicateur (soit de 0 à 100 dans le cas présent).
Donc si ça se trouve cette altération de l'échelle horizontale de ton rectangle joue sur son positionnement.
Tu devrais peut être essayer la méthode inverse :
rectangle.graphics.drawRect ( 30, 30, 100, 20 );
...
function chargement ( pEvt:ProgressEvent ):void {
var charger:Number=(pEvt.bytesLoaded/pEvt.bytesTotal);
var pourcent = charger*100;
trace("pourcentage de chargement = "+pourcent);
rectangle.scaleX = charger;
}
...
Ton rectangle va donc être créer avec sa forme définitive qu'il va récupérer progressivement au fil du chargement de l'animation (les valeurs que prendra ScaleX variant de 0 à 1).
cs_inaden
Messages postés618Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 août 20102 6 janv. 2009 à 17:43
Bonjour,
et merci pour ta réponse. Je l'ai pas dit mais j'ai réussi en posant un clip sur la scène.
Par contre, je viens d'essayer ton idée et c'est beaucoup mieux, le rectangle ne file pas à tout allure de part et d'autre de la scène, mais il ne reste pas en place et avance très doucement tout en grandissant...
Néanmoins, beaucoup de progrès. Je prends en note l'idée de partir d'un rectangle ayant déjà les bonnes dimensions, j'ai l'impression que le principe est plus correct.
Merci pour ton aide... à charge de revanche si un jour je peux... et bonne année !