Forums Développement Multimédia

Aller au contenu

[résolu] :  Comment detecter un temps de latence et lancer une

Director

22 réponses à ce sujet

#1 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 21 December 2005 - 18:04 PM

Bonjour à tous.
Voilà, je développe une application sur Director et je suis bloqué sur un truc qui doit être tout bête, j'explique.
C'est un programme qui doit tourner sur une borne interactive, or comme la plupart des gens qui utilisent dce type de bornes ne vont pas jusqu'à "gentiment" cliquer sur un éventuel bouton de réinitialisation du programme, j'ai donc besoin d'utiliser une fonction pour que le programme le fasse à leur place. En gros j'ai besoin que le programme détecte qu'il n'y a eu aucune "activité" du clavier ou dela souris et qu'au bout d'un temps à définir relance mon programme de base..ah, oui...c'est parce que j'utilise un launcher qui me sers de programme "parent" et deux programmes "enfants".
J'ai cherché à utiliser la fonction time Out mais apparement je me suis planté dans mes scripts...ça donne rien.
Si quelqu'un pouvait me filer un coup de main, ce serait HYPER SYMPA...c'est pour la fin de la semaine.
Merci, ...(plouf !!! une bouteille à la mer...)

#2 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 21 December 2005 - 19:06 PM

Hello

Séb donne une réponse ici

Happy weeky wink.gif

#3 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 21 December 2005 - 20:52 PM

merci pout t réponse...j'y vais de ce click...

#4 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 22 December 2005 - 12:16 PM

Bon...j'ai essayé...j'ai un peu arrangé le script de seb concernant la fonction timer...ça fonctionne mais cela m'oblige à le positionner un peu partout dans mon scenario...j'ai donc essayé d'utiliser certaines fonctions pour utiliser un script tournant en fond durant mon application, celui ci est le suivant :

on start movie
cursor 200,
preload member 0,519
the timeoutlength = 5*60
the timeoutScript = "Finlatence"
the timeoutkeydown = TRUE
the timeoutmouse = TRUE

end startmovie

on Finlatence
open "launcher.exe"
quit
end

Mais rien ne se passe...
1- Pourtant le script devrait bien tourner en fond puisqu'il est dans mon StartMovie.
2- j'ai bien redéfini le time out length à 5 secondes
3 - les options de détection de non activité clavier et souris sont activées.

Peut-être est-ce dans la définition de l'événement à lancer en cas de non activité.
Je reprécise que mon but est qu'en permanence durant le programme une routine détecte une non activité d'une durée variable que je pourrai définir, et qu'en cas de non activité un événement se produise, en l'occurence la fermeture de mon programme "enfant" et l'ouverture de mon programme "parent".

Merci pour votre aide..


#5 innocent

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 380 messages

Posté 22 December 2005 - 12:56 PM

Je pense que l'erreur de conception est de raisonner en terme "humain". En fait il ya statistiquement beaucoup plus de non activité que d'activité.

J'aborderais plutôt le problème avec :

un timeout lancé à l'initialisation de l'appli et qui toutes les [5 minutes] va [réinitialiser] SAUF SI une variable d'activité ets positionnnée à vrai. Si la variable est vrai le timeout va la mettre à faux.

Et dans chaque action tu va positionner cette variable à vrai.


Ainsi ton programme, au bout de [<5minutes] d'inactivité va passer sa variable à faux et dans [5 minutes] il va se [réinitialiser]

EDIT : evidemment si tu as des films ou autres séquences supérieure à [5 minutes] il te faut une variable [activité non humaine en cours]...

#6 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 22 December 2005 - 13:44 PM

Chose étonnante c'est que tu n'aies pas d'erreur de script car
Lingo
preload member 0,519
devrait te dire oops, non ?
strange !!!

dans ce cas, essaie de véfifier cette variable 1/0 condittion dans un exitframe

normalement le timer devrait fonctionner

#7 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 22 December 2005 - 14:43 PM

