Contents
Articles
Behaviors
Books
Director News
Director Web Sites
FAQ
Games
Mailing Lists
News Groups
Project Examples
Reviews
Software
Tools
Useful Web Sites
Utilities
Xtras

Don't miss these
Simple file open/save dialog behavior
simODBCPro Xtra
Swipe Cast Members
Get Key Code
Director and Digital Video Pause
Pan QTVR Sprite
Cyclic appearing and disappearing of sprite.
Set Color properties of a vector cast member
Easy Animation
cXtraDateTimePicker
 

 

 

Behavior Direct Media Video Slider

Added on 6/10/1999

 

Compatibilities:
behavior D6_5 D7 D8 Mac PC

Required Xtras:
DirectMedia Xtra 2

This item has not yet been rated

Author: Tabuleiro (website)

This behavior is for use with the Direct Media Xtra from Tabuleiro

-- DirectMedia Xtra Time Slider


-- based on the Video Time Slider from the behavior library version 1.1
-- Control

-- requires an 'extent' cast member
-- that limits the range the slider 'slides'
-- controls the currenttime of a DirectMedia Xtra sprite,
-- if the sprite is playing the slider moves automatically



property pDuration, pMovieTime, VideoSprite

property horizontal  -- if false, vertical
property extentSprite
property hiliteMember  -- looks like the handle plus hilite graphics
-- also holds the member of handle while hilited

property tracking
property newLocH
property newLocV

property sending   -- if true, sends value when parked
property dynamic   -- if true and sending true, sends value while tracking
property style     -- [sendAllSprites, SendSprite, Call]
property addressee -- which spritenum gets the message if SendSprite or Call
property name      -- Sliders identity so messages can be traced
property notify_list -- list of sprites to receive event, only has 1 item this time

property min, max  -- the range the slider maps to
property valrange  -- the difference of max and min, set on begin
property minScreen, maxScreen -- calculated from the screen coords of the extent
property currentScreenVal -- the data point in screen coords, set in tracking
property extentlength -- in screen coords, set on begin

property CurrentVal

on getPropertyDescriptionList
  if the currentspritenum = 0 then
    set memdefault = 0
  else
    set memref = the member of sprite the currentspritenum
    set memdefault = member (the membernum of member memref + 1)
  end if
  
  
  set description = [:]
  
  addprop description, #VideoSprite, [#default: 1, #format:#integer, #comment: "Video Sprite:"]
  
  addprop description, #extentSprite, [#default: 1, #format:#integer, #comment: "Extent Sprite:"]
  
  addprop description, #hiliteMember, [#default: memdefault , #format:#graphic,#comment: "Hilite Member:"]
  
  addprop description, #horizontal, [#default: 1, #format:#boolean,#comment: "Horizontal (if not vertical):"]
  
  addprop description, #dynamic, [#default: 1, #format:#boolean,#comment: "Dynamic:"]
  
  return description
end

on getBehaviorDescription
  return "Drag to slider 'handle' to enable control of video play time.  Requires additional 'extent' member which limits the handle travel range." & RETURN & "PARAMETERS:" & RETURN & "• Video Sprite - Enter the number of sprite channel in which video is displayed." & RETURN & "• Extent Sprite -  Enter the number of sprite channel that contains the 'extent' sprite."  & RETURN & "• Hilite Member -  Member to display while handle is being dragged."  & RETURN & "• Horizontal - If set, orient extent sprite horizontally, if not set orient vertically."  & RETURN & "• Dynamic - If set, video time will be updated while handle is dragged, else when handle is released."
end

on compute_val me
  -- relies on tracking to update the currentScreenVal (different for Hor, Vert)
  set val = 0.0
  set val = float(the currentScreenVal of me) / float (the extentlength of me)
  set val = val * the valrange of me
  set val = val + the min of me
  return val
end

on send_the_val me, val
  -- sets the digital video time to the val * paramter {0 - movieduration}
  set pMovieTime = val * pDuration
  videoseek(sprite VideoSprite, pMovieTime)
  
end


on beginSprite me
  
  set pDuration = the duration of sprite VideoSprite
  
  set the min of me = 0.0
  set the max of me = 1.0
  set the sending of me = true
  
  --
  set handle = the spritenum of me
  set the tracking of me = FALSE
  set the newLocH of me = the locH of sprite handle
  set the newLocV of me = the locV of sprite handle
  
  if the horizontal of me then    
    set the newLocV of me = the locV of sprite the extentSprite of me
    set the minScreen of me = the left of sprite the extentSprite of me
    set the maxScreen of me = the right of sprite the extentSprite of me
  else -- vertical slider
    set the newLocH of me = the locH of sprite the extentSprite of me  
    set the minScreen of me = the left of sprite the extentSprite of me
    set the maxScreen of me = the right of sprite the extentSprite of me
  end if
  
