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

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

Nettoyage des imports principalement

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