Merci Innocent, mais je dois avouer que j'ai du mal à comprendre tes explications...de plus il me paraît impossible de valider la variable dans chaque action, le programme comprend environ 150 scripts et comportements et autant de plages d'évènements....en fait je développe une application pour des personnes handicapés avec des moyens réduits c'est pour cela que je dois prévoir certains de leurs comportements avant de rentrer dans la phase béta de l'application...je suis sur qu'il y a une solution en utilisant les fonctions timeout timeoutkeydown, timeoutmouse,...dans un script maitre.

Leedoriden...ta réponse m'interpelle, j'utilise le preload de cette manière depuis longtemps et il ne m'a jamais dit "OOPS"...hihihi...et j'ai la quasi certitude qu'il préload bien mes acteurs.

Quant à mon script...je n'entrevois toujours pas la solution idéale...je continue à chercher....n'hésitezpas à renvoyer un post si vous pouvez encore m'aider à me mettre sur la voie


#8 innocent

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 380 messages

Posté 22 December 2005 - 15:04 PM

epsilon3d (Dec 22 2005, 03:43 PM) a dit :
Merci Innocent, mais je dois avouer que j'ai du mal à comprendre tes explications...de plus il me paraît impossible de valider la variable dans chaque action, le programme comprend environ 150 scripts et comportements et autant de plages d'évènements...


Où l'on reparle de la nécessité de la POO en lingo. Cela dit je crois avoir un truc sur le net à propos de la regénération des événements "standard" pour les appliquer à W3D, peut être cette technique pourrait s'appliquer dans ton cas

Attention : code fictif, voir avec les ténors du lingo si ca existe
Lingo
on genericEvent theEvent, theParams

activiteEnCours = true
 
do theEvent&"("theParams&")"
 
end


#9 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 22 December 2005 - 15:41 PM

???...

#10 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 22 December 2005 - 16:19 PM

Leedoriden (Dec 22 2005, 12:44 PM) a dit :
Chose étonnante c'est que tu n'aies pas d'erreur de script car
Lingo
<span class="kw2">preload <span class="kw2">member <span class="nu0">0,<span class="nu0">519
' devrait te dire oops, non ?


effectivement je croyais que sous DIR 8.5

preloadMember 1, 500
chargeait les acteurs 1 à 500
et
preload 1,500
chargeait les acteurs des frames 1 à 500


#11 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 22 December 2005 - 16:31 PM

Justement, ce script devraoit me permettre de charger les acteurs 1 à 500, non ? C'est une routine que j'utilisais il y a 7 ans et que je n'ai jamais changé... à priori elle fonctionne toujours...je n'ai pas développé depuis 5 ans et je m'y remets...Dis-moi tu ne peux pas me mettre sur la piste pour mon problème...je suis un peu dans le brouillard...merci

#12 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 22 December 2005 - 16:41 PM

j’avoue ne pas tout comprendre de ton problème
mais ne serait il pas plus simple d’avoir un projecteur "animdepart" qui te lance une animation
par un _movie.go("anim01") ou _movie.go("anim02")
et en cas de non événement dans ces anim un _movie.go("animdepart")

#13 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 22 December 2005 - 17:36 PM

C'est très sympa de ta part de passer un peu de temps à essayer de comprendre mon problème....je te le recentre...:

c'est un programme interactif pour une borne destinée aux handicapés.
L'application est divisée en trois parties, la première est un générique de présentation, la deuxième est l'application qui fait suite à destination des personnes valides, la troisième partie est la même application que pour les valides mais à destination des personnes invalides. Le programme est donc divisé en trois fichiers .exe, le premier est le générique. A la fin du générique il y a un écran de choix...en fonction du choix...valide ou invalide...c'est une autre projection qui est lancée qui contient l'application....bon....le seul truc c'est que tout le monde ne va pas prendre le temps de quitter l'application en cours....j'ai donc besoin d'insérer une routine dans chaque application (hormis le générique donc) qui fasse en sorte qu'au bout de trois minutes (par exemple) d'inactivité, ni clavier, ni souris, qui fasse en sorte donc de fermer l'applicaion en cours et de relancer mon projecteur générique pour que le prochain utilisateur potentiel puisse à nouveau se retrouver avec le choix des applications valide ou invalide...j'essaye donc de créer dans mon script Start movie de mes applications une routine permanente qui déclenche la fermeture du programme en cours et le lancement de mon générique au bout de trois minutes d'inactivité clavier ou souris , quelque soit l'endroit où le programme est arrêté,...ouf ! Voilà....lol

