Forums Développement Multimédia

Aller au contenu

Objet esclave

Director

26 réponses à ce sujet

#1 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 26 October 2011 - 22:57 PM

Voila mon problème sûrement simple pour vous :

Au survol d'un objet, je voudrais faire apparaître un objet sur la scène, et disparaître dès que le curseur ne survole plus l'objet déclencheur. Je sais qu'il faut qu'il soit non visible par défaut, et au survol le rendre visible; je cafouille dans le lingo.

Merci :Hola:

#2 gegedade

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 144 messages

Posté 27 October 2011 - 00:23 AM

Bonsoir,

Si tu ne veux pas avoir recours à un autre objet lorsque le sprite est invisible, je pense que le mieux est de mettre son blend à 0 au départ, ainsi on peut le survoler.
On mousewithin me
pSprite=me.spriteNum
sprite(pSprite).blend=100
updateStage -- pas sûr que l'update soit nécessaire, faut tester.
end

puis pour effacement :
on mouseLeave me
pSprite=me.spriteNum
sprite(pSprite).blend=0
updateStage -- pas sûr que l'update soit nécessaire, faut tester.
end

y'a peut-être plus élégant, mais en tous cas c'est comme ça que je ferais pour ma part...

Amitiés directoresques

#3 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 27 October 2011 - 15:54 PM

Hello,

Gegegade, il me semble que René Philippe parle bien de 2 objets, un "déclencheur" et un "esclave".
Auquel cas le script se limite à celui du déclencheur :

on MouseEnter
sprite(numero_de_piste_de_l_esclave).visible = true
end

on mouseLeave
sprite(numero_de_piste_de_l_esclave).visible = false
end

#4 gegedade

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 144 messages

Posté 27 October 2011 - 18:14 PM

Oups, j'avions mal lu... T'as raison Ned.

J'ai rencontré Bubar (il t'en a peut-être parlé ?) - Si tu viens vers Pau, rappelle-toi l'apéro (ça rime !) avec Bubar, on se retrouvera à 3.

Amitiés directoresques

GG

#5 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 27 October 2011 - 22:41 PM

eh bien merci, ça me paraît impeccable tout ça; l'apéro aussi d'ailleurs...

#6 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 28 October 2011 - 12:13 PM

Hello,

J'en profite simplement pour rappeler l'existence d'un tuto "les diverses utilisations de director" : http://ressources.me.../bases_director

Ce dernier explique les bases pour contrôler les sprites et acteurs ;)

#7 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 30 October 2011 - 09:19 AM

@Gegegade : oui, Bubar m'en pa parlé, il faut juste qu'on toruve le temps pour ça, mais j'y compte bien ;-)

#8 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 30 October 2011 - 15:27 PM

Toujours dans le même sens du fil, et avec votre aide précieuse, j'ai réussi à rendre une piste visible ou non en survolant un objet "déclencheur"; je voudrais aller plus loin :

sur ma scène, j'ai une foultitude d'objets cliquables; j'ai scripté un de ces objets qui, au survol, rend une piste visible et donc ce qui s'y trouve; ça ça marche; mon problème maintenant c'est que dans certaines parties, j'ai jusqu'à 38 zones cliquables, et donc 38 objets à rendre visibles lors du survol de "son déclencheur"; je peux bien sûr mettre mes objets sur 38 lignes différentes, et rendre chaque ligne visible au survol de son déclencheur, mais c'est long et fastidieux.

Je suis sûr que vous avez une solution, genre tableau, mais ce truc me fait peur à mettre en oeuvre...

Merci

#9 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 31 October 2011 - 11:54 AM

une solution simple consiste à gérer tes pistes de manière astucieuse, en décidant d'un décalage identique entre n° de piste du déclencheur et n° de piste de l'esclave.
Par exemple, tu places chaque esclave 100 pistes au dessus de son déclencheur. Ainsi, le script de tous les déclencheurs devient

on MouseEnter
sprite(me.spriteNum + 100).visible = true
end

on mouseLeave
sprite(me.spriteNum + 100).visible = false
end

hth

#10 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 01 November 2011 - 13:06 PM

