source: spip-zone/_plugins_/soundmanager/soundmanager.js.html @ 110938

Last change on this file since 110938 was 100485, checked in by brunobergot@…, 2 years ago

version 1.0.3 : traitement des liens vers les fichiers ogg

ça fonctionne bien à conditon que le serveur qui envoie le ogg soit bien configuré cf http://www.schillmania.com/projects/soundmanager2/doc/technotes/#client-requests

File size: 4.1 KB
Line 
1#HTTP_HEADER{Content-Type: text/javascript}
2#CACHE{24*3600,cache-client}
3
4$(document).ready(function(){
5        soundManager.setup({
6          url: '[(#CHEMIN{swf/soundmanager2.swf}|url_absolue|dirname)/]',
7          flashVersion: 9, // optional: shiny features (default = 8)
8          useFlashBlock: false, // optionally, enable when you're ready to dive in
9          debugMode: false,
10          /**
11           * read up on HTML5 audio support, if you're feeling adventurous.
12           * iPad/iPhone and devices without flash installed will always attempt to use it.
13           */
14          onready: function() {
15            // Ready to use; soundManager.createSound() etc. can now be called.
16                lastSound = soundManager.createSound({id:'Hello',url:''});
17                sound_manager_init();
18          }
19        });
20});
21
22
23function sound_manager_init(){
24
25        // indexer les liens mp3 et ogg
26        $("a[rel='enclosure'][href$=mp3],a[rel='enclosure'][href$=ogg]").each(
27                function(i) {   
28                        $(this).attr('data-soundId',i);
29        });
30       
31        // animation des boutons               
32        $(".play")
33        .html("<span class='ui-icon-play'>play</span>")
34        .unbind('click')
35        .click( function() {
36
37                $(".playing").removeClass("playing");
38                if ($(this).text() === "play") {
39                        $(this).html("<span class='ui-icon-pause'>pause</span>");
40                } else {
41                        $(this).html("<span class='ui-icon-play'>play</span>");
42                }
43               
44                var media_index = $(this).index();
45                var parent_track =  $(this).parents(".audio").eq(0) ;
46               
47                var lienMp3 = parent_track.addClass("playing").find("a[rel='enclosure']") ;
48                var media_url = lienMp3.attr('href');
49                var media_id = "media_" + lienMp3.attr('data-soundId');
50
51                // ajouter une class pour cibler les barres de progression de ce son
52                parent_track.addClass(media_id);
53
54                jouer_son(media_id, media_url);
55
56        });
57
58}
59
60function jouer_son(media_id, media_url){
61       
62
63        var soundURL = media_url;
64    var soundId = media_id ;
65    var thisSound = soundManager.getSoundById(soundId);
66
67    if (thisSound) {
68
69      // already exists
70      if (thisSound == lastSound) {
71        // and was playing (or paused)
72        thisSound.togglePause();
73      } else {
74        // different sound
75        thisSound.togglePause(); // start playing current
76
77        if (lastSound) {
78                soundManager.stop(lastSound.sID);
79                        soundManager.unload(lastSound.sID);
80                        lastSound = thisSound ;
81        }
82      }
83    } else {
84
85        // create sound
86        thisSound = soundManager.createSound({
87
88                id:soundId,
89                url:soundURL,
90                multiShot: false,
91                    autoPlay: false,
92                        autoLoad: true,
93                onplay:function(){
94                },
95                whileloading:function(){
96                                var timer = this.bytesLoaded / this.bytesTotal * 100 ;
97                                var minutes = Math.floor(this.durationEstimate / 1000 / 60) ;
98                                var secondes = Math.floor((this.durationEstimate - minutes*1000*60) /1000);
99                               
100                                if(secondes < 10) secondes = "0" + secondes ;
101                                if(minutes < 10) minutes = "0" + minutes ;
102                                                                       
103                                $("." + this.sID +" .duration").html("/ " + minutes + ":" + secondes);
104                               
105                                $("." + this.sID +" .loading").css({width:Math.round(timer) +"%"});
106                        },
107                whileplaying:function(){
108                                var minutes = Math.floor(this.position / 1000 / 60) ;
109                                var secondes = Math.floor((this.position - minutes*1000*60) /1000);
110                                if(secondes < 10) secondes = "0" + secondes ;
111                                if(minutes < 10) minutes = "0" + minutes ;
112                               
113                                var timer = this.position / this.durationEstimate * 100 ;
114                                $("." + this.sID +" .position").css({width:Math.round(timer) +"%"}); 
115                       
116                                $("." + this.sID +" .time").html(minutes + ":" + secondes);
117                        }
118        });
119
120        // stop last sound
121                if (lastSound) {
122                soundManager.stop(lastSound.sID);
123                        soundManager.unload(lastSound.sID);
124        }             
125            lastSound = thisSound ;
126       
127        thisSound.play();
128
129        // deplacer le son
130                $("." + soundId + " .progress_bar").click(function(e){
131                        e.preventDefault();
132                        var duree = thisSound.durationEstimate;
133                        var offset = $(this).offset();
134                        var x = (e.pageX - offset.left) / $(this).width() ;
135                        var temps = duree * x;
136                        $(this).find(".position").css({width:x * 100 +"%"});
137                        if(thisSound.playState == 0){
138                                soundManager.play(thisSound);
139                                thisSound.setPosition(temps);
140                        }else{
141                                thisSound.setPosition(temps);
142                        }
143                });           
144
145    }
146
147
148}
Note: See TracBrowser for help on using the repository browser.