--  puppetsprite handle, TRUE  -- take this out when beginSpriteAutoPuppet fixed
  
  set the locH of sprite handle to the newLocH of me
  set the locV of sprite handle to the newLocV of me
  
  set the valrange of me = the max of me - the min of me
  set the extentlength of me = the maxScreen of me - the minScreen of me
  
  if the sending of me = FALSE then  -- check for wrong input (dyn true, send false)
    set the dynamic of me = FALSE
  end if
  
  -- set CurrentVal =  compute_val()
  
end

on prepareFrame me
  -- limits motion of handle to extents of extentSprite
  -- and locks the handle to the track of the extentSprite
  
  if tracking then
    set handle = the spriteNum of me
    set extent =  the extentSprite of me
    
    if the horizontal of me then    
      set the newLocH of me = the mouseH
      set the newLocV of me = the locV of sprite extent
      if the newLocH of me < the left of sprite extent then
        set the newLocH of me = the left of sprite extent
      end if
      if the newLocH of me > the right of sprite extent then
        set the newLocH of me = the right of sprite extent
      end if
      
      set the currentScreenVal of me = the newLocH of me - the minScreen of me
      
    else -- vertical slider
      set the newLocH of me = the locH of sprite extent
      set the newLocV of me = the mouseV
      if the newLocV of me < the top of sprite extent then
        set the newLocV of me = the top of sprite extent
      end if
      if the newLocV of me > the bottom of sprite extent then
        set the newLocV of me = the bottom of sprite extent
      end if  
      
      set the currentScreenVal of me = the newLocV of me - the minScreen of me
      
    end if  -- if vertical
    
    set the locH of sprite handle to the newLocH of me
    set the locV of sprite handle to the newLocV of me
    
    if the dynamic of me then
      send_the_val me, compute_val (me)
    end if
    
  else   --  end if tracking, control slider position by movieTime
    
    set x = float(the currenttime of sprite VideoSprite)/ float(pDuration)
    
    
    set handle = the spriteNum of me
    set extent =  the extentSprite of me
    
    if the horizontal of me then
      set ScreenX = the left of sprite extent + (x * (the right of sprite extent - the left of sprite extent))
      set the newLocH of me = screenX
      set the newLocV of me = the locV of sprite extent
      if the newLocH of me < the left of sprite extent then
        set the newLocH of me = the left of sprite extent
      end if
      if the newLocH of me > the right of sprite extent then
        set the newLocH of me = the right of sprite extent
      end if
      
      set the currentScreenVal of me = the newLocH of me - the minScreen of me
      
    else -- vertical slider
      set ScreenY = the top of sprite extent + (x * (the bottom of sprite extent - the top of sprite extent))
      set the newLocH of me = the locH of sprite extent
      set the newLocV of me = ScreenY
      if the newLocV of me < the top of sprite extent then
        set the newLocV of me = the top of sprite extent
      end if
      if the newLocV of me > the bottom of sprite extent then
        set the newLocV of me = the bottom of sprite extent
      end if  
      
      set the currentScreenVal of me = the newLocV of me - the minScreen of me
      
    end if  -- if vertical
    
    set the locH of sprite handle to the newLocH of me
    set the locV of sprite handle to the newLocV of me
    
  end if
  
  
end

on mouseDown me
  set tracking = TRUE
  set temp = the member of sprite the spritenum of me
  set the member of sprite the spritenum of me = member the hiliteMember of me
  set the hiliteMember of me = temp
end

on mouseUp me
  set tracking = FALSE
  set temp = the member of sprite the spritenum of me
  set the member of sprite the spritenum of me = member the hiliteMember of me
  set the hiliteMember of me = temp
  
  if the sending of me then
    set x = compute_val (me)
    send_the_val me, x
  end if
  
end

on mouseUpOutside me
  set tracking = FALSE
  set temp = the member of sprite the spritenum of me
  set the member of sprite the spritenum of me = member the hiliteMember of me
  set the hiliteMember of me = temp
  if the sending of me then
    set x = compute_val (me)
    send_the_val me, x
  end if
end

 


Contact

MMI
36 South Court Sq
Suite 300
Newnan, GA 30263
USA

Send e-mail