home *** CD-ROM | disk | FTP | other *** search
Wrap
property pSprite, pStart, pActive, pCompleteCycles, pFadeDiff, pFaded, pAuto, pFadeMax, pFadeMin, pCycles, pPeriodBase, pPeriod on getBehaviorDescription vDesc = "FADE IN/OUT" & RETURN & RETURN vDesc = vDesc & "Gives the appearance of a sprite fading in or out." vDesc = vDesc && "Can be used with text, bitmap, animated GIF, vector" vDesc = vDesc && "shapes, and Shockwave Flash sprites." vDesc = vDesc && "Choose whether the sprite should first appear" vDesc = vDesc && "at maximum (faded in) or minimum (faded out) values," vDesc = vDesc && "when the fading should start, the minimum and maximum" vDesc = vDesc && "fade values, the number of times it should" vDesc = vDesc && "fade, and how fast it should fade." vDesc = vDesc && "The fade can be activated automatically in the first frame," vDesc = vDesc && "by a click on the sprite, or by sending the sprite a" vDesc = vDesc && "mFadeActivate message. Set the number of cycles to -1" vDesc = vDesc && "if you want an endless loop, or 0 if the fade should" vDesc = vDesc && "happen only once." & RETURN vDesc = vDesc & "PARAMETERS:" & RETURN vDesc = vDesc & " - Is sprite faded in or out at beginning" & RETURN vDesc = vDesc & " - Fade activation (automatic, click, mezsage)" & RETURN vDesc = vDesc & " - Maximum fade value" & RETURN vDesc = vDesc & " - Minimum fade value" & RETURN vDesc = vDesc & " - Fade cycles" & RETURN vDesc = vDesc & " - Fade speed (seconds)" & RETURN return vDesc end on getBehaviorTooltip vTip = "[ADVANCED]" & RETURN & RETURN vTip = vTip & "Creates draggable sprite that moves along a straight line" & RETURN vTip = vTip & "Place a sprite at one end of the line it should be dragged" & RETURN vTip = vTip & "along, set parameters to determine the other end of the line," & RETURN vTip = vTip & "and where the draggable sprite should first appear." & RETURN vTip = vTip & "The behavior can report its position along the line as a " & RETURN vTip = vTip & "message to another sprite." return vTip end on beginSprite me mInitialize(me) end on prepareFrame me mUpdate(me) end on mouseUp me if pAuto = #click then mActivate(me) end if end on mInitialize me pSprite = sprite(me.spriteNum) pActive = #off pCompleteCycles = 0.5 pPeriod = pPeriodBase * 1000 if pFadeMax < pFadeMin then vMax = pFadeMax pFadeMax = pFadeMin pFadeMin = vMax end if pFadeDiff = pFadeMax - pFadeMin if pFaded = #in then pSprite.blend = pFadeMin else pSprite.blend = pFadeMax end if if pAuto = #automatic then mActivate(me) end if end on mUpdate me if pActive <> #off then vMillis = the milliSeconds vElapsed = vMillis - pStart if vElapsed >= pPeriod then case pActive of #in: pSprite.blend = pFadeMax #out: pSprite.blend = pFadeMin end case pActive = #off mCheckCycle(me) else vFadeDiff = integer(pFadeDiff * vElapsed / pPeriod) case pActive of #in: pSprite.blend = pFadeMin + vFadeDiff #out: pSprite.blend = pFadeMax - vFadeDiff end case end if end if end on mActivate me if pFadeDiff then case pFaded of #in: mFadeIn(me) #out: mFadeOut(me) end case end if end on mCheckCycle me vContinue = 0 case pCycles of (-1): vContinue = 1 0: vContinue = 0 otherwise: pCompleteCycles = pCompleteCycles + 0.5 if integer(pCompleteCycles) <= pCycles then vContinue = 1 end if end case if vContinue then if pSprite.blend = pFadeMax then mFadeOut(me) else mFadeIn(me) end if end if end on mFadeIn me mFade(me, #in) end on mFadeOut me, vTarget mFade(me, #out) end on mFade me, vInOut pActive = vInOut pStart = the milliSeconds end on mErrorAlert me, vError, vData vBehaviorname = string(me) delete word 1 of vBehaviorname delete char -30001 of vBehaviorname delete char -30001 of vBehaviorname case vData.ilk of #void: vData = "<void>" #symbol: vData = "#" & vData end case case vError of #getPDLError: beep() return [#getPDLError: [#comment: "CANCEL: Sprite MUST be one of the following member types:" & RETURN & vData, #format: #symbol, #range: [#Cancel], #default: #Cancel]] #runTimeError: alert("CANCEL: Sprite MUST be one of the following member types:" & RETURN & mPermittedMemberTypes()) end case end on mFadeActivate me if pAuto = #message then mActivate(me) end if end on getPropertyDescriptionList me if not (the currentSpriteNum) then exit end if vMember = sprite(the currentSpriteNum).member vMemberType = vMember.type vPermitted = mPermittedMemberTypes() if not vPermitted.getPos(vMemberType) then return mErrorAlert(me, #getPDLError, vPermitted) end if vPDList = [:] setaProp(vPDList, #pFaded, [#comment: "Fade in or out?", #format: #symbol, #default: #in, #range: [#in, #out]]) setaProp(vPDList, #pFadeMax, [#comment: "Maximum Fade Value", #format: #integer, #default: 100, #range: [#min: 0, #max: 100]]) setaProp(vPDList, #pFadeMin, [#comment: "Minimum Fade Value", #format: #integer, #default: 0, #range: [#min: 0, #max: 100]]) setaProp(vPDList, #pAuto, [#comment: "Start automatically, when clicked," && "or by message?", #default: #automatic, #format: #symbol, #range: [#automatic, #click, #message]]) setaProp(vPDList, #pCycles, [#comment: "Fade cycles (0 = one" && "fade only, -1 = repeat forever)", #format: #integer, #default: 0, #range: [#min: -1, #max: 10]]) setaProp(vPDList, #pPeriodBase, [#comment: "Time period for fade (seconds)", #format: #float, #default: 2.0, #range: [#min: 0.25, #max: 15.0]]) return vPDList end on mPermittedMemberTypes me return [#text, #bitmap, #animgif, #vectorShape, #flash] end