Pas évident ton truc; dans le même ordre d'idées, je voudrais qu'à l'entrée d'une image, le curseur se trouve à un endroit bien précis de la scène, je sais qu'il faut le rendre esclave d'abord, lui donner des coordonnées de l'écran, puis le "libérer" ensuite, un coup de main svp ? merci

#11 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 02 November 2011 - 10:54 AM

buddyAPI, encore et toujours, avec trois fonctions :
baPlaceCursor, baRestrictCursor, baFreeCursor


hth

#12 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 06 November 2011 - 10:32 AM

Voir le messageNed.Net, le 02 November 2011 - 10:54 AM, dit :

buddyAPI, encore et toujours, avec trois fonctions :
baPlaceCursor, baRestrictCursor, baFreeCursor


hth

Salut; à force de tourner en rond sans résoudre mon problème "d'esclavage" des pistes, je me pose une question qui, j'en suis sûr, trouvera ici une réponse :smile:

Le nombre des pistes que l'on peut "esclavager" ne serait-il pas limité à 15 ou 16 ? parce que je vois que quand je mets une quarantaine de pistes lingo n'en gère qu'une quinzaine ou une seizeine.

Confirmation svp ? Merci

#13 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 06 November 2011 - 15:04 PM

Au vu des tes messages précédents, j'ai l'impression que tu pars dans une mauvaise direction.

Il est parfaitement possible de "esclavager" toutes les pistes du scénario à partir du lingo, et donc d'en faire tout ce que l'on veut. Il convient par contre de faire les choses au bon moment : entre les évènements prepareframe, beginsprite, enterframe, ... chacun est à utiliser pour faire les bonnes choses (je te laisse regarder la doc et faire des essais).

J'envoie en pj un exemple dir mx 2004, qui montre comment faire apparaître des sprites au survol, de 3 manières différentes. Il s'agit des 3 façons "simples" pour le faire, il existe bien d'autres méthodes (notamment par poo).

#14 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 06 November 2011 - 22:08 PM

Merci Bubarnet; c'est pas tout à fait ce que je veux faire, en fait, c'est plus simple que ça; je possède 9 cartes divisant un pays en 9 parties; dans chacune de ces parties se trouvent de 2 à 38 emplacements de campings. Chaque emplacement est repéré sur chacune des 9 cartes par un chiffre sur lequel j'ai posé un objet invisible, sensible au survol et au clic. En théorie, c'est ce que je n'arrive pas à faire, j'ai réservé de la piste 50 à la piste 90 pour y mettre, d'une part un cartouche de couleur servant de fond, puis, les 38 objets texte donnant le nom du camping et d'une note attribuée. Au survol par exemple de l'objet 12, il doit donc apparaître le cartouche de couleur, commun à tous les campings, et l'objet texte correspondant à ce camping; si on cesse de survoler l'objet "déclenchant" le cartouche et le nom doivent redevenir invisibles; si on clique par contre, cela doit ouvrir une page html où on trouve toutes les infos de ce camping (cette manoeuvre fonctionne à peu près suite à vos conseils dans ce forum). Le problème vient de ce que le gestionnaire de "cachage" que j'ai mis en script image ne fonctionne que partiellement, ne cachant que partiellement certaines pistes et pas d'autres, alors que je veux que toutes les pistes de 50 à 90 soient par défaut masquées, et visible la 50 et une deuxième au survol. Voici mon gestionnaire :

on Cacherpistes me
p=50
sprite(p).visible = false
p=p+1
repeat with p = 50 to 90
end repeat
end

qu'en pensez-vous ? Merci

#15 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 07 November 2011 - 08:03 AM

j'en pense qu'entre ton "repeat" et ton "end repeat" il n'y a aucune instruction, donc tu fais passer ta variable "p" de la valeur 50 à la valeur 90 et c'est tout.

Peut-être voulais-tu faire ceci :


on Cacherpistes me
   repeat with p = 50 to 90
      sprite(p).visible = false
   end repeat
end

Modifié par Ned.Net, 07 November 2011 - 08:04 AM.


#16 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 07 November 2011 - 12:40 PM

Hormis l'erreur indiqué par Ned, il y a beaucoup plus simple pour gérer ce genre de choses. J'envoie en pj un exemple tout bête

