Bonjour,
Etant débutant en AS3, je n'arrive pas à changer l'alpha d'un élément "loadé".
J'utilise la classe "flash.display.Loader"
Lorsque je fait par exemple :
"Mon_Loader.alpha = 0"
Rien ne se passe...
Merci d'avance pour vos réponses !
Bonjour,
Etant débutant en AS3, je n'arrive pas à changer l'alpha d'un élément "loadé".
J'utilise la classe "flash.display.Loader"
Lorsque je fait par exemple :
"Mon_Loader.alpha = 0"
Rien ne se passe...
Merci d'avance pour vos réponses !
Bonjour et merci pour ta proposition...
mais d'apres la doc, il s'agit d'un element en lecture seule:
content : DisplayObject
[lecture-seule] Contient l’objet d'affichage racine du fichier SWF ou du fichier d’image (JPG, PNG ou GIF) qui a été chargé à l’aide de la méthode load() ou loadBytes().
Donc je ne pense pas que se soit la solution...
Faut il-jouer ave des filtres ? ou des mask ?
Merci pour vos réponses !
DisplayObject est l'objet qui implémente l'alpha dans la hierarchie de l'affichage flash ^^°
Sinon j'ai fait un test les deux methode marche...
loader.alpha = 0;
loader.content.alpha = 0;
voici mon code de test :
Bref , je pense que ton probleme ne viens pas de là , on peut voir ton code ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,hihi); loader.load(new URLRequest('hihi.jpg')); addChild( loader ); function hihi(e:Event):void{ loader.content.alpha = 0.5; }
Bonjour,
Tout d'abord voici mon code simplifié afin de faciliter sa compréhention...
En gros, j'ai déporté le traitement des evenements du loader afin de pouvoir réutiliser mon loader (object power ;-)
La methode "Animer" est appellée via un bouton (non illustré ici...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 public class CLoader extends Loader { private var G_Request : URLRequest = null ; private var G_Loader_Traitment : CLoader_Traitement = null ; //---------------------------------------------------------------------------------------- public function CLoader() { super() ; this.G_Request = new URLRequest() ; } //---------------------------------------------------------------------------------------- public function Init( Url : String , X_Pos : Number , Y_Pos : Number , Height : Number , Width : Number , Name : String , Traitment : CLoader_Traitement ): void { this.G_Request.url = Url ; this.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, Traitment.ioErrorHandle ); this.contentLoaderInfo.addEventListener( Event.COMPLETE , Traitment.completeHandler ); this.contentLoaderInfo.addEventListener( HTTPStatusEvent.HTTP_STATUS , Traitment.httpStatusHandler ); this.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS , Traitment.progressHandler ); this.contentLoaderInfo.addEventListener( MouseEvent.CLICK , Traitment.clickHandler ); this.contentLoaderInfo.addEventListener( Event.INIT , Traitment.initHandler ); this.contentLoaderInfo.addEventListener( Event.OPEN , Traitment.openHandler ); this.contentLoaderInfo.addEventListener( Event.UNLOAD , Traitment.unLoadHandler ); this.name = Name ; this.G_Loader_Traitment = Traitment ; // will be updated after complete loaded this.x = X_Pos ; this.y = Y_Pos ; } } } //############################################################################################### package { import CLoader_Traitement ; public class CLoader_Traitement_Corps extends CLoader_Traitement { import flash.events.* ; import flash.display.Sprite ; import CLoader ; //---------------------------------------------------------------------------------------- public function CLoader_Traitement_Corps() { super() ; } //---------------------------------------------------------------------------------------- override public function Init( My_Loader : CLoader , Name : String , autres_args : Array ) : void { super.Init( My_Loader , Name , autres_args ); this.G_Cible = autres_args[ 0 ] ; } //---------------------------------------------------------------------------------------- override public function completeHandler( e:Event ) : void { super.completeHandler( e ) ; trace( "--- CLoader_Traitement_Corps : call of 'addChildAt' method ---" ); // add after complete load this.G_Cible.addChild( super.Get_Loader() ); } } } //############################################################################################### public class CCorps extends Sprite { private var G_Loader : CLoader = null ; private var G_Loader_Traitment : CLoader_Traitement_Corps = null ; //-------------------------------------------------------------------------------------------------- public function CCorps() : void { this.G_Loader = new CLoader ; this.G_Loader_Traitment = new CLoader_Traitement_Corps ; } //-------------------------------------------------------------------------------------------------- public function Init():void { this.G_Loader.Init( "test.swf" , 100 , 100 , 100 , 100 , C_Loader_Name , this.G_Loader_Traitment ); this.G_Loader_Traitment.Init( this.G_Loader , C_Loader_Traitment_Name , [ this.G_Rectangle_Arroni_Degrade ] ); this.G_Loader.Load() ; } //-------------------------------------------------------------------------------------------------- public function Animer( ElementAfficher : String ) : void { this.G_Loader.content.alpha = 0.2 ; } } }
j'ai vérifié que la méthode est bien appellée et que c'est la bon loader qui est concerné...
J'avoue ne pas avoir de pistes...
Merci de votre aide![]()
Je ne cherche pas a loader une image, mais un SWF !
Merci pour vos participations...
Tu t'entete ma parole! Ca change rien que tu charge une image ou un swf, mon code ci-dessus marche aussi avec un swf vu que c'est hérité de DisplayObject. là est pas le probleme.
Sinon j'ai lu ton code , plusieurs remarque :
- tu utilises trop "this" quand le contexte n'est pas ambigue et sa rend le code lourd à lire.
- Les noms de class sont pas très explicite : GLoader , CLoader , etc.. Surement tu t'y repere mais quand on débarque sur ton code c'est la misère.
- Pourquoi ne pas avoir créer juste une class qui géré le traitement d'un loader via différente fonction static ( ça a l'air d'être le but ici ) ? J'ai peut être pas saisi le but réel de tes 3 class mais vu comme ça t'a l'air de t'être compliquer la tête..
A part ça j'ai pas trouvé d'ou venait ton problème d'autant que tu précises que tu as vérifié l'appel de la méthode "animer" sur la bonne cible ( après le chargement je suppose enfin sinon t'aurais une exception )... Pour vérifier tu peux quand même lancé la fonction animer après la fin du chargement ( ça peut toujours servir à isolé le problème petit à petit ... )
Mon conseil serait de simplifier ton code au niveau de ta structure , 3 class me parait trop pour un chargement de swf avec traitement. D'autant que t'a pas l'air très familiariser avec l'as3 qui est un langage souple, intuitif et évite ce genre de spaghetti!
![]()
???
Code : Sélectionner tout - Visualiser dans une fenêtre à part public class CLoader_Traitement_Corps extends CLoader_Traitement
ensuite ajoute ton "content" a un DisplayObject aprés l'evenement "COMPLETE" et l'alpha fonctionnera
Partager