Forums Développement Multimédia

Aller au contenu

[résolu] :  Script externe

Director

7 réponses à ce sujet

#1 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 23 March 2010 - 19:27 PM

Bonjour tlm,

J'ai un problème quand je charge des scripts externe (cheminsX.ls) semblables dans mon projet. Ces scripts (d'animations) contiennent une fonction que j'utilise dans mon animation.

ex.: chemins1.ls


on findcoord
  case Code of
    "1a": showmap="0090011101180130014101420200"
    "1b": showmap="00900111011801300141014202000201"
    "1c": showmap="009001110118013001410142020002010202"
  end case
end

 


Le problème survient quand je recharge ce même membre avec un autre script externe (ex.: Chemins2.ls).


ex.: chemins2.ls


on findcoord
  case Code of
    "2a": showmap="0090011101180130014101420200"
    "2b": showmap="00900111011801300141014202000201"
    "2c": showmap="009001110118013001410142020002010202"
  end case
end

 


La fonction findcoord() marche bien avec chemin1.ls mais lorsque je charge chemin2.ls l'animation ne reconnais plus findcoord().

Je stop l'animation et la repart... toujours avec chemin2.ls en place et ça marche correctement...

Es ce qu'il faut faire un "update" ou un "load" ou quelque chose du genre pour ne pas avoir a redémarrer l'anim a chaque fois?? J'suis pas certain de comprendre.

Merci!

#2 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 24 March 2010 - 12:11 PM

Hello

c'est pour une appli Online ou Offline ?

comment charges-tu les fichiers LS externes ? avec XLib ?

comment les supprimes-tu après leur exécution ? si ceux-ci doivent l'être ?

je pense que ton problème vient du fait que chemin1.ls est toujours en RAM malgrè l'exécution de chemin2.ls

donc soit décharger chemin1 puis exécuter chemin2, ou alors si chemin1 doit toujours être accessible, changer le nom de la fonction dans chemin2 et l'appeler par exemple ShowMap2 ;)

#3 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 24 March 2010 - 14:17 PM

Bonjour Lee,

C'est un appli offline.

Je charge les fichiers ls de cette façon :

  myfile = xtra("FileXtra4").new()
  chemin = _movie.path
  member("txt_path_code_chemin").Text = myfile.fx_FileOpenDialog(chemin, "CODE CHEMINS (*.ls)/*.ls","Charger les codes chemin... ", True, True)
  myfile = VOID
  ecrire_param()
  member("sc_coords").filename = member("txt_path_code_chemin").Text
  -- member("sc_coords").reload ou .update ?????????
 

Je change simplement le filename du script d'anim. Je ne sais pas si c'est une bonne façon de faire mais en redémarrant l'anim ça fonctionne.

Je ne vois pas pourquoi décharger chemin1.ls changerait quelque chose si celui-ci est directement remplacé dans l'animation.

Et je ne peux pas changer le nom de la fonction dans chemin2.ls :? C'est justement le but d'utiliser tjr le même nom de fct.

Modifié par Psykoo, 24 March 2010 - 14:20 PM.


#4 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 24 March 2010 - 17:17 PM

Un détail : pourquoi passer par un membre text pour récupérer le chemin plutôt qu'une variable ?

Lingo


cheminls = myfile.fx_FileOpenDialog(chemin, "CODE CHEMINS (*.ls)/*.ls","Charger les codes chemin... ", True, True)
myfile = VOID
ecrire_param()
member("sc_coords").filename = cheminls
Je ne pense pas que ça influe sur le problème, mais c'est bon à dire :)

Sinon tu as une autre possibilité qui est de changer le contenu du script plutôt que son chemin

Lingo


cheminls = myfile.fx_FileOpenDialog(chemin, "CODE CHEMINS (*.ls)/*.ls","Charger les codes chemin... ", True, True)
f=xtra("fileio").new()
f.openfile(cheminls,1)
stext=f.readfile()
f.closefile()
f=void
member("sc_coords").scripttext=stext

Attention, je n'ai fait aucun test d'erreur ici. De plus il est essentiel que le contenu du fichier texte soit bien un script valide, sinon ça va planter ton appli (mais ça c'est valable quelque soit la méthode utilisée).

#5 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 24 March 2010 - 17:43 PM

Psykoo dit :

Je ne vois pas pourquoi décharger chemin1.ls changerait quelque chose si celui-ci est directement remplacé dans l'animation.


je voyais la chose autrement : ajout de brides de script additionnelles et non le remplacement de ceux-ci.

Le remplacement du contenu comme propose Bubar semble une bonne solution à ton problème

#6 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 24 March 2010 - 18:07 PM

Rebonjour,

Merci pour la solution! Je ne savais pas qu'il était possible de changer le contenue d'un script dynamiquement! C'est exactement ce que je voulais faire a la base.

Citation

Un détail : pourquoi passer par un membre text pour récupérer le chemin plutôt qu'une variable ?

Je réutilise le chemin de ce ".ls" dans un autre animation avec une distribution commune partagée. Y'a moyen de passer un paquet de variables d'une animation vers une autre plus facilement ?? Je vien de commencer avec les distributions/scripts externes et j'suis un peu dans la brûme.

Merci a vous 2!

Modifié par Psykoo, 24 March 2010 - 18:09 PM.


#7 Leedoriden

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4350 messages

Posté 24 March 2010 - 18:27 PM

si les variables sont des _global, dans ce cas, elles sont viables tout au long de l'exécution de l'appli à moins que celles-ci ne soient supprimées ou surchargées ( int => string ... )

Attention à bien différencier les types de variables : locale, globale, propriété
si le "paquet" est un mix des 3 types, certaines ne seront plus accessibles !

#8 Psykoo

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 155 messages

Posté 24 March 2010 - 19:58 PM

D'accord je vais effectuer quelques tests.

Merci bcp!



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