home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 January / 01_02.iso / bonus / matrix / Install Matrix Screen Saver.exe / Install Matrix Screen Saver.dcr / 00019_Fade In-Out.ls < prev    next >
Encoding:
Text File  |  1999-01-26  |  5.7 KB  |  194 lines

  1. property pSprite, pStart, pActive, pCompleteCycles, pFadeDiff, pFaded, pAuto, pFadeMax, pFadeMin, pCycles, pPeriodBase, pPeriod
  2.  
  3. on getBehaviorDescription
  4.   vDesc = "FADE IN/OUT" & RETURN & RETURN
  5.   vDesc = vDesc & "Gives the appearance of a sprite fading in or out."
  6.   vDesc = vDesc && "Can be used with text, bitmap, animated GIF, vector"
  7.   vDesc = vDesc && "shapes, and Shockwave Flash sprites."
  8.   vDesc = vDesc && "Choose whether the sprite should first appear"
  9.   vDesc = vDesc && "at maximum (faded in) or minimum (faded out) values,"
  10.   vDesc = vDesc && "when the fading should start, the minimum and maximum"
  11.   vDesc = vDesc && "fade values, the number of times it should"
  12.   vDesc = vDesc && "fade, and how fast it should fade."
  13.   vDesc = vDesc && "The fade can be activated automatically in the first frame,"
  14.   vDesc = vDesc && "by a click on the sprite, or by sending the sprite a"
  15.   vDesc = vDesc && "mFadeActivate message. Set the number of cycles to -1"
  16.   vDesc = vDesc && "if you want an endless loop, or 0 if the fade should"
  17.   vDesc = vDesc && "happen only once." & RETURN
  18.   vDesc = vDesc & "PARAMETERS:" & RETURN
  19.   vDesc = vDesc & " - Is sprite faded in or out at beginning" & RETURN
  20.   vDesc = vDesc & " - Fade activation (automatic, click, mezsage)" & RETURN
  21.   vDesc = vDesc & " - Maximum fade value" & RETURN
  22.   vDesc = vDesc & " - Minimum fade value" & RETURN
  23.   vDesc = vDesc & " - Fade cycles" & RETURN
  24.   vDesc = vDesc & " - Fade speed (seconds)" & RETURN
  25.   return vDesc
  26. end
  27.  
  28. on getBehaviorTooltip
  29.   vTip = "[ADVANCED]" & RETURN & RETURN
  30.   vTip = vTip & "Creates draggable sprite that moves along a straight line" & RETURN
  31.   vTip = vTip & "Place a sprite at one end of the line it should be dragged" & RETURN
  32.   vTip = vTip & "along, set parameters to determine the other end of the line," & RETURN
  33.   vTip = vTip & "and where the draggable sprite should first appear." & RETURN
  34.   vTip = vTip & "The behavior can report its position along the line as a " & RETURN
  35.   vTip = vTip & "message to another sprite."
  36.   return vTip
  37. end
  38.  
  39. on beginSprite me
  40.   mInitialize(me)
  41. end
  42.  
  43. on prepareFrame me
  44.   mUpdate(me)
  45. end
  46.  
  47. on mouseUp me
  48.   if pAuto = #click then
  49.     mActivate(me)
  50.   end if
  51. end
  52.  
  53. on mInitialize me
  54.   pSprite = sprite(me.spriteNum)
  55.   pActive = #off
  56.   pCompleteCycles = 0.5
  57.   pPeriod = pPeriodBase * 1000
  58.   if pFadeMax < pFadeMin then
  59.     vMax = pFadeMax
  60.     pFadeMax = pFadeMin
  61.     pFadeMin = vMax
  62.   end if
  63.   pFadeDiff = pFadeMax - pFadeMin
  64.   if pFaded = #in then
  65.     pSprite.blend = pFadeMin
  66.   else
  67.     pSprite.blend = pFadeMax
  68.   end if
  69.   if pAuto = #automatic then
  70.     mActivate(me)
  71.   end if
  72. end
  73.  
  74. on mUpdate me
  75.   if pActive <> #off then
  76.     vMillis = the milliSeconds
  77.     vElapsed = vMillis - pStart
  78.     if vElapsed >= pPeriod then
  79.       case pActive of
  80.         #in:
  81.           pSprite.blend = pFadeMax
  82.         #out:
  83.           pSprite.blend = pFadeMin
  84.       end case
  85.       pActive = #off
  86.       mCheckCycle(me)
  87.     else
  88.       vFadeDiff = integer(pFadeDiff * vElapsed / pPeriod)
  89.       case pActive of
  90.         #in:
  91.           pSprite.blend = pFadeMin + vFadeDiff
  92.         #out:
  93.           pSprite.blend = pFadeMax - vFadeDiff
  94.       end case
  95.     end if
  96.   end if
  97. end
  98.  
  99. on mActivate me
  100.   if pFadeDiff then
  101.     case pFaded of
  102.       #in:
  103.         mFadeIn(me)
  104.       #out:
  105.         mFadeOut(me)
  106.     end case
  107.   end if
  108. end
  109.  
  110. on mCheckCycle me
  111.   vContinue = 0
  112.   case pCycles of
  113.     (-1):
  114.       vContinue = 1
  115.     0:
  116.       vContinue = 0
  117.     otherwise:
  118.       pCompleteCycles = pCompleteCycles + 0.5
  119.       if integer(pCompleteCycles) <= pCycles then
  120.         vContinue = 1
  121.       end if
  122.   end case
  123.   if vContinue then
  124.     if pSprite.blend = pFadeMax then
  125.       mFadeOut(me)
  126.     else
  127.       mFadeIn(me)
  128.     end if
  129.   end if
  130. end
  131.  
  132. on mFadeIn me
  133.   mFade(me, #in)
  134. end
  135.  
  136. on mFadeOut me, vTarget
  137.   mFade(me, #out)
  138. end
  139.  
  140. on mFade me, vInOut
  141.   pActive = vInOut
  142.   pStart = the milliSeconds
  143. end
  144.  
  145. on mErrorAlert me, vError, vData
  146.   vBehaviorname = string(me)
  147.   delete word 1 of vBehaviorname
  148.   delete char -30001 of vBehaviorname
  149.   delete char -30001 of vBehaviorname
  150.   case vData.ilk of
  151.     #void:
  152.       vData = "<void>"
  153.     #symbol:
  154.       vData = "#" & vData
  155.   end case
  156.   case vError of
  157.     #getPDLError:
  158.       beep()
  159.       return [#getPDLError: [#comment: "CANCEL: Sprite MUST be one of the following member types:" & RETURN & vData, #format: #symbol, #range: [#Cancel], #default: #Cancel]]
  160.     #runTimeError:
  161.       alert("CANCEL: Sprite MUST be one of the following member types:" & RETURN & mPermittedMemberTypes())
  162.   end case
  163. end
  164.  
  165. on mFadeActivate me
  166.   if pAuto = #message then
  167.     mActivate(me)
  168.   end if
  169. end
  170.  
  171. on getPropertyDescriptionList me
  172.   if not (the currentSpriteNum) then
  173.     exit
  174.   end if
  175.   vMember = sprite(the currentSpriteNum).member
  176.   vMemberType = vMember.type
  177.   vPermitted = mPermittedMemberTypes()
  178.   if not vPermitted.getPos(vMemberType) then
  179.     return mErrorAlert(me, #getPDLError, vPermitted)
  180.   end if
  181.   vPDList = [:]
  182.   setaProp(vPDList, #pFaded, [#comment: "Fade in or out?", #format: #symbol, #default: #in, #range: [#in, #out]])
  183.   setaProp(vPDList, #pFadeMax, [#comment: "Maximum Fade Value", #format: #integer, #default: 100, #range: [#min: 0, #max: 100]])
  184.   setaProp(vPDList, #pFadeMin, [#comment: "Minimum Fade Value", #format: #integer, #default: 0, #range: [#min: 0, #max: 100]])
  185.   setaProp(vPDList, #pAuto, [#comment: "Start automatically, when clicked," && "or by message?", #default: #automatic, #format: #symbol, #range: [#automatic, #click, #message]])
  186.   setaProp(vPDList, #pCycles, [#comment: "Fade cycles (0 = one" && "fade only, -1 = repeat forever)", #format: #integer, #default: 0, #range: [#min: -1, #max: 10]])
  187.   setaProp(vPDList, #pPeriodBase, [#comment: "Time period for fade (seconds)", #format: #float, #default: 2.0, #range: [#min: 0.25, #max: 15.0]])
  188.   return vPDList
  189. end
  190.  
  191. on mPermittedMemberTypes me
  192.   return [#text, #bitmap, #animgif, #vectorShape, #flash]
  193. end
  194.