Cross-fade Transition

From Directorforum Collaboration Wiki

Jump to: navigation, search

Contents

Description

A Cross-fade Transition behavior.

Director MX 2004, Director 11

Example


Files

Lingo

-- AstrO Controls :: Crossfade
-- version 1.0-25Sep08
-- Created by Toby De Ieso
-- Modified by Toby De Ieso
 
 
property pSprite
property pMember
property pFadeLength
property pFadeStartTime
property pFadeEndTime
property pFadeMode
property pContinueMethod
property pClickToSkip
property pActive
 
 
on isOKToAttach me, tType, tSpriteNum
  tReturn = FALSE
  if tType = #graphic then tReturn = (sprite(tSpriteNum).member.type = #bitmap)
  return tReturn
end
 
 
on getPropertyDescriptionList me, descriptionList
  descriptionList = [:]
  descriptionList.addProp(#pFadeLength, [#comment:"Fade length (milliseconds):",#format:#integer,#default:500])
  descriptionList.addProp(#pFadeMode, [#comment:"Fade mode:",#format:#symbol,#default:#blend,#range:[#blend,#alpha]])
  descriptionList.addProp(#pContinueMethod, [#comment:"Continue method:",#format:#symbol,#default:#goNextFrame,#range:[#goNextFrame,#stayOnFrame]])
  descriptionList.addProp(#pClickToSkip, [#comment:"Enable click to skip:",#format:#boolean,#default:TRUE])
  return descriptionList
end
 
 
on beginSprite me
  pSprite = sprite(me.spriteNum)
  pMember = pSprite.member
 
  pMember.image = _player.activeWindow.image.duplicate()
  pMember.regPoint = point(0,0)
  pSprite.loc = point(0,0)
  pSprite.blend = 100
  pSprite.locZ = 1000
 
  pFadeStartTime = VOID
  pFadeEndTime = VOID
 
  if pFadeMode = #alpha then
    pMember.image.setAlpha(255)
    pMember.image.useAlpha = TRUE
  end if
 
  pActive = TRUE
end
 
 
on finishFade(me)
  pActive = FALSE
  pSprite.visible = FALSE
end
 
 
on endSprite me
  pMember.image = image(1,1,32)
  pSprite.blend = 100
  pSprite.locZ = me.spriteNum
  pSprite.visible = TRUE
end
 
 
on enterFrame me
  if pActive then
    tCuTime = _system.milliseconds
    if voidP(pFadeStartTime) then
      pFadeStartTime = tCuTime
      pFadeEndTime = pFadeStartTime + pFadeLength
    end if
    case pFadeMode of
      #blend: pSprite.blend = min(100,max(0,(((pFadeEndTime - tCuTime) / (pFadeEndTime - pFadeStartTime).float) * 100).integer))
      #alpha: pMember.image.setAlpha(min(255,max(0,(((pFadeEndTime - tCuTime) / (pFadeEndTime - pFadeStartTime).float) * 255).integer)))
    end case
  end if
end
 
 
on exitFrame me
  if pActive then
    if _system.milliseconds < pFadeEndTime then
      _movie.go(_movie.frame)
    else
      me.finishFade()
      if pContinueMethod = #stayOnFrame then _movie.go(_movie.frame)
    end if
  else
    if pContinueMethod = #stayOnFrame then _movie.go(_movie.frame)
  end if
end 
 
 
on mouseUp me
  if pClickToSkip then me.finishFade()
end
Personal tools