#14 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 22 December 2005 - 18:06 PM

Tu me rassures je suis pas si sénile que ça
tes trois applications sont elles des projections director ?

#15 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 22 December 2005 - 18:26 PM

oui..ce sont des projections en .exe....donc il me suffit de déclencher un open "application.exe"...mais c'est le temporisateur permanent que je n'arrive pas à régler..tu vois...le script permettant de checker en permanence et qui fait en sorte qu'au bout d'un temps à déterminer et sans activité humaine, ni click de souris, ni click de clavier, il ferme le projecteur enfant et lance le projecteur générique..c'est juste un problème de time out...à priori

#16 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 22 December 2005 - 18:34 PM

pas besoin de trois Projecteur
un seul suffit
disons "monappli.exe"

avec un script d’animation
on startMovie
_movie.go("generique")
end

un fichierdir ou dxr "generique"
et deux fichier .dir ou .dxr "PartOne" et" PartTwo"

dans le fichier "generique"
en fonction du choix

sur le choix 1

on mouseUp me
_movie.go("PartOne")
end

sur le choix 2

on mouseUp me
_movie.go("PartTwo")
end

dans ces deux fichier un script qui après une periode donnée d’innactivité
exécute le script

on VousEtesDesFeignantsOnSeBarre
_movie.go("generique")
end

de cette façon tu ne recharges pas à chaque fois le runtime

#17 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 22 December 2005 - 19:27 PM

OK..très cool...mais le problème n'est pas le problème d'arborescence de mes applications...je n'ai plus le temps d'y changer quoi que ce soit...c'est pour demain...le problème c'est le script qui détermine en permanence qu'il n'y a pas eu activité du clavier ou de la souris durant une période déterminée...c'est cela que je n'arrive pas à configurer...j'en bave ...

#18 j'patauge

  • Members
  • PipPipPipPipPipPipPipPip
  • 676 messages

Posté 22 December 2005 - 20:46 PM

essaye
cela vient peut être de demander à lancer un …exe qui n’a pas été quitter
j’avoue mon ignorance du monde PC icon_wink.gif

#19 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 23 December 2005 - 08:56 AM

Je crois que j'ai eu un éclair de lucidité cette nuit....enfin je crois...je vais tester...je pense que le problème c'est que mon script time out tourne dans un startmovie et non dans un globalmovie....je teste et je reviens....

#20 epsilon3d

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 23 December 2005 - 12:16 PM

Eh bien non...je sèche...

#21 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 23 December 2005 - 13:30 PM

Hello

en fait pour preload member 0,159 j'ai tendance à oublier les anciennes versions que pour Moi qui utilise MX2004 la syntaxe est

Lingo
preloadmember()
-- Utilisation
-- Syntaxe Lingo
_movie.preloadmember({réfObjActeur})
_movie.preloadmember(nomOuNumDacteurInitial, nomOuNumDacteurFinal)

d'ou mon oops smile.gif

#22 Elyse

    Ceinture Blanche

  • Members
  • Pip
  • 5 messages

Posté 05 May 2010 - 13:59 PM

Bonjour,
Je me permet de relancer ce sujet car le lien proposé à l'époque ne fonctionne plus, et je ne trouve pas de sujet similaire dans le forum.
Y-a-t-il quelqu'un qui peut m'aider?
Mon problème étant donc le même: quand il n'y a plus d'activité, l'anim revient à un certain endroit.

Un grand merci,

Elyse

#23 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 05 May 2010 - 14:18 PM

Hello Elyse

voici le lien corrigé ;)



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP