source: Collectif_Otra/global.reflet-web.net/lib/reflet_swf/src/display/MyPopUpSon.as @ 2803

Last change on this file since 2803 was 2803, checked in by kent1, 10 years ago

Reflet presque up 2 date (reste les externals)

  • Property svn:executable set to *
File size: 32.6 KB
Line 
1/*
2 MyPopup gère tous les popups de contributions. Audio et texte.
3 
4 Erreurs connus:
5 - embed des labels pour langues non-latine
6*/
7package display
8{
9        import asgard.text.CoreTextField
10    import asgard.display.Background;   
11        import com.ths.server.red5.ConnectTo;
12        import com.ths.ui.LineTracer;
13        import flash.display.MovieClip;
14        import flash.events.MouseEvent;
15        import flash.media.Microphone;
16        import flash.net.URLLoader;
17        import flash.net.URLRequest;
18        import flash.net.URLVariables;
19        import flash.net.sendToURL
20        import flash.ui.Mouse;
21        import pegas.transitions.Timer;
22        import system.events.ActionEvent;
23               
24        import pegas.draw.Direction
25        import pegas.draw.Pen;
26    import pegas.draw.LinePen;
27    import pegas.draw.FillStyle;
28    import pegas.draw.LineStyle;
29        import pegas.draw.RectanglePen;
30    import pegas.display.DisplayObjects;
31        import pegas.draw.Align
32       
33        import flash.display.Sprite;
34    import flash.events.Event;
35        import flash.geom.Rectangle;
36        import flash.display.Shape;
37        import flash.text.TextFieldAutoSize;
38        import flash.display.Bitmap; 
39        import flash.text.TextFormat;
40        import flash.events.KeyboardEvent;
41        import flash.text.StyleSheet;
42        import flash.text.Font;
43       
44        import andromeda.i18n.Localization;
45        import andromeda.events.LocalizationEvent;
46       
47        import myLib.events.ButtonEvent;
48        import myLib.data.DataProvider
49        import myLib.styles.TextStyle;
50    import myLib.controls.ComboBox
51        import myLib.controls.TextArea
52        import myLib.controls.Button
53        import myLib.controls.RadioButton
54       
55        import com.ths.utils.sharedObject.Cookies
56        import com.ths.utils.lang.LangConversion
57        import com.ths.utils.data.Censure
58       
59        import pegas.transitions.TweenLite
60        import pegas.transitions.easing.*
61       
62        import asgard.media.MicrophoneExpert
63        import asgard.media.*
64       
65        import flash.net.*;
66        import flash.events.*;
67       
68        import pegas.draw.FillGradientStyle
69        import flash.filters.DropShadowFilter
70       
71        import com.ths.utils.lang.LangConversion
72       
73       
74        import flash.net.FileReference
75        import flash.net.FileFilter
76        import com.ths.server.red5.ConnectTo
77        import com.ths.server.red5.NetStreamMicrophone
78       
79        import system.formatters.DateFormatter;
80        import flash.events.TimerEvent;
81        import pegas.transitions.Timer;
82        import lunas.display.bar.SimpleProgressbar
83        import asgard.media.MicrophoneExpert
84        import asgard.media.MicrophoneStatus
85        import asgard.media.MicrophoneVO
86       
87       
88        import myLib.controls.Slider
89       
90    /**
91     * Vue d'une popUp de base son.
92     */
93    public class MyPopUpSon extends Background
94    {
95               
96                private var fond: Background = new Background()
97                private var txt_sature: CoreTextField = new CoreTextField()
98                private var connecteur:ConnectTo ;
99                private var stream:NetStreamMicrophone ;
100                private var micro:Microphone ; 
101                private var area_sature:Background = new Background() ;
102               
103                private var conteneur_btn : Sprite = new Sprite ()
104                private var conteneur_saturation : Sprite = new Sprite ()
105                private var stop_btn:Button
106                private var play_btn:Button
107                private var effacer_btn:Button
108                private var record_btn:Button
109                private var envoyer_btn:Button
110               
111                private var fichier :String;
112                public var domaine:String;
113                public var max_son : int
114               
115                public var timeline: LineTracer;
116                public var timelineFD: LineTracer;
117                public var timer: Timer
118                private var progress : SimpleProgressbar = new SimpleProgressbar
119                private var vol_detected : SimpleProgressbar = new SimpleProgressbar
120                private var duration : Number 
121                private var slider : Slider 
122                private var i : int = new int (0);
123                private var vol:int = new int(0)
124                public var saturation_declenchement:int
125                public var saturation:int 
126                private var btn_valid_saturation:Button = new Button()
127               
128                private var etat : String;
129                private var connected:Boolean = false 
130               
131                public function MyPopUpSon()
132                {
133            // super();
134                       
135                        this.alpha=0
136                }
137       
138               
139        /**
140         * Cette méthode est invoqué lorsque l'instance est ajouté à la liste d'affichage.
141         */
142        override protected function addedToStage(e:Event = null):void 
143        {
144                        logger.log( this + " " + e ) ;
145                       
146                        DisplayObjects.align( this , new Rectangle( 0, 0 , this.stage.stageWidth, this.stage.stageHeight) , Align.CENTER);
147                        this.x = -1000
148                        popup();
149                       
150                       
151        }
152               
153                public function show(e:Event):void
154                {                       
155                        if (e.type != "masque")
156                        {
157                                if (toggle)
158                                {       
159                                       
160                                        // DISPARAIT
161                                        alphaTweener = new TweenLite (this, "alpha",null, this.alpha, 0, tweenDuration, true) ; 
162                                        alphaTweener.start()
163                                        toggle = false 
164                                       
165                                        this.x = -1000
166                                       
167                                        if (connected)
168                                        {
169                                                connecteur.removeEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);
170                                                connecteur.close()
171                                                stream.close()
172                                                effacer_btn.enabled = false 
173                                                envoyer_btn.enabled = false 
174                                               
175                                        }
176                                        dispatchEvent(new Event("volumeON"));   
177                                        //if (etat == "stop") envoyer_son(e)                                   
178                                        progress.position = 0
179                                }
180                                else 
181                                {
182                                       
183                                       
184                                        // APPARAIT
185                                        dispatchEvent(new Event("volumeOFF")); 
186                                        progress.position = 0
187                                        DisplayObjects.align( this , new Rectangle( 0, 0 , this.stage.stageWidth, this.stage.stageHeight) , Align.CENTER);
188                                        dispatchEvent(new Event("masque"));
189                                        session_son =new Date().getTime()
190                                        alphaTweener = new TweenLite (this, "alpha",null, this.alpha,1, tweenDuration, true) ; 
191                                        alphaTweener.start()
192                                        toggle = true ; 
193                                       
194                                        connecteur = new ConnectTo("rtmp://karl.arscenic.org/reflet")//rtmp://88.191.102.232/oflaDemo")
195                                        connecteur.makeConnection();
196                                        connecteur.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);
197                                       
198                                        micro = Microphone.getMicrophone();
199                                        micro.setLoopBack(false)
200                                        micro.rate = 44
201                                       
202                                        micro.setSilenceLevel(1)
203                                        micro.setUseEchoSuppression(true)
204                                       
205                                        fichier = new String ("reflet_son_-_"+domaine+"_-_"+new Date().fullYear+"_"+new Date().month+"_"+new Date().date+"_"+new Date().hours+"_"+new Date().minutes+"_"+new Date().seconds+"_"+new Date().milliseconds)
206                                       
207                                        addChild (conteneur)
208                                       
209                                        //trace("connecteur:"+connecteur.netStreamStatusHandler)
210                                        //trace("stream" + stream)
211                                        //trace("microphone" + micro.activityLevel)
212                                       
213                                        // connexion
214                                        effacer_btn.enabled = false 
215                                        envoyer_btn.enabled = false 
216                                }               
217                        } 
218                        else 
219                        {
220                                // DISPARAIT
221                                alphaTweener = new TweenLite (this, "alpha",null, this.alpha, 0, tweenDuration, true) ; 
222                                alphaTweener.start()
223                                toggle = false
224                                if (conteneur.root != null ) {
225                                       
226                                        this.x = -1000;
227                                               
228                                       
229                                        if (connected)
230                                        {
231                                                connecteur.removeEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler);
232                                                connecteur.close()
233                                                stream.close()
234                                        }
235                                       
236                                        dispatchEvent(new Event("volumeON"));   
237                                        progress.position = 0
238                                       
239                                }
240                        }
241                }
242               
243                /**
244                 * Cette méthode fixe le positionnement du popup
245                 */
246                private function popup():void
247                {       
248                        this.addChild(fond)
249                        fond.fill = new FillGradientStyle( "radial" , [0xffffff, 0xffffff] , [1, 1], [0, 100] )
250                        fond.gradientRotation = 0
251                        fond.h = h - 30
252                        fond.w = w - 20
253                        fond.useGradientBox = true
254                        fond.filters = [new DropShadowFilter(1,120,0,0.7,5,5)]
255                        fond.update()
256                        DisplayObjects.align( fond, new Rectangle( 0, 20 , this.w , this.h) , Align.TOP);
257                               
258                       
259                        //trace("popup_son")
260                       
261                        // prise en main !
262                        var shape                                       : Shape                 = new Shape();
263                        var header_shape_pen            : RectanglePen  = new RectanglePen( shape , 0, 0, 0, 0,  Align.LEFT_TOP );
264                        header_shape_pen.useClear       = true ;
265            header_shape_pen.useEndFill = true ;
266            header_shape_pen.fill               = new FillStyle( header_fill_color , 0 ) ;
267            header_shape_pen.line               = new LineStyle( header_line_epaisseur, header_line_color , 0) ;
268            header_shape_pen.draw( 0, 0, this.w, header_hauteur ) ;
269                        DisplayObjects.align( shape , new Rectangle( 0 , 0 , this.w , this.h ) , Align.TOP_LEFT );
270           
271                        header_ui.buttonMode = true
272                        header_ui.mouseEnabled = true
273                       
274                        header_ui.addChild( shape )
275                        header_ui.addEventListener( MouseEvent.MOUSE_UP , stopdrag)
276                        header_ui.addEventListener( MouseEvent.MOUSE_DOWN       , startdrag)
277                        conteneur.addChild(header_ui)
278                                                       
279                       
280                        // TITRE
281                        this.titre.embedFonts = true
282                        this.titre.autoSize     = TextFieldAutoSize.LEFT
283                        this.titre.antiAliasType = "advanced"
284                       
285                        if ( popup_son_header_logo != null )
286                        {
287                           DisplayObjects.align( this.popup_son_header_logo , new Rectangle( marge, 0 , this.w, header_hauteur), Align.LEFT);
288                           DisplayObjects.align( titre , new Rectangle( marge + popup_son_header_logo.width + this.espace_logo_titre, 0 , this.w, header_hauteur), Align.TOP_LEFT);
289                           conteneur.addChild(popup_son_header_logo)
290                        }
291                   
292                        else DisplayObjects.align( titre , new Rectangle( 0, 0 , 250, 15), Align.LEFT);
293                                       
294                        conteneur.addChild(titre);
295                       
296                        conteneur_croix.buttonMode = true
297                        conteneur_croix.name="annuler"
298                        conteneur.addChild(conteneur_croix)
299                        conteneur_croix.addChild(header_croix)
300                        conteneur_croix.addEventListener( MouseEvent.CLICK, show)
301                        DisplayObjects.align( header_croix , new Rectangle( -marge, 0 , this.w , header_hauteur) , Align.RIGHT);
302                       
303                       
304                        DisplayObjects.align( conteneur_body, new Rectangle( 0, this.header_hauteur, this.w, this.h - this.header_hauteur ) , Align.TOP_LEFT);
305                        conteneur.addChild(conteneur_body)
306                       
307                        // --> Texte d'invitation.
308                        invitation.width                = this.width - marge * 2
309                        invitation.embedFonts   = true
310                        invitation.antiAliasType= "advanced"
311                        invitation.autoSize             = TextFieldAutoSize.LEFT
312                        invitation.wordWrap     = true
313                        invitation.x                    = marge+invit_X
314                        invitation.y                    = marge+invit_Y
315                        conteneur_body.addChild( invitation)
316                       
317                       
318                        // --> language_label
319                        language_label.width = 200
320                        language_label.height = 100
321                        language_label.embedFonts       = true
322                        language_label.antiAliasType = "advanced"
323                        language_label.autoSize = TextFieldAutoSize.LEFT
324                        language_label.wordWrap = true
325                        language_label.x                = invitation.x
326                        language_label.y                = invitation.y+invitation.height+marge+10
327                        conteneur_body.addChild(language_label)
328                       
329                       
330                        // combo_box
331                        tableau_label_court = langue_audio_disponible.split(",")
332                        tableau_label_long  = langue_audio_disponible_long.split(",")
333                       
334                        var xml_string : String = "<root>";
335                        tableau_label_court.forEach  ( function navigate (element:*, index:int, arr:Array):void { xml_string += "<item label=\""+tableau_label_long[index]+"\" data=\""+tableau_label_court[index]+"\"/>" } )
336                        xml_string += "</root>";
337                       
338                        combo_box.dataProvider = new DataProvider(new XML(xml_string));;
339                        combo_box.setValue(langConversion.codeToCountry(langue_audio_defaut,tableau_label_court,tableau_label_long) )
340                       
341                        //trace("langue defaut:"+langConversion.codeToCountry(langue_audio_defaut,tableau_label_court,tableau_label_long) )
342                        combo_box.x = fond.width + fond.x - combo_box.width 
343                        combo_box.y = language_label.y
344                       
345                        combo_box.addEventListener(Event.CHANGE, changement_langue_enregistrement)
346                        conteneur_body.addChild(combo_box)
347                        langue = langue_audio_defaut
348                       
349                       
350                       
351                        slider = new Slider()
352                        slider.maximum = 100
353                        slider.minimum = 0
354                        slider.value=50
355                        slider.addEventListener(Event.CHANGE, function(e:Event):void {
356                                volume_retour.text = String(Math.floor(e.currentTarget.getValue())),micro.gain=e.currentTarget.getValue()})
357                        conteneur_body.addChild(slider)
358                       
359                       
360                       
361                        volume.width = 200
362                        volume.height = 100
363                        volume.embedFonts       = true
364                        volume.antiAliasType = "advanced"
365                        volume.autoSize = TextFieldAutoSize.LEFT
366                        volume.wordWrap = true
367                        volume.x                = invitation.x
368                        volume.y                = language_label.y+language_label.height+marge+10
369                       
370                        conteneur_body.addChild(volume)
371                       
372                       
373                       
374                       
375                       
376                        volume_retour.embedFonts        = true
377                        volume_retour.background = true
378                        volume_retour.backgroundColor = 0x999999
379                        volume_retour.antiAliasType = "advanced"
380                        volume_retour.autoSize  = TextFieldAutoSize.LEFT
381                        volume_retour.text = "50"
382                        conteneur_body.addChild(volume_retour)
383                       
384                       
385                        conteneur_body.addChild(vol_detected)
386                        vol_detected.backgroundFillStyle = new FillStyle(0x333333, 1)
387                        vol_detected.backgroundLineStyle = new LineStyle(1,0x666666, 1)
388                       
389                        vol_detected.barLineStyle = new LineStyle (1,0x000000, 1)
390                        vol_detected.barFillStyle = new FillStyle (0x364458,1)
391                       
392                        vol_detected.maximum = 100
393                        vol_detected.minimum = 0
394                       
395                       
396                        // --> souhait
397                        souhait.width = 200
398                        souhait.height = 100
399                        souhait.embedFonts      = true
400                        souhait.antiAliasType = "advanced"
401                        souhait.autoSize        = TextFieldAutoSize.LEFT
402                        souhait.wordWrap = true
403                        souhait.x               = invitation.x
404                        souhait.y               = volume.y+volume.height+marge+10
405                        conteneur_body.addChild(souhait)
406                       
407                       
408                        conteneur_body.addChild (conteneur_btn)
409                        record_btn = new Button(conteneur_btn)
410                        record_btn.autoSize = true
411               
412                        envoyer_btn = new Button(conteneur_btn)
413                        envoyer_btn.autoSize = true 
414                        envoyer_btn.enabled = false
415                        envoyer_btn.name = "envoyer"
416                       
417                        effacer_btn = new Button (conteneur_btn)               
418                        effacer_btn.name = "effacer"
419                        effacer_btn.autoSize = true 
420                        effacer_btn.enabled = false 
421                                               
422                        stop_btn = new Button()
423                        play_btn = new Button ()
424                        play_btn.enabled = false       
425                       
426                        // --> souhait
427                       
428                        duree.embedFonts        = true
429                        duree.antiAliasType = "advanced"
430                        duree.autoSize  = TextFieldAutoSize.LEFT
431                        conteneur_body.addChild(duree)
432                       
433                       
434                        compteur.embedFonts     = true
435                        compteur.antiAliasType = "advanced"
436                        compteur.text = String (max_son)
437                        compteur.width = 20
438                        conteneur_body.addChild(compteur)
439                       
440                       
441                        timer = new pegas.transitions.Timer(100, max_son*10 );       
442            timer.addEventListener( TimerEvent.TIMER , timerHandler);
443            timer.addEventListener( TimerEvent.TIMER_COMPLETE , stop);
444           
445                       
446                        conteneur_body.addChild(progress)
447                        progress.backgroundFillStyle = new FillStyle(0x333333, 1)
448                        progress.backgroundLineStyle = new LineStyle(1,0x666666, 1)
449                        progress.barLineStyle = new LineStyle (1,0x000000, 1)
450                        progress.barFillStyle = new FillStyle (0x364458,1)
451                        progress.maximum = max_son*10
452                        progress.minimum = 0
453               
454                       
455                        // popup SATURATIOn
456                       
457                       
458                       
459                        txt_sature.embedFonts   = true
460                        txt_sature.antiAliasType = "advanced"
461                        txt_sature.autoSize     = TextFieldAutoSize.LEFT
462                        txt_sature.wordWrap = true
463                        txt_sature.width = this.w / 2;
464                        txt_sature.height = this.h / 2 ;
465                       
466                       
467                       
468                        btn_valid_saturation.autoSize=true
469                        btn_valid_saturation.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void {
470                        if (conteneur_body.contains(conteneur_saturation)) conteneur_body.removeChild(conteneur_saturation)
471                               
472                        })
473                       
474                        area_sature.fill = new FillStyle( 0x333333 , 0.6 ) ;
475                        area_sature.line = new LineStyle( 1, 0x333333, 0.7 ) ;
476                        area_sature.w    = this.w - 70;
477                        area_sature.h    = this.h - 80;
478                        area_sature.bottomLeftRadius = 3
479                        area_sature.bottomRightRadius = 3
480                        area_sature.topRightRadius = 3
481                        area_sature.topLeftRadius = 3
482                       
483                        area_sature.filters = [new DropShadowFilter(1, 120, 0x000000, 0.7, 5, 5)]
484                        area_sature.update()
485                       
486                       
487                        conteneur_saturation.addChild(area_sature ) ;
488                        conteneur_saturation.addChild(txt_sature)
489                        conteneur_saturation.addChild(btn_valid_saturation)
490                       
491                        DisplayObjects.align( txt_sature, new Rectangle( 0, this.header_hauteur, this.w, this.h - this.header_hauteur ) , Align.CENTER);
492                        DisplayObjects.align( area_sature, new Rectangle( 0, this.header_hauteur, this.w, this.h - this.header_hauteur ) , Align.CENTER);
493                        DisplayObjects.align( btn_valid_saturation, new Rectangle( area_sature.x-20, area_sature.y-20, area_sature.w, area_sature.h ) , Align.BOTTOM_RIGHT);
494                       
495                }
496               
497               
498               
499               
500               
501               
502               
503                private function NetStatusHandler(event:NetStatusEvent):void
504                {
505                       
506                        //trace(event.info.code)
507                       
508                        if (event.info.code == "NetConnection.Connect.Success")
509                        {
510                               
511                                stream = new NetStreamMicrophone(connecteur, fichier, 'flv', micro);
512                                etat = "connecte"
513                                initEvent(true)
514                               
515                                connected = true 
516                        }
517                        else 
518                        {
519                                connected = false 
520                                initEvent(false)
521                               
522                        }
523                }
524               
525                private function initEvent(e:Boolean):void
526                {
527                        if (e)
528                        {
529                                stage.addEventListener(Event.ENTER_FRAME, etat_microphone )
530                                record_btn.addEventListener( MouseEvent.CLICK, recorder)
531                                play_btn.addEventListener(MouseEvent.CLICK, play)
532                                stop_btn.addEventListener(MouseEvent.CLICK, stop)
533                                envoyer_btn.addEventListener(MouseEvent.CLICK,envoyer_son)
534                                effacer_btn.addEventListener(MouseEvent.CLICK,envoyer_son)
535                        }
536                }       
537               
538                private function recorder(e:MouseEvent):void 
539                {
540                       
541                        stream.record()
542                        etat = "enregistre"
543                        conteneur_croix.mouseEnabled = false
544                        if (conteneur_btn.contains(record_btn))conteneur_btn.removeChild(record_btn) 
545                        conteneur_btn.addChild(stop_btn)
546                        timer.start();
547                        progress.barFillStyle = new FillStyle (0xFF0000,1)
548                }
549                private function play (e:MouseEvent):void 
550                {
551                        conteneur_croix.mouseEnabled = false 
552                        etat="lit"
553                        stream.playStream()
554                        if (conteneur_btn.contains(play_btn)) conteneur_btn.removeChild(play_btn) 
555                        conteneur_btn.addChild(stop_btn)       
556                        envoyer_btn.enabled = false
557                        effacer_btn.enabled = false
558                        timer.start();
559                        progress.barFillStyle = new FillStyle (0x008000,1)
560                }
561               
562                               
563               
564                private function etat_microphone(e:Event):void
565                {
566                                                               
567                                vol_detected.position = micro.activityLevel 
568                                if (micro.activityLevel<=84 )   vol_detected.barFillStyle = new FillStyle (0x009900,1)
569                                if (micro.activityLevel>=85&&micro.activityLevel<=94 ) vol_detected.barFillStyle = new FillStyle (0xCC9900,1)
570                                if (micro.activityLevel>=95)    vol_detected.barFillStyle = new FillStyle (0xFF0000,1)
571                                if (stream.isRecording())        { if (micro.activityLevel > saturation_declenchement) { i+=micro.activityLevel }}
572                                if (slider.value < 10) record_btn.enabled = false ; else record_btn.enabled = true
573                                vol_detected.barLineStyle = new LineStyle (1,0x000000, 1)
574                }
575               
576                private function stop (e:*):void 
577                {
578                        etat = "stop"
579                        conteneur_croix.mouseEnabled = true
580                        //trace((i/duration))
581                        stream.stopRecord()
582                        conteneur_btn.removeChild(stop_btn) 
583                        conteneur_btn.addChild(play_btn)
584                        envoyer_btn.enabled = true
585                        effacer_btn.enabled = true
586                        play_btn.enabled = stream.isPlayable()
587                        //compteur.text = String(duration)
588                        timer.stop()
589                        progress.maximum = duration
590                        timer = new pegas.transitions.Timer(100, duration * 10 ); 
591                        timer.addEventListener( TimerEvent.TIMER , timerHandlerRelect);
592            timer.addEventListener( TimerEvent.TIMER_COMPLETE , stop);
593                       
594                        if((i/duration)>saturation) pop_saturation(true,e)
595                } 
596               
597                private function pop_saturation(affiche:Boolean,e:*):void
598                {
599                        conteneur_croix.mouseEnabled = false
600                        i = 0
601                        if (affiche) conteneur_body.addChild( conteneur_saturation )
602                       
603                }
604               
605                public function timerHandler(event:TimerEvent):void 
606        {
607           compteur.text = String (max_son - timer.currentCount/10)
608                   progress.position = timer.currentCount
609                   duration = timer.currentCount/10
610        }
611               
612                public function timerHandlerRelect(event:TimerEvent):void 
613        {
614           compteur.text = String (timer.currentCount/10)
615                   progress.position = timer.currentCount/10
616                   
617        }
618                public var id_contrib:int
619                public var url_son : String
620               
621                private function envoyer_son(e:*):void
622                {
623                       
624                        trace("-------> CONTRIBTION SONORE")
625                        trace("-------> domaine : " +domaine)
626                        trace("-------> fichier : " + fichier)
627                        trace("-------> langue : " + langue)
628                        trace("-------> duree : " + duration)
629                        trace("-------> type : " + e.currentTarget.name)
630                        trace("-------> identifiant cookie : "+ new Cookies("reflet_user").read("user_reflet"))
631                        trace("-------> identifiant session : " + session_son)
632                        trace("-------> tag : " + "toto,tata")
633                        //trace("")
634                        //trace("")
635                        //
636                       
637                        var requete : URLRequest   = new URLRequest ("http://global.reflets.org/spip.php?action=reflet_inserer_son")//("http://global.reflet-web.net/spip.php?action=reflet_inserer_texte")
638                        var variable: URLVariables = new URLVariables()
639                        variable.domaine= domaine
640                        variable.fichier = fichier
641                        variable.lang = langue
642                        variable.type = e.currentTarget.name
643                        variable.identifiant_cookie = new Cookies("reflet_user").read("user_reflet")
644                        variable.identifiant_session = session_son
645                       
646                        requete.data = variable
647                        requete.method = "POST"
648                        //sendToURL(requete)
649                       
650                       
651                        effacer_btn.enabled = false
652                        envoyer_btn.enabled = false
653                       
654                       
655                        if (e.currentTarget.name == "envoyer" )
656                        { 
657                                compteur.text = String (max_son)
658                                timer = new pegas.transitions.Timer(100, max_son*10 );       
659                                timer.addEventListener( TimerEvent.TIMER , timerHandler);
660                                timer.addEventListener( TimerEvent.TIMER_COMPLETE , stop);
661                                progress.maximum = max_son * 10
662                               
663                               
664                                conteneur_btn.removeChild(play_btn)
665                                conteneur_btn.addChild(record_btn)
666                                show(e); 
667                                fichier = new String ("reflet_son_-_"+domaine+"_-_"+new Date().fullYear+"_"+new Date().month+"_"+new Date().date+"_"+new Date().hours+"_"+new Date().minutes+"_"+new Date().seconds+"_"+new Date().milliseconds)
668                               
669                                var urlLoader:URLLoader = new URLLoader();
670                                urlLoader.addEventListener ( Event.COMPLETE, 
671                                function (e:Event):void 
672                                { 
673                                                //trace("brut: "+ (e.target as URLLoader).data)
674                                                var retour : XML =  new XML ( (e.target as URLLoader).data)
675                                                //trace("xml:"+retour.chemin_son)
676                                                url_son = retour.chemin_son
677                                                id_contrib = retour.id_contrib_son
678                                                new Cookies("reflet_sound_contribution").write("name",retour.chemin_son )//"common")//(e.target as URLLoader).data)
679                                                trace("url son ===>"+url_son)
680                                                dispatchEvent(new Event("send_son"));   
681                                }
682                                ); 
683                                urlLoader.load(requete);
684                               
685                               
686                               
687                               
688                               
689                               
690                        }
691                        if (e.currentTarget.name == "effacer" )
692                        { 
693                                       
694                                fichier = new String ("reflet_son_-_"+domaine+"_-_"+new Date().fullYear+"_"+new Date().month+"_"+new Date().date+"_"+new Date().hours+"_"+new Date().minutes+"_"+new Date().seconds+"_"+new Date().milliseconds)
695                                compteur.text = String (max_son)
696                                timer = new pegas.transitions.Timer(100, max_son*10 );       
697                                timer.addEventListener( TimerEvent.TIMER , timerHandler);
698                                timer.addEventListener( TimerEvent.TIMER_COMPLETE , stop);
699                                progress.maximum = max_son * 10
700                               
701                                conteneur_btn.removeChild(play_btn)
702                                conteneur_btn.addChild(record_btn)
703                               
704                        }
705                        if (e.currentTarget.name=="annuler" )
706                        {                       
707                                fichier = new String ("reflet_son_-_"+domaine+"_-_"+new Date().fullYear+"_"+new Date().month+"_"+new Date().date+"_"+new Date().hours+"_"+new Date().minutes+"_"+new Date().seconds+"_"+new Date().milliseconds)
708                                compteur.text = String (max_son)
709                                timer = new pegas.transitions.Timer(100, max_son*10 );       
710                                timer.addEventListener( TimerEvent.TIMER , timerHandler);
711                                timer.addEventListener( TimerEvent.TIMER_COMPLETE , stop);
712                                progress.maximum = max_son * 10
713                               
714                        }
715                       
716                }
717               
718                private function changement_langue_enregistrement(e:Event):void
719                {
720                        langue = e.target.selectedItem.data
721                }
722               
723                private  var langue : String
724                public function changeLocalization( e:LocalizationEvent ):void
725        {
726                        langue_label_defaut = String ( e.current)
727                       
728                        this.titre.defaultTextFormat    = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_titre)
729                        this.titre.htmlText                             = e.getLocale("popup_son").titre
730                       
731                        this.invitation.defaultTextFormat       = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_invitation,0x000000)
732                        this.invitation.text                            = e.getLocale("popup_son").invitation
733                       
734                        this.language_label.defaultTextFormat   = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_language_label,0x333333)
735                        this.language_label.text                                = e.getLocale("popup_son").language_label
736                       
737                        this.volume_retour.defaultTextFormat    = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_souhait,0x333333)
738                        this.volume_retour.text = "50"
739                       
740                        this.souhait.defaultTextFormat  = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_souhait,0x333333)
741                        this.souhait.text                               = e.getLocale("popup_son").souhait
742                       
743                        this.duree.defaultTextFormat    = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_duree,0x333333)
744                        this.duree.text                                 = e.getLocale("popup_son").duree
745                       
746                        this.compteur.defaultTextFormat = new TextFormat(e.getLocale("parametres_globaux").font, e.getLocale("popup_son").taille_duree, 0x333333)
747                        this.compteur.text                              = String(max_son)
748                       
749                        this.volume.defaultTextFormat   = new TextFormat(e.getLocale("parametres_globaux").font, e.getLocale("popup_son").taille_volume,0x333333)                       
750                        this.volume.text                                = e.getLocale("popup_son").volume
751                                               
752                        this.envoyer_btn.textField.defaultTextFormat= new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_envoyer_btn)
753                        this.envoyer_btn.text                                           = e.getLocale("popup_son").envoyer_btn
754                       
755                        this.record_btn.textField.defaultTextFormat     = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_record_btn)
756                        this.record_btn.text                                            = e.getLocale("popup_son").record_btn
757                       
758                        this.effacer_btn.textField.defaultTextFormat= new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_effacer_btn)
759                        this.effacer_btn.text                                           = e.getLocale("popup_son").effacer_btn
760                       
761                        this.stop_btn.textField.defaultTextFormat       = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_stop_btn)
762                        this.stop_btn.text                                                      = e.getLocale("popup_son").stop_btn
763                       
764                        this.play_btn.textField.defaultTextFormat       = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_play_btn)
765                        this.play_btn.text                                                      = e.getLocale("popup_son").play_btn
766                       
767                        this.txt_sature.defaultTextFormat       = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_saturation,0xFFFFFF)
768                        this.txt_sature.text                            = e.getLocale("popup_son").saturation
769                        //
770                        this.btn_valid_saturation.textField.defaultTextFormat   = new TextFormat(e.getLocale("parametres_globaux").font,e.getLocale("popup_son").taille_btn_valid_saturation)
771                        this.btn_valid_saturation.text                          = e.getLocale("popup_son").btn_valid_saturation
772                       
773                               
774                        volume.y                = language_label.y + language_label.height + 10
775                       
776                       
777                       
778                        slider.x = volume.x + volume.width + 5
779                        slider.y = volume.y + volume.height / 2
780                       
781                                       
782                       
783                       
784                        combo_box.x = slider.x
785                        slider.width -=25
786                        slider.x += 25
787                       
788                        volume_retour.y         = slider.y - volume_retour.height/2
789                        volume_retour.x         = slider.x - volume_retour.width - 7
790                        volume_retour.selectable = false
791                       
792                        vol_detected.width = slider.width
793                        vol_detected.x = slider.x 
794                        vol_detected.y = slider.y + 10 
795                       
796                       
797                        souhait.y = volume.y + volume.height + 10
798                       
799                        record_btn.x = 0
800                        record_btn.y = 0
801                       
802                        stop_btn.x = 0
803                        stop_btn.y = 0
804                        stop_btn.width = record_btn.width
805                       
806                        play_btn.x = 0
807                        play_btn.y = 0
808                        play_btn.width = record_btn.width
809                       
810                        envoyer_btn.x = record_btn.x + record_btn.width + 15
811                        envoyer_btn.y = 0
812               
813                        effacer_btn.x = envoyer_btn.x + envoyer_btn.width + 15
814                        effacer_btn.y = 0
815               
816                        DisplayObjects.align( conteneur_btn, new Rectangle( 0, 0, this.w, this.h ) , Align.CENTER);
817                        conteneur_btn.y = souhait.y + 25
818               
819                        progress.width =record_btn.width+play_btn.width+effacer_btn.width+15
820                        progress.x = conteneur_btn.x
821                        progress.y = conteneur_btn.y+25 
822                                               
823                        compteur.x = conteneur_btn.x //duree.x+duree.width + 5
824                        compteur.y = conteneur_btn.y + 40 //duree.y
825                       
826                        duree.x = compteur.x+compteur.width
827                        duree.y = compteur.y
828                       
829                       
830                       
831                       
832                        //btn_valid_saturation.y = area_sature.y+area_sature.height
833                        //btn_valid_saturation.x = area_sature.width/2 + area_sature.x + btn_valid_saturation.width/2
834                       
835                       
836                       
837                }
838                private function startdrag( e:MouseEvent):void
839                {
840                        startDrag()
841                        //trace("->drag START")
842                        alpha = .8
843                }
844               
845                private function stopdrag(e:MouseEvent):void
846                {
847                        stopDrag()
848                        //trace("->drag STOP")
849                        alpha = 1
850                }
851               
852                /* ------------------------------------------------*/
853               
854                /**
855                 * Object bouton envoyer
856                 */
857                public var bouton_envoyer : Button = new Button()
858               
859                /**
860                 * Object bouton arreter
861                 */
862                public var bouton_arreter : Button = new Button()
863               
864               
865               
866                /*-------- PROPRIETE DESCRIPTIVE DES OBJETCS ------*/
867               
868                /**
869                * Hauteur du champs de saisies en pixel.
870                */
871                public var zone_de_saisie_hauteur:int;
872               
873                /**
874                 * Largeur du champs de saisies en pixel.
875                 */
876                public var  zone_de_saisie_largeur:int;
877               
878                /**
879                 * Hauteur du header en pixel ( par défaut: 15 px ).
880                 */
881                public var header_hauteur : int = 15
882               
883                /**
884                 * Couleur de contour du header.
885                 */
886                public var header_line_color : uint = 0xFFFFFF;
887               
888                /**
889                 * Largeur du contour du header ( Par défaut : .5 ).
890                 */
891                public var header_line_epaisseur : Number = 0.1;
892       
893                /**
894                 * Opacité du contour du header ( Par défaut : 1 ).
895                 */
896                public var header_line_alpha : Number = 1
897               
898                /**
899                 * Couleur de fond du header.
900                 */
901                public var header_fill_color : uint = 0xFFFFFF;
902                                       
903                /**
904                 * Alpha du fond du header ( Par défaut : 0.5 ).
905                 */
906                public var header_fill_alpha : Number = 0.5
907               
908               
909                /**
910                 *  Variable de type toggle  pour faire le toggle affichage
911                 */
912                private var toggle:Boolean
913               
914               
915                /**
916                 * Object Twwen pour alpha
917                 */
918                private var alphaTweener                :       TweenLite ;
919               
920               
921                /**
922                 * Object Twwen pour compteur
923                 */
924                private var compteurTweener             :       TweenLite ;
925               
926                /**
927                * Object coretexField de invitation.
928                */
929                public var invitation : CoreTextField;
930               
931                /**
932                 * Number duree alpha tween
933                 */
934                public var tweenDuration        :       Number 
935               
936                /**
937                * Marge du logo, de la croix de fermeture et du texte d'invitation (sur X et Y).
938                */
939                public var marge : int;
940               
941               
942                       
943                /**
944                * Object CoretexField du titre.
945                */
946                public var titre : CoreTextField
947               
948                /**
949                * Object CoretexField du titre.
950                */
951                public var souhait : CoreTextField = new CoreTextField()
952                       
953                        /**
954                * Object CoretexField du titre.
955                */
956                public var duree: CoreTextField = new CoreTextField()
957                       
958                                /**
959                * Object CoretexField du titre.
960                */
961                public var compteur: CoreTextField = new CoreTextField()
962                       
963               
964               
965                /**
966                * Object CoretexField du titre.
967                */
968                public var volume : CoreTextField = new CoreTextField()
969               
970                /**
971                * Object CoretexField du titre.
972                */
973                public var volume_retour : CoreTextField = new CoreTextField()
974               
975                /*
976                 * Coordonnées vertical du champs de texte d'invitation
977                 */             
978                public var invit_X      : int;
979               
980                /*
981                 * Coordonnées horizontales du champs de texte d'invitation
982                 */
983                public var invit_Y      : int;
984               
985               
986                /**
987                 * Objet int session
988                 */
989                private var session_son:int
990               
991                /**
992                 * Objet Bitmap de la croix de fermeture.
993                 */
994        public var header_croix : Bitmap ;
995               
996                /**
997        * L'objet popup_texte_header_logo de l'instance MyPopup
998        */
999        public var popup_son_header_logo : Bitmap ;
1000                       
1001                /*-------------------------------------------------*/
1002                /**
1003                * Object coretexField de language.
1004                */
1005                public var language_label : CoreTextField;
1006               
1007                /**
1008                 * Langue d'écriture par défaut dans le xml de configuration
1009                 */
1010                public var langue_audio_defaut:String;
1011               
1012                /**
1013                 * Langue ecriture disponible dans le xml de configuration
1014                 */
1015                public var langue_audio_disponible:String;
1016               
1017                /**
1018                 * Langue ecriture disponible dans le xml de configuration
1019                 */
1020                public var langue_audio_disponible_long:String;
1021               
1022               
1023                /**
1024                 * Object Array pour lister les noms de langues entiers
1025                 */
1026                private var tableau_label_long:Array 
1027               
1028                /**
1029                 * Object Array pour lister les noms de langues court (fr,en,...)
1030                 */
1031                private var tableau_label_court:Array 
1032               
1033               
1034                /**
1035                * Espace entre le logo et le titre.
1036                */
1037                public var espace_logo_titre : int;
1038               
1039                private var header_ui :Sprite = new Sprite()
1040               
1041                private var conteneur_body : Sprite = new Sprite();
1042               
1043                private var conteneur_croix:Sprite = new Sprite()
1044                private var conteneur:Sprite = new Sprite()
1045                       
1046                private var     chemin_red5:String=new String("rtmp://91.121.7.219/oflaDemo");
1047                public var langue_label_defaut:String = new String()
1048               
1049                /**
1050                 * Object LangConversion
1051                 */
1052                private var langConversion :LangConversion = new LangConversion()
1053               
1054                /**
1055                 * Object combobox des langues
1056                 */
1057                public var combo_box:ComboBox=new ComboBox();
1058               
1059       
1060               
1061}
1062
1063
1064}
Note: See TracBrowser for help on using the repository browser.