hey I'm in the process of experimenting with self containment.

here is a first draft for a scrollbar script
i am posting it in hopes that someone will find it usefull.

there is still somework to do on it but it's more than useable right now. the main 
thing that's 
wrong with it is it doesn't work right when lines are wrapped 

all you need to do to use it is

script("bay city 
scroller").new(tracksprite,littletrackbuttonsprite,upbuttonsprite,downbuttonsprite,texttoscrollspri
te))

example

script("bay city 
scroller").new(sprite(1),sprite(2),sprite(3),sprite(4),sprite(5))


please let me know if this is usefull do you thanks

If so I will post more in the future




the script is beloiw,  it's script type should be a PARENT SCRIPT for you to use it






-------------------------------------------------------------------------------------------------------------------------


global scrollbarlist
property scroll_track
property scroll_trackwheel
property scroll_buttons
property scroll_text
property scroll_limit
property scroll_maxscroll
property myposinscroll

property garbage_list

on 
new(me,a_track,a_trackwheel,upbutton,downbutton,the_te
xt)
  if voidp(scrollbarlist) then
    scrollbarlist=[]
  end if
  me.set_track(a_track)
  me.set_wheel(a_trackwheel)
  me.set_buttons(upbutton,downbutton)
  me.set_text(the_text.member)
  me.set_limit()
  me.set_maxscroll(the_text)
  scrollbarlist.add(me)
  me.myposinscroll=scrollbarlist.findpos(me)
  me.setup()
  return(me)
end new

on setup(me)
  me.garbage_list=[]
  script_text="global scrollbarlist" & return & 
"property obj" & return & return & "on new(me)" & 
return & "return(me)" & return & "end new" & return & 
return & "on mousedown(me)" & return & 
"scrollbarlist[" & (me.myposinscroll).string & 
"].click_track(the mousev)" & return & "end mousedown" 
& return & return & "on endsprite(me)" & return & 
"scrollbarlist[" & (me.myposinscroll).string & 
"].cleanup_garbage()" & return & "end endsprite"
  newscript=new(#script)
  me.garbage_list.add(newscript)
  newscript.name="track behavior"
  newscript.scripttype=#score
  newscript.scripttext=script_text
  me.get_track().scriptinstancelist.add(script("track 
behavior").new())
  script_text="global scrollbarlist" & return & 
"property obj" & return & return & "on new(me)" & 
return & "return(me)" & return & "end new" & return & 
return & "on mousedown(me)" & return & 
"scrollbarlist[" & (me.myposinscroll).string & 
"].click_trackwheel()" & return & "end mousedown" & 
return & return & "on mouseup(me)" & return & 
"scrollbarlist[" & (me.myposinscroll).string & 
"].release_trackwheel()" & return & "end mouseup" & 
return & return & "on mouseupoutside(me)" & return & 
"me.mouseup()" & return & "end mouseupoutside"  
  newscript=new(#script)
  me.garbage_list.add(newscript)
  newscript.name="trackwheel behavior"
  newscript.scripttype=#score
  newscript.scripttext=script_text
  
me.get_wheel().scriptinstancelist.add(script("trackwhe
el behavior").new())
  script_text="global scrollbarlist" & return & 
"property dir" & return & "property flag" & return & 
return & "on new(me,adir,someflag)" & return & 
"dir=adir" & return & "flag=someflag" & return & 
"return(me)" & return & "end new" & return & return & 
"on mousedown(me)" & return & "flag=1" & return & "end 
mousedown" & return & return & "on mouseup(me)" & 
return & "flag=0" & return & "end mouseup" & return & 
return & "on mouseupoutside(me)" & return & 
"me.mouseup()" & return & "end mouseupoutside" & 
return & return & "on exitframe(me)" & return & "if 
flag then" & return & "scrollbarlist[" & 
(me.myposinscroll).string & "].click_button(" & 
"(dir).symbol" & ")" & return & "end if" & return & 
"end exitframe"
  newscript=new(#script)
  me.garbage_list.add(newscript)
  newscript.name="scroll button behavior"
  newscript.scripttype=#score
  newscript.scripttext=script_text
  
me.get_buttons(#up).scriptinstancelist.add(script("scr
oll button behavior").new(#up,0))
  
me.get_buttons(#dw).scriptinstancelist.add(script("scr
oll button behavior").new(#dw,0))  
end setup

on set_track(me,theparam)
  me.scroll_track=theparam
end set_track

on set_wheel(me,theparam)
  me.scroll_trackwheel=theparam
end set_wheel

on set_buttons(me,param1,param2)
  me.scroll_buttons=[#upparam1,#dwparam2]
end set_buttons

on set_text(me,theparam)
  me.scroll_text=theparam
end set_text

on set_limit(me)
  
me.scroll_limit=[(me.get_track().top).float+(me.get_wh
eel().height/2).float,(me.get_track().bottom).float-
(me.get_wheel().height/2).float]
end set_limit

on set_maxscroll(me,theparam)
  
me.scroll_maxscroll=me.get_text().linepostolocv(me.get
_text().line.count)-theparam.height
end set_maxscroll

on get_track(me)
  return(me.scroll_track)
end get_track

on get_wheel(me)
  return(me.scroll_trackwheel)
end get_wheel

on get_buttons(me,theparam)
  if not voidp(theparam) then
    return(me.scroll_buttons[theparam])
  else
    return(me.scroll_buttons)
  end if
end get_buttons

on get_text(me)
  return(me.scroll_text)
end get_text

on get_limit(me,theparam)
  if not voidp(theparam) then
    return(me.scroll_limit[theparam])
  else
    return(me.scroll_limit)
  end if
end get_limit

on get_maxscroll(me)
  return(me.scroll_maxscroll)
end get_maxscroll

on click_track(me,thev)
  if thev<me.get_limit(1) then
    me.get_wheel().locv=me.get_limit(1) 
    me.get_text().scrolltop=0
  else if thev>me.get_limit(2) then
    me.get_wheel().locv=me.get_limit(2) 
    me.get_text().scrolltop=me.get_maxscroll()
  else
    me.get_wheel().locv=thev 
    totallimit=(me.get_limit(2)-me.get_limit(1)).float
    percent=(me.get_wheel().locv-
me.get_limit(1))/100.00
    percentscroll=(percent*me.get_maxscroll())
    me.get_text().scrolltop=percentscroll
  end if
end click_track

on click_trackwheel(me)
  
timeout((me.get_wheel()).string).new(1,#trackwheel_fol
lowmouse,me)
end click_trackwheel

on trackwheel_followmouse(me)
  if the mousev<me.get_limit(1) then
    me.get_wheel().locv=me.get_limit(1)
    me.get_text().scrolltop=0
  else if the mousev>me.get_limit(2) then
    me.get_wheel().locv=me.get_limit(2)
    me.get_text().scrolltop=me.get_maxscroll()
  else
    me.get_wheel().locv=the mousev  
    totallimit=(me.get_limit(2)-me.get_limit(1)).float
    percent=(me.get_wheel().locv-
me.get_limit(1))/100.00
    percentscroll=(percent*me.get_maxscroll())
    me.get_text().scrolltop=percentscroll
  end if
end trackwheel_followmouse

on release_trackwheel(me)
  timeout((me.get_wheel()).string).forget()
end trackwheel

on click_button(me,theparam)
  if theparam=#up then
    if me.get_text().scrolltop>0 then
      me.get_text().scrolltop=me.get_text().scrolltop-
10
      percent=me.get_text().scrolltop * 100/ 
me.get_maxscroll()
      lengthofit=me.get_limit(2)-me.get_limit(1)
      percentile=lengthofit*percent/100
      me.get_wheel().locv=me.get_limit(1)+percentile
    else
      me.get_text().scrolltop=0
      me.get_wheel().locv=me.get_limit(1)
    end if    
  else if theparam=#dw then
    if me.get_text().scrolltop<me.get_maxscroll() then
      
me.get_text().scrolltop=me.get_text().scrolltop+10
      percent=me.get_text().scrolltop * 100/ 
me.get_maxscroll()
      lengthofit=me.get_limit(2)-me.get_limit(1)
      percentile=lengthofit*percent/100
      me.get_wheel().locv=me.get_limit(1)+percentile
    else
      me.get_text().scrolltop=me.get_maxscroll()
      me.get_wheel().locv=me.get_limit(2)
    end if    
    
  end if
end click_button

on button_isclicked(me)
  
end button_isclicked

on cleanup_garbage(me)
  me.get_text().scrolltop=0
  repeat with iter=me.garbage_list.count down to 1
    me.garbage_list[iter].erase()
  end repeat
  scrollbarlist=void
end cleanup_garbage




_____________________________________________________




[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