There is a problem in certain versions of Windows where CD Pro Xtra cannot 
set the volume on some Windows machines.  The other Xtra you use apparently 
uses a different, more recent, technique, that does control the volume.

At 12:53 PM 6/25/02 +0100, Dan Sheridan wrote:


>Hi List,
>
>  Has anyone ever created a volume dial to use with the cd pro xtra? Im
>trying to create one, at the moment I have a horizontal slider with the
>following lingo which works fine on both PC / MAC
>
>on slippy me
>
>   -- get the limits of the slide
>   offset = sprite(markSprite).member.regPoint.locV + 1
>   put the rect of sprite barSprite + rect(0, offset, 0, -offset) into
>barRect
>   put (the bottom of barRect - the top of barRect) into barLength
>   put the bottom of barRect into maxV
>   --  put maxV
>   put the top of barRect into minV
>   --  put minV
>   repeat while the stillDown
>     put min(max(the mouseV,minV),maxV) into v
>     --    put v -- limit slide
>     set the locV of sprite markSprite = v
>     put float(maxV-v)/(maxV-minV) into amt -- percentage
>     if the platform = "windows,32" then
>       baSetVolume("cd", integer(100*amt))
>     else
>       SetVolume(cd, integer(100*amt))
>     end if
>
>     updateStage
>   end repeat
>
>End
>
>However for the volume dial im having a bit of difficulty, I downloaded a
>behaviour from media macros that is to control the sound channel in director
>- can I modify this to work with the CD Pro xtra.... If so can you lend a
>hand please - as im a bit unsure where the correct lingo should go, I have
>so far:
>
>
>
>-- DESCRIPTION --
>
>on getBehaviorDescription me
>   return "\
>DRAG TO ROTATE"&RETURN&RETURN&"\
>Use the mouse to drag a sprite in a circle around its regPoint."&\
>RETURN&RETURN&"\
>PERMITTED MEMBER TYPES:"&RETURN&"This behavior works best with Flash and \
>Vector Shape members, but can also be used with Bitmap, Picture and Text."&\
>RETURN&RETURN&"\
>The scroll bar of scrolling Text members does not rotate.  If attached to a
>\
>sprite with a scrolling Text member, this behavior will convert the member
>to \
>one with a fixed box size."&RETURN&RETURN&"\
>PARAMETERS: None"
>end getBehaviorDescription
>
>
>on getBehaviorTooltip me
>   return "\
>Use with Flash and Vector Shape members, and"&RETURN&"\
>also with Bitmaps, Picture and Text."&RETURN&RETURN&"\
>Use the mouse to drag a sprite in a circle"&RETURN&"\
>around its regPoint."
>end getBehaviorTooltip
>
>
>
>-- NOTES FOR DEVELOPERS --
>
>-- Basically, this behavior compares the position of the mouse when it was
>-- clicked on the sprite and its current position.  First the slope between
>-- the clickLoc and the loc of mySprite is converted to an angle.  Turn me
>-- (called on each prepareFrame) then repeates the operation for the current
>-- mouseLoc and the current loc of mySprite.  By subtracting one angle from
>the
>-- other, it knows how much the sprite should be turned from its original
>-- position.
>
>
>
>-- HISTORY --
>
>-- 14 September 1998: written for the D7 Behaviors Palette by James Newton
>-- 16 November 1998: ErrorAlert changed, made compatible with Draw Connector
>
>
>
>-- PROPERTIES --
>
>property spriteNum
>property mySprite
>property myMember
>-- error checking
>property getPDLError
>-- internal properties
>property myMouseDown
>property myPrevAngle
>property myClickAngle
>property pLowLimit, pHighLimit
>property pMarks, pClickAngle
>
>
>
>
>-- EVENT HANDLERS --
>
>on beginSprite me
>   Initialize me
>end beginSprite
>
>
>on mouseDown me
>   StartDrag me
>end mouseDown
>
>
>on prepareFrame me
>   if myMouseDown then
>     if the mouseDown then
>       Turn me
>     else
>       StopDrag me
>     end if
>   end if
>end prepareFrame
>
>
>-- CUSTOM HANDLERS --
>
>on Initialize me -- sent by beginSprite
>   mySprite = sprite(me.spriteNum)
>   myMember  = mySprite.member
>   memberType = myMember.type
>   range = (pHighLimit - pLowLimit) * 1.0000
>   pClickAngle = range/(pMarks-1)
>   if PermittedMemberTypes(me).getPos(memberType) then
>     case memberType of
>       #text:
>         if myMember.boxType = #scroll then
>           ErrorAlert (me, #scrollingText, myMember)
>           myMember.boxType = #fixed
>         end if
>       #vectorShape, #flash:
>         mySprite.viewPoint  = point (0, 0)
>         mySprite.originMode = #center
>         mySprite.scaleMode  = #autoSize
>     end case
>   else
>     -- Error checking
>     ErrorAlert (me, #invalidMemberType, memberType)
>   end if
>end Initialize
>
>
>on Forwarded_mouseDown me
>   -- The mouseclick was intercepted by a different behavior and forwarded
>   if not myMouseDown then
>     mouseDown me
>     return myMouseDown
>   end if
>end mouseUp
>
>
>on StartDrag me -- sent by mouseDown
>   if sprite (spriteNum).ink = 8 then
>     -- Matte ink
>     if the mouseMember <> sprite (spriteNum).member then
>       exit
>     end if
>   end if
>
>   myMouseDown  = TRUE
>   sendAllSprites #Active_Sprite, myMouseDown
>   slope        = the clickLoc - mySprite.loc
>   myClickAngle = GetAngle (me, slope)
>   myPrevAngle  = mySprite.rotation
>end StartDrag
>
>
>on StopDrag me
>   myMouseDown = FALSE
>   sendAllSprites #Active_Sprite, myMouseDown
>end StopDrag
>
>
>on Turn me -- sent by prepareFrame
>   slope     = the mouseLoc - mySprite.loc
>   newAngle  = myPrevAngle + getAngle (me, slope) - myClickAngle
>   if newAngle < 0 then
>     newAngle = newAngle + 360
>   end if
>   newAngle = newAngle mod 360
>   if newAngle > pLowLimit and newAngle < pHighLimit then
>     whichClick = integer(newAngle/pClickAngle)
>     whichClick = baSetVolume ("cd", + 10)
>     newAngle = 0 + whichClick * pClickAngle
>     mySprite.rotation = newAngle
>     --  else
>     --    put newAngle
>   end if
>end Turn
>
>
>on GetAngle me, slope -- sent by Turn
>   deltaH = slope[1]
>   deltaV = slope[2]
>   if deltaH then
>     slope = float (deltaV) / deltaH
>     angle = atan (slope)
>     if deltaH  < 0 then
>       angle = angle + pi
>     end if
>   else if deltaV > 0 then
>     angle = pi / 2
>   else if deltaV < 0 then
>     angle = (3 * pi) / 2
>   else
>     angle = 0
>   end if
>   -- Convert to degrees for .rotation
>   angle = (angle * 180) / pi
>
>   return angle
>end GetAngle
>
>
>
>-- ERROR CHECKING --
>
>on ErrorAlert me, theError, data
>   -- sent by getPropertyDescriptionList, Initialize
>
>   case theError of
>     #getPDLError:
>       alert "\
>Error: This behavior works only with the following members types:"&RETURN&\
>permittedMemberTypes(me)&RETURN&RETURN&"\
>Hit OK and then delete this behavior from the sprite."&RETURN&"\
>For more information on deleting Behaviors, see the Help system."
>       if the optionDown then
>         return \
>  [ \
>  #getPDLError: \
>  [ \
>   #comment: "ERROR:  Wrong member type.  Click 'Cancel'.", \
>   #format:  #string, \
>   #range:   [""], \
>   #default:  "" \
>  ] \
>]
>       end if
>
>     otherwise
>       -- Determine the behavior's name
>       behaviorName = string (me)
>       delete word 1 of behaviorName
>       delete the last word of behaviorName
>       delete the last word of behaviorName
>       -- Convert #data to useful value
>       case data.ilk of
>         #void: data = "<void>"
>         #symbol: data = "#"&data
>       end case
>
>       case theError of
>         #invalidMemberType:
>           alert "\
>BEHAVIOR ERROR: Frame "&the frame&", Sprite "&me.spriteNum&RETURN&RETURN&"\
>Behavior "&behaviorName&" only functions with the following member types:"&\
>RETURN&permittedMemberTypes()&RETURN&RETURN&\
>"Current type = "&data
>           halt
>
>         #scrollingText:
>           if the runMode = "Author" then
>             memberName = data.name
>             if memberName = "" then
>               memberName = string (data)
>               delete memberName.word [1]
>               delete the last char of memberName
>             else
>               memberName = QUOTE&memberName&QUOTE
>             end if
>             alert "\
>BEHAVIOR ERROR: Frame "&the frame&", Sprite "&me.spriteNum&RETURN&"\
>Behavior "&behaviorName&RETURN&RETURN&"\
>Scroll bars of Text members cannot be rotated.  The boxType of the member
>"&\
>memberName&" has been set to #fixed."
>           end if
>
>       end case
>   end case
>end ErrorAlert
>
>
>
>on getPropertyDescriptionList me
>
>   if not the currentSpriteNum then exit
>
>   -- Error check: does current sprite contain appropriate member type?
>   theMember = sprite(the currentSpriteNum).member
>   memberType = theMember.type
>   permittedTypes = PermittedMemberTypes(me)
>   if not permittedTypes.getPos(memberType) then
>     return errorAlert (me, #getPDLError, permittedTypes)
>   end if
>   set pdlist to [:]
>   addprop pdlist, #pLowLimit, [#comment:"Lowest limit", #format:#integer,
>#default:0, #range:[#min:0, #max:360]]
>   addprop pdlist, #pHighLimit, [#comment:"Highest limit", #format:#integer,
>#default:180, #range:[#min:0, #max:360]]
>   addprop pdlist, #pMarks, [#comment:"How many click marks?",
>#format:#integer, #default:8]
>   return pdlist
>end getPropertyDescriptionList
>
>
>on PermittedMemberTypes me
>   -- sent by:
>   -- getBehaviorDescription
>   -- getPropertyDescriptionList
>   -- Initialize
>   return [#bitmap, #flash, #picture, #text, #vectorShape]
>end PermittedMemberTypes
>
>
>Cheers,
>
>Dan ;)
>
>[To remove yourself from this list, or to change to digest mode, go to 
>http://www.penworks.com/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!]

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/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!]

Reply via email to