conseils pour fonction récurcive
Bonjour,
Le script ci-dessous tente de faire suivre plusieurs fichiers swf en gérant la durée de chacun, les boutons permettent donc de stoper celle en cours et de lancer celle désignée à l'aide du paramètre select. Le soucis c'est que la valeur null semble non réinitialisé et l'animation passe de l'une à l'autre sans respecter le time_swf désigné par i ...
swf_viewer.js
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| var url_files = 'http://www.domaine.com/swf/';
var swf_tab = new Array();
swf_tab[1] = "fichier1.swf";
swf_tab[2] = "fichier2.swf";
var time_swf = new Array();
time_swf[1] = "30000";
time_swf[2] = "15000";
var desc_swf = new Array();
desc_swf[1] = "decritption fichier 1";
desc_swf[2] = "description fichier 2";
var i = 0;
function change_swf(select) {
document.getElementById('bt_swf1').src = 'images/bt01.png';
document.getElementById('bt_swf2').src = 'images/bt02.png';
if (select == null) {
i++;
if (i >= swf_tab.length)
i = 0;
document.getElementById('bt_swf' + i).src = 'images/bt0' + i + '.png';
} else {
i = select;
document.getElementById('bt_swf' + i).src = 'images/bt0' + i + '_on.png';
}
document.getElementById('swf_desc').innerHTML = desc_swf[i];
var so = new SWFObject(url_files + swf_tab[i], "mymovie", "500", "250", "8");
so.addParam("wmode", "transparent");
so.write("swf_content");
// if (select != null) // réinitialise
// i = 0;
setTimeout("change_swf(" + null + ")", time_swf[i]); // null => passe à la suivante
} |
test.html
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <html>
<head>
<script type="text/javascript" src="library/swfobject.js"></script>
<script type="text/javascript" src="swf_viewer.js"></script>
<link rel="stylesheet" type="text/css" href="css/swf_viewer.css" />
</head>
<body onload="change_swf(null);">
<div id="swf_content"></div>
<div id="swf_desc"></div>
<div id="swf_buttons">
<a href="javascript:change_swf(1);"><img id="bt_swf1" src="" border="0"></a>
<a href="javascript:change_swf(2);"><img id="bt_swf2" src="" border="0"></a>
</div>
</body>
</html> |
swf_viewer.css
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #swf_content {
width: 500px;
height: 250px;
}
#swf_desc {
float: left;
padding-right: 10px;
color: white;
}
#swf_buttons {
float: left;
padding-top: 2px;
} |
Merci pour vos éclaircissements.