// add windows scroll bar automatically - includes css style options - thanks to laco for original TextField.prototype.setText = function(s,style,size) { this.text = s; bScroll = this.maxscroll>1; if (bScroll) this.showScrollBar(style,size); return bScroll; } TextField.prototype.is8Bit = function (i) { return ((i>>8)>0) ? (i>>8)*255 : ((i>>8)<0) ? 0 : i; } TextField.prototype.luminosity = function (colour,inc) { var r = (colour>>16); var gb = colour-(r<<16); var g = gb>>8; var b = gb-(g<<8); r=this.is8Bit(r+inc);g=this.is8Bit(g+inc);b=this.is8Bit(b+inc); return ( r<<16 | g<<8 | b ) } TextField.prototype.showScrollBar = function(style,size) { // ------------------------------------------ // Defaults // ------------------------------------------ // SCROLLBAR_BUTTON_SIZE var SBS = (size) ? size : 18; // SCROLLBAR_LINE_THICKNESS var SLT = 1; // SCROLLBAR_ARROW_SIZE var SAS = SBS/3; // SCROLLBAR_ICON_COLOR var SIC = 0x000000; // SCROLLBAR_BASE_COLOR var SBC = (style.SCROLLBAR_BASE_COLOR != null) ? style.SCROLLBAR_BASE_COLOR : 0xD4D0C8; // SCROLLBAR_FACE_COLOR var SFC = (style.SCROLLBAR_FACE_COLOR != null) ? style.SCROLLBAR_FACE_COLOR : (style.SCROLLBAR_BASE_COLOR != null) ? style.SCROLLBAR_BASE_COLOR : 0xD4D0C8; // SCROLLBAR_3DLIGHT_COLOR var S3C = (style.SCROLLBAR_3DLIGHT_COLOR != null) ? style.SCROLLBAR_3DLIGHT_COLOR : (style.SCROLLBAR_BASE_COLOR != null) ? style.SCROLLBAR_BASE_COLOR : 0xD4D0C8; // SCROLLBAR_DARKSHADOW_COLOR var SDC = (style.SCROLLBAR_DARKSHADOW_COLOR != null) ? style.SCROLLBAR_DARKSHADOW_COLOR : 0x000000; // SCROLLBAR_HIGHLIGHT_COLOR var SHC = (style.SCROLLBAR_HIGHLIGHT_COLOR != null) ? style.SCROLLBAR_HIGHLIGHT_COLOR : (style.SCROLLBAR_BASE_COLOR != null) ? this.luminosity(style.SCROLLBAR_BASE_COLOR,180) : 0xffffff; // SCROLLBAR_SHADOW_COLOR var SSC = (style.SCROLLBAR_SHADOW_COLOR != null) ? style.SCROLLBAR_SHADOW_COLOR : (style.SCROLLBAR_BASE_COLOR != null) ? this.luminosity(style.SCROLLBAR_BASE_COLOR,-90) : 0x808080; // SCROLLBAR_TRACK_COLOR var STC = (style.SCROLLBAR_TRACK_COLOR != null) ? style.SCROLLBAR_TRACK_COLOR : (style.SCROLLBAR_BASE_COLOR != null) ? this.luminosity(style.SCROLLBAR_BASE_COLOR,180) : 0xD4D0C8; // ------------------------------------------ // Create container // ------------------------------------------ var m = this._parent.createEmptyMovieClip(this._name+"__SB", _z++); m._x = this._x+this._width+1; m._y = this._y; m.tf = this; // ------------------------------------------ // UP button - mouseup // ------------------------------------------ var sUp_btn_mouseup = m.createEmptyMovieClip("sUp_btn_mouseup", _z++); // Create Up state with (sUp_btn_mouseup) { // 3D Highlight beginFill(S3C,100); moveTo(0,0); lineTo(SBS,0); lineTo(SBS-SLT,SLT); lineTo(SLT,SLT); lineTo(SLT,SBS-SLT); lineTo(0,SBS); lineTo(0,0); endFill(); // Dark Shadow beginFill(SDC,100); moveTo(SBS,0); lineTo(SBS,SBS); lineTo(0,SBS); lineTo(SLT,SBS-SLT); lineTo(SBS-SLT,SBS-SLT); lineTo(SBS-SLT,SLT); lineTo(SBS,0); endFill(); // Highlight beginFill(SHC,100); moveTo(SLT,SLT); lineTo(SBS-SLT,SLT); lineTo(SBS-SLT*2,SLT*2); lineTo(SLT*2,SLT*2); lineTo(SLT*2,SBS-SLT*2); lineTo(SLT,SBS-SLT); lineTo(SLT,SLT); endFill(); // Shadow beginFill(SSC,100); moveTo(SBS-SLT,SLT); lineTo(SBS-SLT,SBS-SLT); lineTo(SLT,SBS-SLT); lineTo(SLT*2,SBS-SLT*2); lineTo(SBS-SLT*2,SBS-SLT*2); lineTo(SBS-SLT*2,SLT*2); lineTo(SBS-SLT,SLT); endFill(); // Draw Box beginFill(SFC,100); moveTo(SLT*2,SLT*2); lineTo(SBS-SLT*2,SLT*2); lineTo(SBS-SLT*2,SBS-SLT*2); lineTo(SLT*2,SBS-SLT*2); lineTo(SLT*2,SLT*2); endFill(); // Draw Icon beginFill(SIC,100); moveTo(SBS/2,SBS/2-SAS/2); lineTo(SBS/2+SAS/2,SBS/2+SAS/2); lineTo(SBS/2-SAS/2,SBS/2+SAS/2); lineTo(SBS/2,SBS/2-SAS/2); endFill(); } //events sUp_btn_mouseup.onPress = function() { sUp_btn_mousedown._visible = true; //clearInterval(m.s_int); m.s_int = setInterval(m, "scrollIt", 50, -1); } sUp_btn_mouseup.onRelease = sUp_btn_mouseup.onReleaseOutside=function () { sUp_btn_mousedown._visible = false; clearInterval(m.s_int); } // ------------------------------------------ // UP button - mousedown // ------------------------------------------ var sUp_btn_mousedown = m.createEmptyMovieClip("sUp_btn_mousedown", _z++); with (sUp_btn_mousedown) { // Draw Box beginFill(SSC,100); moveTo(0,0); lineTo(SBS,0); lineTo(SBS,SBS); lineTo(0,SBS); lineTo(0,0); endFill(); // Draw Inner Box beginFill(SFC,100); moveTo(SLT,SLT); lineTo(SBS-SLT,SLT); lineTo(SBS-SLT,SBS-SLT); lineTo(SLT,SBS-SLT); lineTo(SLT,SLT); endFill(); // Draw Icon beginFill(SIC,100); moveTo(SBS/2+SLT,SBS/2-SAS/2+SLT); lineTo(SBS/2+SAS/2+SLT,SBS/2+SAS/2+SLT); lineTo(SBS/2-SAS/2+SLT,SBS/2+SAS/2+SLT); lineTo(SBS/2+SLT,SBS/2-SAS/2+SLT); endFill(); } sUp_btn_mousedown._visible = false; // ------------------------------------------ // DOWN Button - mouseup // ------------------------------------------ var sDown_btn_mouseup = m.createEmptyMovieClip("sDown_btn_mouseup", _z++); sDown_btn_mouseup._y = this._height-SBS; with (sDown_btn_mouseup) { // 3D Highlight beginFill(S3C,100); moveTo(0,0); lineTo(SBS,0); lineTo(SBS-SLT,SLT); lineTo(SLT,SLT); lineTo(SLT,SBS-SLT); lineTo(0,SBS); lineTo(0,0); endFill(); // Dark Shadow beginFill(SDC,100); moveTo(SBS,0); lineTo(SBS,SBS); lineTo(0,SBS); lineTo(SLT,SBS-SLT); lineTo(SBS-SLT,SBS-SLT); lineTo(SBS-SLT,SLT); lineTo(SBS,0); endFill(); // Highlight beginFill(SHC,100); moveTo(SLT,SLT); lineTo(SBS-SLT,SLT); lineTo(SBS-SLT*2,SLT*2); lineTo(SLT*2,SLT*2); lineTo(SLT*2,SBS-SLT*2); lineTo(SLT,SBS-SLT); lineTo(SLT,SLT); endFill(); // Shadow beginFill(SSC,100); moveTo(SBS-SLT,SLT); lineTo(SBS-SLT,SBS-SLT); lineTo(SLT,SBS-SLT); lineTo(SLT*2,SBS-SLT*2); lineTo(SBS-SLT*2,SBS-SLT*2); lineTo(SBS-SLT*2,SLT*2); lineTo(SBS-SLT,SLT); endFill(); // Draw Box beginFill(SFC,100); moveTo(SLT*2,SLT*2); lineTo(SBS-SLT*2,SLT*2); lineTo(SBS-SLT*2,SBS-SLT*2); lineTo(SLT*2,SBS-SLT*2); lineTo(SLT*2,SLT*2); endFill(); // Draw Icon beginFill(SIC,100); moveTo(SBS/2,SBS/2+SAS/2); lineTo(SBS/2-SAS/2,SBS/2-SAS/2); lineTo(SBS/2+SAS/2,SBS/2-SAS/2); lineTo(SBS/2,SBS/2+SAS/2); endFill(); } //events sDown_btn_mouseup.onPress = function() { sDown_btn_mousedown._visible = true; //clearInterval(m.s_int); m.s_int = setInterval(m, "scrollIt", 50, 1); } sDown_btn_mouseup.onRelease = sDown_btn_mouseup.onReleaseOutside=function () { sDown_btn_mousedown._visible = false; clearInterval(m.s_int); } // ------------------------------------------ // DOWN button - mousedown // ------------------------------------------ var sDown_btn_mousedown = m.createEmptyMovieClip("sDown_btn_mousedown", _z++); sDown_btn_mousedown._y = this._height-SBS; with (sDown_btn_mousedown) { // Draw Box beginFill(SSC,100); moveTo(0,0); lineTo(SBS,0); lineTo(SBS,SBS); lineTo(0,SBS); lineTo(0,0); endFill(); // Draw Inner Box beginFill(SFC,100); moveTo(SLT,SLT); lineTo(SBS-SLT,SLT); lineTo(SBS-SLT,SBS-SLT); lineTo(SLT,SBS-SLT); lineTo(SLT,SLT); endFill(); // Draw Icon beginFill(SIC,100); moveTo(SBS/2+SLT,SBS/2+SAS/2+SLT); lineTo(SBS/2-SAS/2+SLT,SBS/2-SAS/2+SLT); lineTo(SBS/2+SAS/2+SLT,SBS/2-SAS/2+SLT); lineTo(SBS/2+SLT,SBS/2+SAS/2+SLT); endFill(); } sDown_btn_mousedown._visible = false; // ------------------------------------------ // Track // ------------------------------------------ var sTrack = m.createEmptyMovieClip("sTrack", _z++); sTrack._y = SBS; var trackHeight = this._height-(SBS*2); with (sTrack) { // Draw Box beginFill(STC,100); lineTo(SBS,0); lineTo(SBS,trackHeight); lineTo(0,trackHeight); lineTo(0,0); endFill(); } // ------------------------------------------ // Bar // ------------------------------------------ var sBar = sTrack.createEmptyMovieClip("sBar", _z++); var BarHeight = trackHeight*(this.bottomScroll/(this.bottomScroll+this.maxscroll)); with (sBar) { // 3D Highlight beginFill(S3C,100); moveTo(0,0); lineTo(SBS,0); lineTo(SBS-SLT,SLT); lineTo(SLT,SLT); lineTo(SLT,BarHeight-SLT); lineTo(0,BarHeight); lineTo(0,0); endFill(); // Dark Shadow beginFill(SDC,100); moveTo(SBS,0); lineTo(SBS,BarHeight); lineTo(0,BarHeight); lineTo(SLT,BarHeight-SLT); lineTo(SBS-SLT,BarHeight-SLT); lineTo(SBS-SLT,SLT); lineTo(SBS,0); endFill(); // Highlight beginFill(SHC,100); moveTo(SLT,SLT); lineTo(SBS-SLT,SLT); lineTo(SBS-SLT*2,SLT*2); lineTo(SLT*2,SLT*2); lineTo(SLT*2,BarHeight-SLT*2); lineTo(SLT,BarHeight-SLT); lineTo(SLT,SLT); endFill(); // Shadow beginFill(SSC,100); moveTo(SBS-SLT,SLT); lineTo(SBS-SLT,BarHeight-SLT); lineTo(SLT,BarHeight-SLT); lineTo(SLT*2,BarHeight-SLT*2); lineTo(SBS-SLT*2,BarHeight-SLT*2); lineTo(SBS-SLT*2,SLT*2); lineTo(SBS-SLT,SLT); endFill(); // Draw Box beginFill(SFC,100); moveTo(SLT*2,SLT*2); lineTo(SBS-SLT*2,SLT*2); lineTo(SBS-SLT*2,BarHeight-SLT*2); lineTo(SLT*2,BarHeight-SLT*2); lineTo(SLT*2,SLT*2); endFill(); } //events sBar.onPress = function() { this.mouseDown = true; this.startDrag(false, 0, 0, 0, trackHeight-BarHeight); this.onEnterFrame = function() { this.spos = Math.round((this._parent._parent.tf.maxscroll*this._y)/(trackHeight-BarHeight))+1; if (this.spos != this._parent._parent.tf.scroll) { this._parent._parent.tf.scroll = this.spos; } } } sBar.onRelease = sBar.onReleaseOutside = function () { this.mouseDown = false; delete this.onEnterFrame; this.stopDrag(); } // ------------------------------------------ // Scroll Function // ------------------------------------------ m.scrollIt = function(step) { if ((this.tf.scroll+step)>this.tf.maxscroll || (this.tf.scroll+step)<1) { clearInterval(this.s_int); return; } else { this.tf.scroll += step; updateAfterEvent(); } } // ------------------------------------------ // Scroll Event // ------------------------------------------ this.onScroller = function() { if (!sBar.mouseDown) sBar._y = ((this.scroll-1)/(this.maxscroll-1)) * (trackHeight-BarHeight); } } // Example MovieClip.prototype._z = 0; style1 = { SCROLLBAR_BASE_COLOR:0x0000ff } style2 = { SCROLLBAR_BASE_COLOR:0xD4D0C8, SCROLLBAR_FACE_COLOR:0xD4D0C8, SCROLLBAR_3DLIGHT_COLOR:0xD4D0C8, SCROLLBAR_DARKSHADOW_COLOR:0x000000, SCROLLBAR_HIGHLIGHT_COLOR:0xffffff, SCROLLBAR_SHADOW_COLOR:0x808080, SCROLLBAR_TRACK_COLOR:0xD4D0C8 } _root.createTextField("myTextField1",_z++,10,10,200,200); _root.myTextField1.multiline = true; _root.myTextField1.wordWrap = true; _root.myTextField1.border = true; _root.myTextField1.setText("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent libero risus, condimentum ac, sollicitudin vitae, mattis at, lacus. Suspendisse et pede id arcu convallis sagittis. Cras blandit, est nec consequat hendrerit, metus massa convallis arcu, faucibus placerat massa mi eu urna. Donec commodo sapien nec urna. Proin ultricies vehicula ante. Morbi venenatis convallis nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque at nunc sed enim scelerisque aliquam. Nam scelerisque. Nam eget risus at mi ornare luctus. Pellentesque tincidunt nibh non urna. Aenean condimentum erat nec nulla. Vivamus consequat placerat risus. Phasellus faucibus. Quisque dapibus sem id ipsum. Etiam metus leo, pharetra in, sagittis a, accumsan nec, felis. Donec ut diam. Sed sollicitudin dictum sem. \n\nEtiam sagittis. Morbi sed augue a eros aliquam hendrerit. In ultrices nulla lobortis orci. Mauris dolor eros, facilisis sed, interdum a, vulputate non, eros. Nunc gravida mauris a ipsum. Sed eget massa ut wisi egestas interdum. Proin vel erat. Donec posuere, velit sed imperdiet dapibus, pede felis euismod lectus, at aliquet elit diam quis risus. Curabitur vel neque in elit posuere tempus. Quisque congue sodales odio. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse turpis enim, tincidunt nec, gravida tempor, laoreet quis, elit. Nam lectus. Donec sit amet magna. \n\nQuisque non elit. Phasellus vitae dui sit amet odio euismod tincidunt. Morbi eget orci vitae dui tempor bibendum. Pellentesque egestas sodales arcu. Curabitur ut diam quis justo egestas ornare. Vestibulum erat magna, luctus tempus, imperdiet at, semper nec, quam. Nam sed mi non libero feugiat viverra. Phasellus laoreet, dolor a sodales tempor, lorem ipsum accumsan ipsum, ac varius orci ante id turpis. Nulla auctor lorem nec libero. Maecenas iaculis. Donec non magna. Aenean suscipit. Ut elit. Phasellus sit amet felis. Maecenas rutrum. \n\nCurabitur semper venenatis wisi. Vivamus arcu. Donec viverra erat ut orci ultricies hendrerit. Aliquam erat volutpat. Donec eu arcu sit amet libero iaculis fermentum. Aliquam sit amet velit at purus porttitor feugiat. Fusce aliquet. Praesent ut tellus. Integer ultricies dapibus diam. Nunc sed tortor. In mollis mi quis ipsum. Suspendisse at nibh a ipsum tincidunt ullamcorper. Morbi aliquam, urna sed iaculis semper, mi massa ultrices purus, sit amet ultricies est magna et ligula. Duis rutrum lacus vitae mi. In tellus arcu, vulputate eu, tempus sed, vestibulum ac, eros. Ut feugiat odio vitae odio. Fusce lacinia. \n\nNullam vulputate euismod lectus. Vivamus tincidunt interdum enim. Cras scelerisque. Sed ultrices suscipit enim. Mauris hendrerit laoreet pede. In hac habitasse platea dictumst. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Quisque tempus diam ut diam. Donec semper, libero vitae consectetuer lacinia, erat pede rutrum justo, ac imperdiet nibh dui in tellus. Pellentesque massa arcu, luctus eu, dignissim id, rhoncus vitae, ligula. Nam quam. Vivamus non libero. Nullam tincidunt suscipit elit.",style1); // _root.createTextField("myTextField2",_z++,340,10,300,400); _root.myTextField2.multiline = true; _root.myTextField2.wordWrap = true; _root.myTextField2.setText("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent libero risus, condimentum ac, sollicitudin vitae, mattis at, lacus. Suspendisse et pede id arcu convallis sagittis. Cras blandit, est nec consequat hendrerit, metus massa convallis arcu, faucibus placerat massa mi eu urna. Donec commodo sapien nec urna. Proin ultricies vehicula ante. Morbi venenatis convallis nunc. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Quisque at nunc sed enim scelerisque aliquam. Nam scelerisque. Nam eget risus at mi ornare luctus. Pellentesque tincidunt nibh non urna. Aenean condimentum erat nec nulla. Vivamus consequat placerat risus. Phasellus faucibus. Quisque dapibus sem id ipsum. Etiam metus leo, pharetra in, sagittis a, accumsan nec, felis. Donec ut diam. Sed sollicitudin dictum sem. \n\nEtiam sagittis. Morbi sed augue a eros aliquam hendrerit. In ultrices nulla lobortis orci. Mauris dolor eros, facilisis sed, interdum a, vulputate non, eros. Nunc gravida mauris a ipsum. Sed eget massa ut wisi egestas interdum. Proin vel erat. Donec posuere, velit sed imperdiet dapibus, pede felis euismod lectus, at aliquet elit diam quis risus. Curabitur vel neque in elit posuere tempus. Quisque congue sodales odio. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse turpis enim, tincidunt nec, gravida tempor, laoreet quis, elit. Nam lectus. Donec sit amet magna. \n\nQuisque non elit. Phasellus vitae dui sit amet odio euismod tincidunt. Morbi eget orci vitae dui tempor bibendum. Pellentesque egestas sodales arcu. Curabitur ut diam quis justo egestas ornare. Vestibulum erat magna, luctus tempus, imperdiet at, semper nec, quam. Nam sed mi non libero feugiat viverra. Phasellus laoreet, dolor a sodales tempor, lorem ipsum accumsan ipsum, ac varius orci ante id turpis. Nulla auctor lorem nec libero. Maecenas iaculis. Donec non magna. Aenean suscipit. Ut elit. Phasellus sit amet felis. Maecenas rutrum. \n\nCurabitur semper venenatis wisi. Vivamus arcu. Donec viverra erat ut orci ultricies hendrerit. Aliquam erat volutpat. Donec eu arcu sit amet libero iaculis fermentum. Aliquam sit amet velit at purus porttitor feugiat. Fusce aliquet. Praesent ut tellus. Integer ultricies dapibus diam. Nunc sed tortor. In mollis mi quis ipsum. Suspendisse at nibh a ipsum tincidunt ullamcorper. Morbi aliquam, urna sed iaculis semper, mi massa ultrices purus, sit amet ultricies est magna et ligula. Duis rutrum lacus vitae mi. In tellus arcu, vulputate eu, tempus sed, vestibulum ac, eros. Ut feugiat odio vitae odio. Fusce lacinia. \n\nNullam vulputate euismod lectus. Vivamus tincidunt interdum enim. Cras scelerisque. Sed ultrices suscipit enim. Mauris hendrerit laoreet pede. In hac habitasse platea dictumst. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Quisque tempus diam ut diam. Donec semper, libero vitae consectetuer lacinia, erat pede rutrum justo, ac imperdiet nibh dui in tellus. Pellentesque massa arcu, luctus eu, dignissim id, rhoncus vitae, ligula. Nam quam. Vivamus non libero. Nullam tincidunt suscipit elit.",style2,24); // ends