home *** CD-ROM | disk | FTP | other *** search
/ L'Encyclopedie Des Jeux Video 8 / EJV8_CD1.ISO / ejv8-cd1 / viewer.dxr / 00055_Info-bulle.ls < prev    next >
Encoding:
Text File  |  2003-10-24  |  10.7 KB  |  201 lines

  1. property mySprite, getPDLError, myString, myDelay, myPosition, myDisplaySprite, myHideFlag, myDisplayList, myStartTicks, myDisplayFlag
  2.  
  3. on getBehaviorDescription me
  4.   return "Info-bulle" & RETURN & RETURN & "Produit une info-bulle lorsque l'utilisateur survole l'image-objet." & RETURN & RETURN & "Remarque : ce comportement appelle le comportement 'Affichage de texte' pour afficher le message. " & "Le comportement 'Affichage de texte' doit ├¬tre li├⌐ ├á une image-objet distincte contenant un acteur champ ou un acteur texte." & RETURN & RETURN & "Si une telle image-objet existe, elle sera automatiquement s├⌐lectionn├⌐e dans la bo├«te de dialogue Param├¿tres des comportements." & RETURN & RETURN & "Pour que l'info-bulle apparaisse dans une position donn├⌐e par rapport ├á l'image-objet actuelle, s├⌐lectionnez la position ad├⌐quate dans la bo├«te de dialogue Param├¿tres des comportements et v├⌐rifiez que le comportement 'Affichage de texte' associ├⌐ est d├⌐fini pour r├⌐agir en tant qu'info-bulle. " & "Si le comportement 'Affichage de texte' est d├⌐fini pour agir en tant que barre d'├⌐tat, il ignore toutes les donn├⌐es de positionnement et appara├«t dans une position fixe." & RETURN & RETURN & "Vous pouvez choisir de faire appara├«tre l'info-bulle au survol ou uniquement si la souris s'attarde sur l'image-objet pendant une p├⌐riode donn├⌐e. " & "Vous pouvez ├⌐galement choisir de faire dispara├«tre l'info-bulle lorsque l'utilisateur clique sur l'image-objet." & RETURN & RETURN & "La bo├«te de dialogue Param├¿tres du comportement dispose d'un espace limit├⌐ pour la saisie du contenu de l'info-bulle. " & "Elle n'accepte pas les cha├«nes contenant un caract├¿re de retour ├á la ligne. " & "Pour afficher une longue info-bulle consistant de plusieurs lignes de texte devant appara├«tre ├á la position de cette image-objet, vous devrez envoyer un message contenant la cha├«ne requise ├á ce comportement. " & "Par exemple :" & RETURN & RETURN & "SendSprite (1, #Tooltip_SetMessage, " & QUOTE & "Ce message consiste en" & QUOTE & "&RETURN&" & QUOTE & "deux lignes de texte" & QUOTE & ")" & RETURN & RETURN & "Cela produit le message suivant lorsque la souris survole l'image-objet 1 :" & RETURN & RETURN & "Ce message consiste en" & RETURN & "deux lignes de texte" & RETURN & RETURN & "Si l'info-bulle produite par ce comportement doit ├¬tre affich├⌐e dans une barre d'├⌐tat, cette ├⌐tape n'est pas n├⌐cessaire. " & "Le comportement 'Affichage de texte' assure qu'une longue ligne de texte est mise ├á la ligne dans la barre d'├⌐tat et qu'une barre de d├⌐filement appara├«t si n├⌐cessaire." & RETURN & RETURN & "Types d'acteurs autoris├⌐s :" & RETURN & "tous" & RETURN & RETURN & "Param├¿tres :" & RETURN & "* Texte de l'info-bulle (cha├«ne d'une ligne)" & RETURN & "* D├⌐lai avant l'affichage de l'info-bulle (en battements)" & RETURN & "* Masquer l'info-bulle lors d'un clic sur l'image-objet ? (TRUE | FALSE)" & RETURN & "* Position de l'info-bulle par rapport ├á l'image-objet (non prise en compte si le comportement 'Affichage de texte' est d├⌐fini pour r├⌐agir en tant que barre d'├⌐tat)." & RETURN & "* Num├⌐ro de l'image-objet dans laquelle l'info-bulle doit ├¬tre affich├⌐e. " & "(Le comportement 'Affichage de texte' doit ├¬tre li├⌐ ├á cette image-objet. " & "Si l'image-objet est d├⌐plac├⌐e, une alerte vous invitera ├á mettre les param├¿tres de comportement ├á jour)." & RETURN & RETURN & "M├⌐thodes publiques :" & RETURN & "* D├⌐finir le message de l'info-bulle (permet l'utilisation du caract├¿re de retour ├á la ligne)" & RETURN & "* Obtenir la r├⌐f├⌐rence du comportement" & RETURN & RETURN & "Comportements associ├⌐s :" & RETURN & "* Affichage de texte - Essentiel : doit ├¬tre li├⌐ ├á une image-objet champ ou texte couvrant le m├¬me nombre d'images." & RETURN & RETURN & "Vous pouvez trouver le comportement 'Affichage de texte' dans Palette des biblioth├¿ques, sous Contr├┤les > Affichage de texte."
  5. end
  6.  
  7. on getBehaviorTooltip me
  8.   return "Utilisable avec n'importe quel type d'acteur." & RETURN & RETURN & "Produit une info-bulle lorsque la souris survole l'image-objet." & RETURN & RETURN & "Ce comportement exige la disponibilit├⌐ du comportement 'Affichage de texte' dans une image-objet champ ou texte pour afficher les messages qu'il produit. " & "Si aucune telle image-objet n'est disponible, une alerte appara├«t (├á la programmation uniquement)." & RETURN & RETURN & "Le param├¿tre d├⌐fini pour le comportement 'Affichage de texte' associ├⌐ d├⌐termine si le message de l'info-bulle appara├«t dans une barre d'├⌐tat ou en tant qu'affichage temporaire de l'info-bulle sur l'image-objet ou ├á proximit├⌐ de cette image-objet."
  9. end
  10.  
  11. on beginSprite me
  12.   Initialize(me)
  13. end
  14.  
  15. on prepareFrame me
  16.   CheckStatus(me)
  17. end
  18.  
  19. on mouseEnter me
  20.   myStartTicks = the ticks + myDelay
  21. end
  22.  
  23. on mouseLeave me
  24.   myStartTicks = the maxinteger
  25. end
  26.  
  27. on Initialize me
  28.   mySprite = sprite(me.spriteNum)
  29.   myMember = mySprite.member
  30.   myDisplayList = []
  31.   myStartTicks = the maxinteger
  32. end
  33.  
  34. on CheckStatus me
  35.   if myStartTicks < the ticks then
  36.     if myHideFlag then
  37.       if the mouseDown then
  38.         if myDisplayFlag then
  39.           HideTip(me)
  40.         end if
  41.         exit
  42.       end if
  43.     end if
  44.     if myDisplayFlag then
  45.       exit
  46.     end if
  47.     ShowTip(me)
  48.   else
  49.     if myDisplayFlag then
  50.       HideTip(me)
  51.     end if
  52.   end if
  53. end
  54.  
  55. on ShowTip me
  56.   myDisplayFlag = 1
  57.   case myPosition of
  58.     "au centre au-dessus":
  59.       theAlignment = #bottomCenter
  60.       displayLoc = point((mySprite.left + mySprite.right) / 2, mySprite.top)
  61.     "au centre en dessous":
  62.       displayLoc = point((mySprite.left + mySprite.right) / 2, mySprite.bottom)
  63.       theAlignment = #topCenter
  64.     "en haut ├á gauche":
  65.       displayLoc = point(mySprite.left, mySprite.top)
  66.       theAlignment = #topLeft
  67.     "en haut ├á droite":
  68.       displayLoc = point(mySprite.right, mySprite.top)
  69.       theAlignment = #topright
  70.     "au centre":
  71.       centerH = (mySprite.left + mySprite.right) / 2
  72.       centerV = (mySprite.top + mySprite.bottom) / 2
  73.       displayLoc = point(centerH, centerV)
  74.       theAlignment = #center
  75.     "en bas ├á gauche":
  76.       displayLoc = point(mySprite.left, mySprite.bottom)
  77.       theAlignment = #bottomleft
  78.     "en bas ├á droite":
  79.       displayLoc = point(mySprite.right, mySprite.bottom)
  80.       theAlignment = #bottomright
  81.     "au point d'alignement":
  82.       displayLoc = mySprite.loc
  83.       theAlignment = #center
  84.     "sous la souris":
  85.       displayLoc = the mouseLoc
  86.       theAlignment = #center
  87.   end case
  88.   if not myDisplayList.count() then
  89.     EnrollDisplaySprite(me)
  90.   end if
  91.   call(#DisplayText_SetText, myDisplayList, myString, displayLoc, theAlignment)
  92. end
  93.  
  94. on HideTip me
  95.   myDisplayFlag = 0
  96.   if not myDisplayList.count() then
  97.     EnrollDisplaySprite(me)
  98.   end if
  99.   call(#DisplayText_SetText, myDisplayList, EMPTY)
  100. end
  101.  
  102. on EnrollDisplaySprite me
  103.   sendSprite(myDisplaySprite, #DisplayText_Enroll, myDisplayList)
  104.   if not myDisplayList.count() then
  105.     sendAllSprites(#DisplayText_Enroll, myDisplayList)
  106.     if not myDisplayList.count() then
  107.       ErrorAlert(me, #noValidSprites, myDisplaySprite)
  108.     else
  109.       ErrorAlert(me, #invalidSpriteNumber, myDisplaySprite)
  110.     end if
  111.   end if
  112. end
  113.  
  114. on GetDisplaySprite me
  115.   displayScriptMember = the number of member "Affichage de texte"
  116.   if displayScriptMember > 0 then
  117.     displayScriptMember = member(displayScriptMember)
  118.     repeat with theSprite = 1 to the lastChannel
  119.       theScripts = sprite(theSprite).scriptList
  120.       scriptCount = theScripts.count()
  121.       repeat while scriptCount
  122.         if theScripts[scriptCount][1] = displayScriptMember then
  123.           return theSprite
  124.         end if
  125.         scriptCount = scriptCount - 1
  126.       end repeat
  127.     end repeat
  128.   end if
  129.   return the currentSpriteNum + 1
  130. end
  131.  
  132. on Tooltip_SetMessage me, theString
  133.   case ilk(theString) of
  134.     #string:
  135.     otherwise:
  136.       return #invalidTypeError
  137.   end case
  138.   myString = theString
  139. end
  140.  
  141. on Tooltip_GetReference me
  142.   return me
  143. end
  144.  
  145. on ErrorAlert me, theError, data
  146.   behaviorName = string(me)
  147.   delete word 1 of behaviorName
  148.   delete char -30001 of behaviorName
  149.   delete char -30001 of behaviorName
  150.   case data.ilk of
  151.     #void:
  152.       data = "<void>"
  153.     #symbol:
  154.       data = "#" & data
  155.   end case
  156.   case theError of
  157.     #invalidSpriteNumber:
  158.       if the runMode = "Author" then
  159.         message = substituteStrings(me, "L'image-objet ^3 n'a pas r├⌐pondu ├á un appel #DisplayText. " & "Une autre image-objet va ├¬tre utilis├⌐e. " & "Veuillez ouvrir la bo├«te de dialogue Param├¿tres du comportement et choisir l'image-objet devant servir ├á afficher le message d'info-bulle.", ["^0": the frame, "^1": me.spriteNum, "^2": behaviorName, "^3": data])
  160.       end if
  161.     #noValidSprites:
  162.       if the runMode = "Author" then
  163.         message = substituteStrings(me, "Erreur de comportement : Image ^0, Image-objet ^1" & RETURN & "Comportement ^2" & RETURN & "Aucune image-objet n'a r├⌐pondu ├á un appel #DisplayText." & RETURN & "V├⌐rifiez que le comportement '^3' est li├⌐ ├á un champ ou texte situ├⌐ dans les m├¬mes images que l'image-objet ^1.", ["^0": the frame, "^1": me.spriteNum, "^2": behaviorName, "^3": "Affichage de texte"])
  164.       end if
  165.   end case
  166. end
  167.  
  168. on substituteStrings me, parentString, childStringList
  169.   i = childStringList.count()
  170.   repeat while i
  171.     tempString = EMPTY
  172.     dummyString = childStringList.getPropAt(i)
  173.     replacement = childStringList[i]
  174.     lengthAdjust = dummyString.char.count - 1
  175.     repeat while 1
  176.       position = offset(dummyString, parentString)
  177.       if not position then
  178.         parentString = tempString & parentString
  179.         exit repeat
  180.         next repeat
  181.       end if
  182.       if position <> 1 then
  183.         tempString = tempString & parentString.char[1..position - 1]
  184.       end if
  185.       tempString = tempString & replacement
  186.       delete me.char[1..position + lengthAdjust]
  187.     end repeat
  188.     i = i - 1
  189.   end repeat
  190.   return parentString
  191. end
  192.  
  193. on isOKToAttach me, aSpriteType
  194.   return aSpriteType = #graphic
  195. end
  196.  
  197. on getPropertyDescriptionList me
  198.   displaySprite = GetDisplaySprite(me)
  199.   return [#myString: [#comment: "Texte de l'info-bulle", #format: #string, #default: "Ins├⌐rez une ligne d'info-bulle dans cet espace"], #myDelay: [#comment: "D├⌐lai avant l'affichage de l'info-bulle (battements) :", #format: #integer, #range: [#min: 0, #max: 120], #default: 30], #myHideFlag: [#comment: "Masquer l'info-bulle lors d'un clic sur l'image-objet ?", #format: #boolean, #default: 1], #myPosition: [#comment: "Position de l'info-bulle p/r ├á l'image-objet (voir notes) :", #format: #string, #range: ["au centre au-dessus", "en haut ├á gauche", "en haut ├á droite", "au centre", "en bas ├á gauche", "en bas ├á droite", "au centre en dessous", "au point d'alignement", "sous la souris"], #default: "au centre"], #myDisplaySprite: [#comment: "Image-objet dans laquelle l'info-bulle doit ├¬tre affich├⌐e :", #format: #integer, #range: [#min: 1, #max: the lastChannel], #default: displaySprite]]
  200. end
  201.