#17 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 07 November 2011 - 22:49 PM

Ouf, ça y est; merci les copains grâce à vos conseils, ça marche enfin, très exactement la soluce de NedNet, seul oubli, mettre la valeur de "p" à 0 avant de lui donner les valeurs de 50 à 90. Voila, merci, vous êtes géniaux. Suite au prochain numéro, maintenant, je cherche comment forcer le curseur de la souris à se mettre à un endroit précis à l'entrée de l'image et ça roulera.

#18 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 08 November 2011 - 09:46 AM

Citation

seul oubli...
initialiser une variable avant de l'utiliser dans un repeat with ... to ne sert strictement à rien en lingo.

#19 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 08 November 2011 - 10:09 AM

T'as raison ça marche po

#20 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 08 November 2011 - 14:14 PM

Pour ceux qui sont en Director MX 2004 vous ne pouvez évidemment pas ouvrir du director 11 ? je vous enverrai bien mon fichier pour diagnostic... :Hola:

#21 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 09 November 2011 - 13:12 PM

ben non, désolé :neutral:

#22 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 15 November 2011 - 22:08 PM

Bon, ça marche toujours pô; je vais essayer d'expliquer autrement;

je veux qu'en arrivant sur une image, il se passe ceci :

1) la tête boucle sur cette image
2) certains éléments restent visibles
3) certaines pistes (de la 50 à la 90 pour être exact) et donc ce qu'il y a dessus restent invisibles
4) au survol d'un élément parmi les 40 choisis, un des éléments qui lui est associé (donc faisant partie des pistes 50 à 90) devienne visible, et redevienne invisible en cessant de le survoler
5) toujours au survol d'un élément parmi les 40, en plus de rendre visible "son" élément associé, un 2e élément devient visible (un fond coloré), ce fond coloré étant commun à tous les éléments

voila, j'espère avoir été assez clair

pour cela, je suppose qu'il faut plusieurs sortes de scripts, c'est là que je merde, peut-être un script d'animation, un script associé au frame en cours de lecture, sans doute un script sur l'image objet;

j'ai pondu un script qui fonctionne quand il est associé à une image objet, quand on le survole, les 40 pistes et ce qu'elles contiennent deviennent effectivement invisible au survol, et visibles quand il n'y a plus survol, ça fonctionne donc partiellement; je vous mets une idée du script que je n'arrive pas à faire fonctionner :


on mouseEnter me
cursor 280
sprite(50).visible = false
sprite(51).visible = false
sprite(52).visible = false
sprite(53).visible = false
sprite(54).visible = false
sprite(55).visible = false
sprite(56).visible = false
sprite(57).visible = false
sprite(58).visible = false
sprite(59).visible = false
sprite(60).visible = false
sprite(61).visible = false
sprite(62).visible = false
sprite(63).visible = false
sprite(64).visible = false
sprite(65).visible = false
sprite(66).visible = false
sprite(67).visible = false
sprite(68).visible = false
sprite(69).visible = false
sprite(70).visible = false
sprite(71).visible = false
sprite(72).visible = false
sprite(73).visible = false
sprite(74).visible = false
sprite(75).visible = false
sprite(76).visible = false
sprite(77).visible = false
sprite(78).visible = false
sprite(79).visible = false
sprite(80).visible = false
sprite(81).visible = false
sprite(82).visible = false
sprite(83).visible = false
sprite(84).visible = false
sprite(85).visible = false
sprite(86).visible = false
sprite(87).visible = false
sprite(88).visible = false
sprite(89).visible = false
sprite(90).visible = false
end

