At 1:41 PM -0800 11/29/00, Irv Kalb wrote:
>At 3:12 PM -0500 11/29/00, Conrad Ayala wrote:
>>Is this suggestion for Director 8?
>
>
>Yes. Do you need a solution for an earlier version?
>
>>
>>At 12:04 PM 11/29/00 -0800, you wrote:
>>>At 12:54 PM -0500 11/29/00, Conrad Ayala wrote:
>>>>Does anyone know how to fade a sound channel to a specific level adn keep
>>>>it there? For example, fade sound channel 3 to volume level 100 adn it
>>>>stays there until told otherwise.
>>>>
>>>
>>>
>>>Check out:
>>>
>>> sound(channelNum.fadeTo(volume{, milliseconds})
>>>
>>>listed under "fadeTo()" in the Using Lingo manual.
>>>
Completely untested, but the basic idea is right. Put the following
code into a parent script and name it "Fade" (it will handle fading
up or down):
-- Fade parent script
property pSoundChannelNum -- sound channel number
property pEndVolume -- ending desired volume
property pnVolumeUnitsPerFrame -- number of volume units to go up or
down each frame
property psymFadeDirection -- #down or #up
on new me, soundChannelNum, endVolume, nVolumeUnitsPerFrame
pSoundChannelNum = soundChannelNum
pEndVolume = endVolume
pnVolumeUnitsPerFrame = nVolumeUnitsPerFrame
if the volume of sound soundChannelNum > pEndVolume then
psymFadeDirection = #down
pnVolumeUnitsPerFrame = -nVolumeUnitsPerFrame
else
psymFadeDirection = #up
pnVolumeUnitsPerFrame = nVolumeUnitsPerFrame
end if
-- This puts this object into the actor list,
-- it will get called on the stepFrame handler every frame
add(the actorList, me)
-- no need to return me, object reference is held in the actor list
end
-- Every time we are called, adjust the volume in the appropriate direction
-- when we are done fading, delete this object from the actorlist
on stepFrame me
potentialNewVolume = the volume of sound pSoundChannelNum +
pnVolumeUnitsPerFrame
if psymFadeDirection = #down then
if potentialNewVolume <= pEndVolume then
the volume of sound pSoundChannelNum = pEndVolume
deleteOne(the actorList, me) -- bye!
else
the volume of sound pSoundChannelNum = potentialNewVolume
end if
else -- fading up
if potentialNewVolume >= pEndVolume then
the volume of sound pSoundChannelNum = pEndVolume
deleteOne(the actorList, me) -- bye!
else
the volume of sound pSoundChannelNum = potentialNewVolume
end if
end if
end
Now whenever you want to fade a sound channel, just do this:
new(script "Fade", soundChannelNum, endVolume, nVolumeUnitsPerFrame)
for example, to fade sound channel 1 down to 100, moving 3 sound
units per frame:
new(script "Fade", 1, 100, 3)
Good luck,
Irv
--
Lingo / Director / Shockwave development for all occasions.
(Over two millions lines of Lingo code served!)
[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/LUJ/lingo-l.cgi To post messages to the list,
email [EMAIL PROTECTED] (Problems, email [EMAIL PROTECTED])
Lingo-L is for learning and helping with programming Lingo. Thanks!]