Search tutorials
The scroll thumb
For the scroll thumb, just make a rectangle or square and turn it into a button. It should be the same width as the scroll track and arrow buttons. Give the button an instance name of "thumb_btn" and then press F8 again to create a movie clip with the button inside. Assign the movie clip the instance name "scroll_thumb". Also, make sure it is only present on the second and third frames, just like the arrow buttons and scroll track. Place it right below the up arrow button on the scroll track since that is the initial position of it.
To make the scroll thumb draggable and scroll the text field according to it, we'll need to add the following code. This is what we'll add to the designated functions frame:
For the scroll thumb, just make a rectangle or square and turn it into a button. It should be the same width as the scroll track and arrow buttons. Give the button an instance name of "thumb_btn" and then press F8 again to create a movie clip with the button inside. Assign the movie clip the instance name "scroll_thumb". Also, make sure it is only present on the second and third frames, just like the arrow buttons and scroll track. Place it right below the up arrow button on the scroll track since that is the initial position of it.
To make the scroll thumb draggable and scroll the text field according to it, we'll need to add the following code. This is what we'll add to the designated functions frame:
scroll_thumb.initiate = function() {
this.initiated = true;
this.min_y = this._y;
this.max_y = this.min_y + (scroll_track._height - up_arrow._height - this._height/2) + 1;
this.total_travel = Math.abs(this.max_y - this.min_y);
this.inc = Math.floor(this.total_travel/w_field.maxscroll);
}
scroll_thumb.drag = function() {
this.startDrag(false, this._x, this.min_y, this._x, this.max_y);
if (!this.org_y) {
this.org_y = this._y;
}
dragging = true;
this.onEnterFrame = whileDragging;
}
scroll_thumb.thumb_btn.onPress = function () {
scroll_thumb.drag();
}
scroll_thumb.thumb_btn.onRelease = function () {
dragging = false;
pressed = false;
still_pressed = false;
scroll_thumb.stopDrag();
scroll_thumb.onEnterFrame = null;
}
scroll_thumb.checkPos = function () {
if (this._y <%gt%> this.max_y) {
this._y = this.max_y;
} else if (this._y <%lt%> this.min_y) {
this._y = this.min_y;
}
}
function whileDragging() {
if (dragging) {
var moved = this._y - this.org_y;
if (Math.abs(moved) <%gt%>= this.inc) {
if (moved <%gt%> 0) {
pressed = 1;
} else {
pressed = -1;
}
this.org_y = this._y;
scrollIt();
if (Math.abs(this._y - this.max_y) <%lt%> 1) {
w_field.scroll = w_field.maxscroll;
} else if (Math.abs(this._y - this.min_y) <%lt%> 1) {
w_field.scroll = 1;
}
} else {
pressed = 0;
}
}
}
Also, to the existing scrollIt function we wrote earlier, we'll
insert the following right below the "w_field.scroll += pressed;"
line:
if (!dragging) {
if (w_field.scroll <%lt%>= 1) {
scroll_thumb._y = scroll_thumb.min_y;
} else if (w_field.scroll <%gt%>= w_field.maxscroll){
scroll_thumb._y = scroll_thumb.max_y;
} else {
scroll_thumb._y += scroll_thumb.inc*pressed;
scroll_thumb.checkPos();
}
}
Lastly, to first initiate the scroll thumb and to make the dragging
work perfectly, add this in the second frame above the play() action:
if (!scroll_thumb.initiated) {
scroll_thumb.initiate();
}
if (Math.abs(scroll_thumb._y - scroll_thumb.max_y) <%lt%> 1) {
w_field.scroll = w_field.maxscroll;
} else if (Math.abs(scroll_thumb._y - scroll_thumb.min_y) <%lt%> 1) {
w_field.scroll = 1;
}
I know, I know, it's a lot of code but we're almost done now. Now, the
only thing we have left to do is make the scroll track clickable as
well so that scrolling is also activated when you click somewhere on the
scroll track between either arrow button and the scroll thumb. Let's do
that!
| » Level Advanced |
|
Added: 2002-03-23 Rating: 7 Votes: 116 |
| » Author |
| I have been flashing for almost two years, first at an online learning company and now at a university. My dream is to one day work for Macromedia as an ActionScript Engineer! |
| » Download |
| Download the files used in this tutorial. |
| Download (68 kb) |
| » Forums |
| More help? Search our boards for quick answers! |
-
You must have javascript enabled in order to post comments.


Comments
There are no comments yet. Be the first to comment!