亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Flash > 正文

火山動態文本滾動條V5[AS3版]

2024-09-12 17:50:58
字體:
來源:轉載
供稿:網友
在線演示
打包文件下載
復制代碼 代碼如下:

package com.qoolu.component
{
    import flash.events.MouseEvent;    
    import flash.events.Event;    
    import flash.display.SimpleButton;    
    import flash.text.TextField;    
    import flash.display.Sprite;
    import flash.utils.getTimer;
    import flash.geom.Rectangle;
    /**
     * @author 寂寞火山:[url]http://www.huoshan.org[/url]
     * @version V5 [08.3.15]
     * 動態文本滾動條
     */
    public class ScrollBar extends Sprite {
        //=============本類屬性==============
        ////接口元件
        private var scrollText : TextField;
        private var scrollBar_sprite : Sprite;
        private var up_btn : SimpleButton;
        private var down_btn : SimpleButton;
        private var pole_sprite : Sprite;
        private var bg_sprite : Sprite;
        ////初始數據
        private var poleStartHeight : Number;
        private var poleStartY : Number;
        private var totalPixels : Number;
        private var isSelect : Boolean;
        ////上下滾動按鈕按鈕下時間
        private var putTime : Number;
        /**
         * @param scrollText_fc:被滾動的文本框
         * @param scrollBarMc_fc:舞臺上與本類所代理的滾動條元件
         * @param height_fc:滾動條高
         * @param width_fc:滾動條寬
         */
        public function ScrollBar(scrollText_fc : TextField, scrollBarMc_fc : Sprite, height_fc : uint = 0,width_fc : uint = 0) {
            //――――――滾動條_sprite,滾動條按鈕和滑塊mc,被滾動的文本域初始化
            scrollText = scrollText_fc;
            scrollBar_sprite = scrollBarMc_fc;
            up_btn = SimpleButton(scrollBar_sprite.getChildByName("up_btn"));
            down_btn = SimpleButton(scrollBar_sprite.getChildByName("down_btn"));
            pole_sprite = Sprite(scrollBar_sprite.getChildByName("pole_mc"));
            bg_sprite = Sprite(scrollBar_sprite.getChildByName("bg_mc"));

            //――――――可用性控制
            pole_sprite.visible = false;
            up_btn.enabled = false;
            down_btn.enabled = false;

            //――――――其他屬性初始化
            bg_sprite.useHandCursor = false;
            isSelect = scrollText.selectable;
            if(height_fc == 0) {
                bg_sprite.height = scrollText.height;
            }else {
                bg_sprite.height = height_fc;
            }
            if(width_fc != 0) { 
                bg_sprite.width = width_fc + 2;
                pole_sprite.width = width_fc;
                up_btn.width = up_btn.height = down_btn.width = down_btn .height = width_fc;    
            }
            down_btn.y = bg_sprite.y + bg_sprite.height - down_btn.height - 1;
            poleStartHeight = Math.floor(down_btn.y - up_btn.y - up_btn.height);
            poleStartY = pole_sprite.y = Math.floor(up_btn.y + up_btn.height);

            //――――――注冊偵聽器
            //文本滾動與鼠標滾輪
            scrollText.addEventListener(Event.SCROLL, textScroll);
            scrollText.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheel);
            //上滾動按鈕
            up_btn.addEventListener(MouseEvent.MOUSE_DOWN, upBtn);
            up_btn.stage.addEventListener(MouseEvent.MOUSE_UP, upBtnUp);
            //下滾動按鈕
            down_btn.addEventListener(MouseEvent.MOUSE_DOWN, downBtn);
            down_btn.stage.addEventListener(MouseEvent.MOUSE_UP, downBtnUp);
            //滑塊
            pole_sprite.addEventListener(MouseEvent.MOUSE_DOWN, poleSprite);
            pole_sprite.stage.addEventListener(MouseEvent.MOUSE_UP, poleUp);
            //滑塊背景點擊
            bg_sprite.addEventListener(MouseEvent.MOUSE_DOWN, bgDown);
        }
        /**
         * 文本滾動事件
         */
        private function textScroll(event : Event) : void {
            //判斷滑塊兒是否顯示,并根據文本內容多少定義滑塊高度
            if(scrollText.maxScrollV != 1) {
                pole_sprite.visible = true;
                up_btn.enabled = true;
                down_btn.enabled = true;
                //定義一個高度因子,此因子隨加載文本的增多,將無限趨向于1
                var heightVar : Number = 1 - (scrollText.maxScrollV - 1) / scrollText.maxScrollV;
                //根據高度因子初始化滑塊的高度
                pole_sprite.height = Math.floor(poleStartHeight * Math.pow(heightVar, 1 / 3));
                totalPixels = Math.floor(down_btn.y - up_btn.y - up_btn.height - pole_sprite.height);
                pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
            }else {
                pole_sprite.visible = false;
                up_btn.enabled = false;
                down_btn.enabled = false;
            }
        }
        /**
         * 滑塊滾動
         */
        private function poleSprite(event : MouseEvent) : void {
            //首先取消文本框滾動偵聽,因為文本滾動的時候會設置滑塊的位置,而此時是通過滑塊調整文本的位置,所以會產生沖突
            scrollText.removeEventListener(Event.SCROLL, textScroll);
            //監聽舞臺,這樣可以保證拖動滑竿的時候,鼠標在舞臺的任意位置松手,都會停止拖動
            scrollBar_sprite.stage.addEventListener(MouseEvent.MOUSE_UP, poleUp);
            //限定拖動范圍
            var dragRect : Rectangle = new Rectangle(pole_sprite.x, poleStartY, 0, totalPixels);
            pole_sprite.startDrag(false, dragRect);
            scrollBar_sprite.addEventListener(Event.ENTER_FRAME, poleDown);
        }
        private function poleDown(event : Event) : void {
            //在滾動過程中及時獲得滑塊所處位置
            var nowPosition : Number = Math.floor(pole_sprite.y);
            //使文本隨滾動條滾動,這里為什么要加1,可見scroll屬性值應該是取正的,也就是說它會刪除小數部分,而非采用四舍五入制?
            scrollText.scrollV = (scrollText.maxScrollV - 1) * (nowPosition - poleStartY) / totalPixels + 2;
            //誤差校正
            var unitPixels : Number = totalPixels / (scrollText.maxScrollV - 1);
            if((nowPosition - poleStartY) < unitPixels) {
                scrollText.scrollV = (scrollText.maxScrollV - 1) * (nowPosition - poleStartY) / totalPixels;
            }
        }
        private function poleUp(event : MouseEvent) : void {
            pole_sprite.stopDrag();
            scrollBar_sprite.removeEventListener(Event.ENTER_FRAME, poleDown);
            scrollBar_sprite.stage.removeEventListener(MouseEvent.MOUSE_UP, poleUp);
            scrollText.addEventListener(Event.SCROLL, textScroll);
        }
        /**
         * 滑塊背景點擊
         */
        private function bgDown(event : MouseEvent) : void {    
            var nowPosition : Number;
            if((scrollBar_sprite.mouseY - up_btn.y) < (pole_sprite.height / 2)) {
                nowPosition = Math.floor(up_btn.y + up_btn.height);
            }else if((down_btn.y - scrollBar_sprite.mouseY) < pole_sprite.height / 2) {
                nowPosition = Math.floor(down_btn.y - pole_sprite.height);
            }else {
                nowPosition = scrollBar_sprite.mouseY - pole_sprite.height / 2;
            }
            pole_sprite.y = nowPosition;
            scrollText.scrollV = (scrollText.maxScrollV - 1) * (nowPosition - poleStartY) / totalPixels + 2;
            var unitPixels : Number = totalPixels / (scrollText.maxScrollV - 1);
            if((nowPosition - poleStartY) < unitPixels) {
                scrollText.scrollV = (scrollText.maxScrollV - 1) * (nowPosition - poleStartY) / totalPixels + 1;
            }
        }
        /**
         * 下滾動按鈕
         */
        private function downBtn(event : MouseEvent) : void {
            scrollText.scrollV++;
            pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
            //當鼠標在按鈕上按下的時間大于設定時間時,連續滾動
            putTime = getTimer();
            scrollBar_sprite.addEventListener(Event.ENTER_FRAME, downBtnDown);    
        }
        private function downBtnDown(event : Event) : void {
            if(getTimer() - putTime > 500) {
                scrollText.scrollV++;
                pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
            }
        }    
        private function downBtnUp(event : MouseEvent) : void {
            scrollBar_sprite.removeEventListener(Event.ENTER_FRAME, downBtnDown);
        }
        /**
         * 上滾動按鈕
         */
        private function upBtn(event : MouseEvent) : void {
            scrollText.scrollV--;
            pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
            //當鼠標在按鈕上按下的時間大于設定時間時,連續滾動
            putTime = getTimer();
            scrollBar_sprite.addEventListener(Event.ENTER_FRAME, upBtnDown);    
        }
        private function upBtnDown(event : Event) : void {
            if(getTimer() - putTime > 500) {
                scrollText.scrollV--;
                pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
            }
        }
        private function upBtnUp(event : MouseEvent) : void {
            scrollBar_sprite.removeEventListener(Event.ENTER_FRAME, upBtnDown);
        }
        /**
         * 鼠標滾輪事件
         */
        private function mouseWheel(event : MouseEvent) : void {
            if(isSelect == false) {
                scrollText.scrollV -= Math.floor(event.delta / 2);
            }else if(isSelect == true) {
                event.delta = 1;
            }
            pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
        }
    }
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频久久久久久久| 久久久精品美女| 亚洲人成亚洲人成在线观看| 欧美极品在线视频| 中文字幕视频一区二区在线有码| 2020欧美日韩在线视频| 日韩一区二区三区国产| 久久99精品国产99久久6尤物| 欧美在线观看网站| 亚洲最大成人网色| 午夜欧美不卡精品aaaaa| 亚洲第一天堂av| 亚洲欧美成人在线| 成人xxxx视频| 91欧美精品成人综合在线观看| 成人激情免费在线| 91色中文字幕| 国产日本欧美一区二区三区在线| 91久久精品久久国产性色也91| 欧美日韩另类在线| 日本一区二区三区四区视频| 久久久精品2019中文字幕神马| 51ⅴ精品国产91久久久久久| 成人激情春色网| 国产精品中文久久久久久久| 亚洲国产精品一区二区三区| 欧美最顶级丰满的aⅴ艳星| 成人日韩av在线| 亚洲激情国产精品| 国产精品一区二区三区在线播放| 国产97在线视频| 成人美女av在线直播| 日韩亚洲精品电影| 成人在线国产精品| 成人性生交xxxxx网站| 欧美高清视频一区二区| 狠狠色噜噜狠狠狠狠97| 日韩精品视频在线播放| 韩国日本不卡在线| 97国产在线视频| 欧美性猛交xxxx久久久| 国产精品视频色| 国产精品福利小视频| 国内精品小视频| 亚洲精品国精品久久99热| 国产精品电影在线观看| 久久精品夜夜夜夜夜久久| 国产精品va在线播放| 一区二区成人精品| 午夜精品一区二区三区在线视| 91av视频导航| 日韩精品在线看| 久久国产精品视频| 91精品啪在线观看麻豆免费| 亚洲色图狂野欧美| 久久夜色精品国产欧美乱| 欧美有码在线视频| 欧美精品999| 中文国产成人精品久久一| 日本老师69xxx| 中文字幕国内精品| 久久这里只有精品99| 亚洲色图13p| 日韩一区二区精品视频| 欧美日韩国产一区二区| 亚洲一区二区三区xxx视频| 精品久久久一区二区| 精品福利樱桃av导航| 亚洲激情视频在线| 中文字幕在线观看亚洲| 亚洲自拍高清视频网站| 国产亚洲一区精品| 欧美视频中文字幕在线| 国产成人aa精品一区在线播放| 中文字幕欧美在线| 亚洲精品一区久久久久久| 97在线视频免费播放| 国产精品久久久av| 成人情趣片在线观看免费| 国产精品三级网站| 色偷偷91综合久久噜噜| 欧美高清电影在线看| 日韩精品免费观看| 国产女人18毛片水18精品| 大桥未久av一区二区三区| 影音先锋日韩有码| 国产精品av在线| 亚洲人午夜色婷婷| 尤物精品国产第一福利三区| 97色在线观看| 国产精品亚洲视频在线观看| 欧美在线视频免费观看| 日韩成人小视频| 8090理伦午夜在线电影| 久久精品99久久香蕉国产色戒| 欧美性xxxx极品hd满灌| 午夜精品国产精品大乳美女| 国产精品国语对白| www国产亚洲精品久久网站| 久久精品国产亚洲精品2020| 欧美刺激性大交免费视频| 久久国产精品久久精品| 亚洲精品久久久久久久久久久| 亚洲欧美日韩图片| 亚洲性69xxxbbb| 国产亚洲精品成人av久久ww| www.99久久热国产日韩欧美.com| 91av视频在线播放| 78m国产成人精品视频| 国色天香2019中文字幕在线观看| 亚洲精品福利免费在线观看| 亚洲日本aⅴ片在线观看香蕉| 久久视频在线免费观看| 亚洲社区在线观看| 国产精品一区二区3区| 清纯唯美日韩制服另类| 亚洲国产一区二区三区四区| 日韩中文在线中文网在线观看| 最近2019中文字幕在线高清| 国产精品白丝av嫩草影院| 国产精品久久久久久久久久免费| www.亚洲一区| 欧美激情一级二级| 国产亚洲人成a一在线v站| 亚洲第一页中文字幕| 好吊成人免视频| 欧美—级a级欧美特级ar全黄| 欧美日韩性生活视频| 国产精品老女人视频| 中文字幕欧美日韩在线| 亚洲夜晚福利在线观看| 91久久国产精品| 中文字幕精品www乱入免费视频| 26uuu国产精品视频| 日韩最新在线视频| 国产一区视频在线| 黑人与娇小精品av专区| 成人美女免费网站视频| 亚洲护士老师的毛茸茸最新章节| 日韩av中文字幕在线播放| 中文字幕亚洲欧美一区二区三区| 在线日韩中文字幕| 国产精品久久二区| 色噜噜国产精品视频一区二区| 亚洲男人天堂手机在线| 国内精品伊人久久| 在线观看视频99| 久久99久久99精品免观看粉嫩| 国产视频福利一区| 日韩欧美精品网站| 伊人精品在线观看| 亚洲成人激情在线| 91久久久国产精品| 日本午夜在线亚洲.国产| 欧美日韩视频在线| 国产在线视频一区| 中文字幕在线成人| 亚洲第一区中文字幕| 中文字幕国产日韩| 国产精品久久久久久久久久| 久久久伊人欧美| 国内精品久久久久久| 国产一区二区黑人欧美xxxx| 亚洲人成77777在线观看网|