on mouseLeave me
cursor -1
sprite(50).visible = true
sprite(51).visible = true
sprite(52).visible = true
sprite(53).visible = true
sprite(54).visible = true
sprite(55).visible = true
sprite(56).visible = true
sprite(57).visible = true
sprite(58).visible = true
sprite(59).visible = true
sprite(60).visible = true
sprite(61).visible = true
sprite(62).visible = true
sprite(63).visible = true
sprite(64).visible = true
sprite(65).visible = true
sprite(66).visible = true
sprite(67).visible = true
sprite(68).visible = true
sprite(69).visible = true
sprite(70).visible = true
sprite(71).visible = true
sprite(72).visible = true
sprite(73).visible = true
sprite(74).visible = true
sprite(75).visible = true
sprite(76).visible = true
sprite(77).visible = true
sprite(78).visible = true
sprite(79).visible = true
sprite(80).visible = true
sprite(81).visible = true
sprite(82).visible = true
sprite(83).visible = true
sprite(84).visible = true
sprite(85).visible = true
sprite(86).visible = true
sprite(87).visible = true
sprite(88).visible = true
sprite(89).visible = true
sprite(90).visible = true
end

voila, merci

#23 Ned.Net

  • Members
  • PipPipPipPipPipPipPipPip
  • 727 messages

Posté 16 November 2011 - 09:40 AM

Je voudrai pas être vexant, mais tu es un peu désespérant (désolé, mais je préfère être franc)

Tu dis que tes pistes 50 à 90 sont invisibles, sauf une d'entre elles au survol de l'élément correspondant, mais dans le code que tu postes tu les rend toutes à nouveau visible au mouseLeave, donc tu fais l'inverse de ce que tu décris.

Au lieu des 40 lignes "sprite().visible" tu peux parfaitement utiliser une boucle repeat, ça fonctionne. Si tes essais n'ont pas fonctionné, ça ne vient pas du "repeat" mais peut-être du type de script que tu as utilisé. Ton gestionnaire CacherPistes, tel que je l'ai corrigé quelques posts plus haut, est appelable depuis n'importe quel script si tu le places dans un script d'animation. Et il ne peut QUE fonctionner, à moins que tu ais mis des instructions ailleurs qui font l'inverse.

Je pense sincèrement qu'il te manque les bases de la programmation (de l'algorithmie), et les bases de la progammation sous Director (types de script) or le wiki de ce site est un très bon début pour découvrir cette deuxième partie.
En investissant le peu de temps nécessaire à les acquérir, tu verras que tout te paraitra plus clair et plus facile à réaliser.

#24 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 16 November 2011 - 12:55 PM

Je soutiens ce que Ned.Net a écrit ; le problème provient sans doute d'un manque de compréhension et de bases techniques.

Je réitère donc ma proposition du 28 octobre de jeter un coup d'oeil aux divers tutoriels basiques : http://ressources.me...tor/generalites

Je suis sûr qu'ainsi le problème se résoudra de lui-même ;)
(n'hésite cependant pas à poser d'autres questions sur des points plus précis qui te poseraient problème)

#25 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 19 November 2011 - 15:40 PM

Merci les copains de vos réponses; bien sûr, vous avez raison, je manque cruellement de formation mais manque de temps, j'essaye de dépanner un pote avec mes maigres moyens et surtout, vos conseils qui m'aident vraiment.

En ce qui concerne le masquage/démasquage, ça fonctionne enfin; j'aurai pu faire plus propre, en particulier avec une boucle et une variable pour le numéro de la piste, j'avais essayé le code d'un de vous, mais comme le problème venait d'ailleurs et que je ne savais pas d'où, j'ai repris ma méthode bidon de détailler chaque piste. Pour l'instant, ça fonctionne et je laisse comme ça, je verrai à la prochaine version.

Maintenant, un dernier petit coup de main et je serai comblé, placer le curseur à un endroit précis à l'entrée d'une image; là encore, j'ai essayé un script qui reste sans effet.

Merci de votre gentillesse et votre patience.
René

#26 bubarnet

  • Members
  • PipPipPipPipPipPipPipPip
  • 615 messages

Posté 21 November 2011 - 12:55 PM

Pour ton problème de curseur, pas le choix, il faut utiliser un xtra. Pour cela, buddyapi convient parfaitement (tu le trouveras ici : http://mods.com.au/budapi/default.htm). Télécharge le et copie le fichier x32 dans le dossier install_director\Configuration\Xtras. Ensuite lance director.

Pour gérer ton curseur, tu n'auras plus qu'à appeler la fonction baPlaceCursor( X, Y )

#27 René Philippe

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 194 messages

Posté 24 November 2011 - 20:57 PM

Merci bubarnet, c'est sympa; je vais voir ça



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