Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Indicateur de sélection

Compatible Director. Cliquer pour en savoir plus sur les compatibilités.Par Leedoriden, le 12 2004

Il peut servir pour définir le focus d'un objet de tout nature se trouvant sur la scène.

On utilise pour cela un acteur de type shape ( rectangle transparent doté d'un contour noir ) correspond à l'outil rectangle dans la barre d'outils.

On place ce rectangle hors scène, comme indiqué sur l'image suivante

1.jpg

On applique le comportement sur l'objet de la scène et l'on obtient la fenêtre suivante pour paramétrer les options.

2.jpg

  • Piste du Liseret : Correspond au numéro de piste surlequel est placé le liseret sur le timeline.
  • Espacement : Permet de définir l'espacement entre l'objet et le liseret ( rectangle) lui même.


Voila le résultat lorsque la scène est en mode lecture et que l'on survole un objet.
Ici un acteur texte, mais cela pourrait très bien être un bitmap etc…

3.jpg

Présentation du script Indicateur :

-- Indicateur de sélection
---------------------------------------------------------------
-- Developped by Laurent Leedoriden
-- Copyright © 1996-2004 Leedoriden DSFW
-- All rights reserved
-- created : 12/15/2004
-- last updated : 12/15/2004
----------------------------------------------------------------
property pmySprite, pShapeColor, pLocShape, pSizeShape, pPisteNumberShape, pOffsetLiseret
property ptheMember
 
on getpropertydescriptionlist me
  ptheMember = sprite(the currentspritenum).member
  if not ptheMember then exit
 
  MyPropertyList = [ : ]
  MyPropertyList[#pmySprite] = ([#comment:"&Choix du Liseret :", #format:#shape , #default:ptheMember])
  MyPropertyList[#pShapeColor] = ([#comment:"Couleur &du Liseret :", #format:#color, #default:rgb(255,0,0)])
  MyPropertyList[#pPisteNumberShape] = ([#comment:"&Piste du Liseret :", #format:#integer, #default:1])
  MyPropertyList[#pOffsetLiseret] = ([#comment:"&Espacement :", #format:#integer, #range:[#min:0, #max:12], #default:3])
 
  return MyPropertyList
end
 
on getbehaviordescription me  
  return "Indicateur de sélection pour un menu ou faire un choix."
end
 
on getbehaviortooltip me  
  return me.getbehaviordescription()
end
 
on beginsprite me 
  pLocShape = sprite(pPisteNumberShape).loc -- position de départ ( ici hors scène )
 
  -- taille de départ
  pSizeShape = sprite(pPisteNumberShape).height
  sprite(pPisteNumberShape).width = pSizeShape
 
  ptheMember = pPisteNumberShape -- numéro de piste liseret
end
 
on mouseenter me 
  sprite(ptheMember).color = pShapeColor
 
  sprite(ptheMember).loch = sprite(me.spritenum).loch - pOffsetLiseret
  sprite(ptheMember).locv = sprite(me.spritenum).locv - pOffsetLiseret 
 
  sprite(ptheMember).width = sprite(me.spritenum).width + (pOffsetLiseret *2)
  sprite(ptheMember).height = sprite(me.spritenum).height +(pOffsetLiseret *2)  
end
 
on mouseleave me
  sprite(pPisteNumberShape).loc = pLocShape -- retour position d'origine 
 
  -- retour à sa taille origine
  pSizeShape = pSizeShape 
  sprite(pPisteNumberShape).height = pSizeShape 
  sprite(pPisteNumberShape).width = pSizeShape  
end

Remarque :
Vous avez sans doute remarqué que pOffsetLiseret est multiplié par 2.
Tout simplement pour éviter une déformation symétrique ( hauteur et largeur ) du rectangle bleu. ( présenté sur la scène plus haut )

tuto by Leedoriden