Bonsoir,

Je suis actuellement étudiant en Master Pro Multimédia et je travaille sur un projet faisant intervenir du tracking Markerless et des animations sous Flash.

Le principe est simple. Je récupère les données de mon tracking dans un fichier .XML puis je récupère ces données via Flash, en AS3. Pour l'instant je me contente de récupérer le nom d'une vidéo, ce qui en soi ne me pose pas de problème.

Je souhaite travailler en "pseudo temps réel", autrement dit, j'essai de lire et de récupérer les données situées dans le fichier .XML en quasi temps réel. Pour ce faire, j'utilisais jusqu'à présent une astuce fonctionnelle mais peu élégante.

J'ai donc décidé d'utiliser un Timer qui me permettrait de lire dans le fichier .XML à chaque boucle et de relancer le Timer une fois le nombre maximum de boucles atteint.

Malheureusement, il semblerait que la boucle ne fonctionne pas.

Lorsque le nom d'une vidéo est présent dans test.xml, au lancement du script, cela fonctionne, mais lorsque j'essaie de faire fonctionner cela en temps réel et que test.xml n'est édité qu'après le lancement du script, cela ne fonctionne plus.


Voilà mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var myLoader:Loader = new Loader( );
var myLoaderReq:URLRequest = new URLRequest("video1swf");
myLoader.load(myLoaderReq);
 
var myLoader2:Loader = new Loader( );
var myLoader2Req:URLRequest = new URLRequest("video2.swf");
myLoader2.load(myLoader2Req);
 
var monTimer : Timer = new Timer(500,50);
	 monTimer.addEventListener(TimerEvent.TIMER, verificationxml);
		function verificationxml(event:TimerEvent) {
 
		// Je met ici mon script de récuperation de donnée dans le XML
 
 
 
 
		var chargementXML:URLLoader = new URLLoader();// objet de chargement
var fichier:URLRequest = new URLRequest("test.xml");// url du fichier chargé
chargementXML.addEventListener( Event.COMPLETE, chargementComplet );
chargementXML.load( fichier );
 
// chargement terminé du fichier xml
function chargementComplet(pEvt:Event):void
{
	// on récupère notre xml
	var adresses:XML = new XML( pEvt.target.data );
	var video:XMLList = adresses.elements();
	for each(var contact:XML in video)
	{
	var video_nom:String = contact.nom + ".swf"; 
 
		stop()
		if(video_nom == "video1.swf"){ 
 
 
		addChild(myLoader);
 
	}
	else if (video_nom == "video2.swf"){ 
 
 
	addChild(myLoader2);
 
	}
	else {
		monTimer.reset(); //j'ai essayé avec et sans ce reset
		}
 
	}}
 
 
 
 
		// Fin de script XML
 
 
		}
 
	 monTimer.addEventListener(TimerEvent.TIMER_COMPLETE, finBoucle);
		function finBoucle(event:TimerEvent) {
		monTimer.reset();
		}
 
		monTimer.start();


De plus, question bête, comment relancer le script une fois la vidéo achevée ?

Merci d'avance pour votre aide.

Richard.