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!]