Adding the drag-scrolbar and nessary trigger. (cont)
Step 8 :
Create a new Movie Clip (the container for scroll drag mc) and name it scrollbar. On the first frame, place an instance of Movie Clip scroll drag mc at position x=0 and y=0. Give it the instance name slider. Duplicate frame 1 to frame 2 and frame 3. At frame 1 insert the action:
At frame 2 insert the following actions:
scrollvalue = getProperty ( slider, _y) / _parent.balkheight; max = _parent.windowtext.maxscroll; _parent.windowtext.scroll = int(scrollvalue*(max-1))+1;
and at frame 3 the action:
Stopping imediately at frame 1. The actions from the loop between frame 2 and frame 3 will be triggered the moment the dragbutton is pressed and held. These will continuously keep readjusting the scroll positon of the text. However, see the first action of frame 2 (getProperty ( slider, _y) / _parent.balkheight), it will be based on the Property Y-position of the instance slider (Movie Clip scroll drag mc). Now, this is why the whole system works: the actions on the drag button in scroll drag button (when dragged and held) tell Movie Clip scrollbar to loop between frame 2 and 3 when the drag button is held (which keeps setting the scroll value according to position of the slider) and stop at frame 1 once the mouse is released.
But wait, what did this script do? First, it sets a variable called scrollvalue which devides the current position of slider by the maximum position of slider (which is used for the drag-defenitions 0,0,0,../balkheight). This will look at the 'percentage' of the drag button's position, relative to the maximum dragable distance. It will result in a value between 0 and 1. After this, the textposition (scrolltext.scroll) will be reset acordingly. This is done by first getting the maximum scrollvalue scrolltext.maxscroll into a variable called max. Then the current scroll value scrolltext.scroll is recalculated. One might think that the easiest way would be: scrollvalue * max. However, the scrolldistance goes from 0 pixels to 80 pixels while the scrollvalue (line numbers) go from 1 to maximum instead of 0 to maximum. By changing max to (max - 1) + 1 we correct the calculation. By the way, the "int" is to create whole numbers like 1 and 13 and 45 instead of 1,2330 and 13,29003 and 44,99945.
Step 9 :
Create a new layer above layer click buttons in Movie Clip textMC and name it drag scroll button. Create an empty keyframe and place here an instance of scrollbar. Give it the instance name scroll. Click Control - Test Movie to test if the dragable scroll button is working. Notice that when clicking and holding the scroll up or down button the slider does not move yet, i mentioned this earlier. We'll do that in the next and last step of the scrolling part.
|» Level Intermediate|
Rating: 8 Votes: 123
|Patrick Jansen is a freelance flash-, graphic- and webdesigner. Born in Holland, currently residential in Brazil. Worked for the compagnies Lectric b.v. (www.lectric.nl) and NIC b.v. (www.notenbomer.nl).|
|Download the files used in this tutorial.|
|Download (138 kb)|
|More help? Search our boards for quick answers!|