中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 資源下載 > 經(jīng)典產(chǎn)品 > 火山動(dòng)態(tài)文本滾動(dòng)條V5
表單驗(yàn)證 Validator v4.0 回到列表 Flash打造的隨機(jī)畫(huà)圓弧效果
 火山動(dòng)態(tài)文本滾動(dòng)條V5

作者:jimohuoshan 時(shí)間: 2008-03-18 文檔類(lèi)型:原創(chuàng) 來(lái)自:藍(lán)色理想

學(xué)AS3幾個(gè)星期了,發(fā)一個(gè)我的小練習(xí):動(dòng)態(tài)文本滾動(dòng)條

功能說(shuō)明

本版滾動(dòng)條除了繼續(xù)保持體積。ㄐ∮2K),界面容易修改,資源占用率小的優(yōu)勢(shì)外,主要有以下幾點(diǎn)改進(jìn):

  1. 使用AS3編寫(xiě)。
  2. 寬高動(dòng)態(tài)指定。
  3. 增加滾動(dòng)條背景點(diǎn)擊事件。
  4. 消除了鼠標(biāo)滾輪無(wú)法同時(shí)準(zhǔn)確控制多個(gè)文本框的重大BUG。

演示   源文件下載

使用方法見(jiàn)源文件

為了方便懶人,直接帖一下代碼:

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]
     * 動(dòng)態(tài)文本滾動(dòng)條
     */
    public class ScrollBar extends Sprite {
        //=============本類(lèi)屬性==============
        ////接口元件
        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;
        ////初始數(shù)據(jù)
        private var poleStartHeight : Number;
        private var poleStartY : Number;
        private var totalPixels : Number;
        private var isSelect : Boolean;
        ////上下滾動(dòng)按鈕按鈕下時(shí)間
        private var putTime : Number;
        /**
         * @param scrollText_fc:被滾動(dòng)的文本框
         * @param scrollBarMc_fc:舞臺(tái)上與本類(lèi)所代理的滾動(dòng)條元件
         * @param height_fc:滾動(dòng)條高
         * @param width_fc:滾動(dòng)條寬
         */
        public function ScrollBar(scrollText_fc : TextField, scrollBarMc_fc : Sprite, height_fc : uint = 0,width_fc : uint = 0) {
            //——————滾動(dòng)條_sprite,滾動(dòng)條按鈕和滑塊mc,被滾動(dòng)的文本域初始化
            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);
            
            //——————注冊(cè)偵聽(tīng)器
            //文本滾動(dòng)與鼠標(biāo)滾輪
            scrollText.addEventListener(Event.SCROLL, textScroll);
            scrollText.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheel);
            //上滾動(dòng)按鈕
            up_btn.addEventListener(MouseEvent.MOUSE_DOWN, upBtn);
            up_btn.stage.addEventListener(MouseEvent.MOUSE_UP, upBtnUp);
            //下滾動(dòng)按鈕
            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);
            //滑塊背景點(diǎn)擊
            bg_sprite.addEventListener(MouseEvent.MOUSE_DOWN, bgDown);
        }
        /**
         * 文本滾動(dòng)事件
         */
        private function textScroll(event : Event) : void {
            //判斷滑塊兒是否顯示,并根據(jù)文本內(nèi)容多少定義滑塊高度
            if(scrollText.maxScrollV != 1) {
                pole_sprite.visible = true;
                up_btn.enabled = true;
                down_btn.enabled = true;
                //定義一個(gè)高度因子,此因子隨加載文本的增多,將無(wú)限趨向于1
                var heightVar : Number = 1 - (scrollText.maxScrollV - 1) / scrollText.maxScrollV;
                //根據(jù)高度因子初始化滑塊的高度
                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;
            }
        }
        /**
         * 滑塊滾動(dòng)
         */
        private function poleSprite(event : MouseEvent) : void {
            //首先取消文本框滾動(dòng)偵聽(tīng),因?yàn)槲谋緷L動(dòng)的時(shí)候會(huì)設(shè)置滑塊的位置,而此時(shí)是通過(guò)滑塊調(diào)整文本的位置,所以會(huì)產(chǎn)生沖突
            scrollText.removeEventListener(Event.SCROLL, textScroll);
            //監(jiān)聽(tīng)舞臺(tái),這樣可以保證拖動(dòng)滑竿的時(shí)候,鼠標(biāo)在舞臺(tái)的任意位置松手,都會(huì)停止拖動(dòng)
            scrollBar_sprite.stage.addEventListener(MouseEvent.MOUSE_UP, poleUp);
            //限定拖動(dòng)范圍
            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 {
            //在滾動(dòng)過(guò)程中及時(shí)獲得滑塊所處位置
            var nowPosition : Number = Math.floor(pole_sprite.y);
            //使文本隨滾動(dòng)條滾動(dòng),這里為什么要加1,可見(jiàn)scroll屬性值應(yīng)該是取正的,也就是說(shuō)它會(huì)刪除小數(shù)部分,而非采用四舍五入制?
            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);
        }
        /**
         * 滑塊背景點(diǎn)擊
         */
        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;
            }
        }
        /**
         * 下滾動(dòng)按鈕
         */
        private function downBtn(event : MouseEvent) : void {
            scrollText.scrollV++;
            pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
            //當(dāng)鼠標(biāo)在按鈕上按下的時(shí)間大于設(shè)定時(shí)間時(shí),連續(xù)滾動(dòng)
            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);
        }
        /**
         * 上滾動(dòng)按鈕
         */
        private function upBtn(event : MouseEvent) : void {
            scrollText.scrollV--;
            pole_sprite.y = Math.floor(poleStartY + totalPixels * (scrollText.scrollV - 1) / (scrollText.maxScrollV - 1));
            //當(dāng)鼠標(biāo)在按鈕上按下的時(shí)間大于設(shè)定時(shí)間時(shí),連續(xù)滾動(dòng)
            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);
        }
        /**
         * 鼠標(biāo)滾輪事件
         */
        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));
        }
    }
}

經(jīng)典論壇討論
http://bbs.blueidea.com/thread-2837973-1-1.html

本文鏈接:http://m.95time.cn/download/product/2008/5514.asp 

出處:藍(lán)色理想
責(zé)任編輯:moby

相關(guān)文章
xScrollStick
給表格加滾動(dòng)條
通用滾動(dòng)條配色工具
Flash XML SongList
作者文章 更多作者文章
我的FLASH情結(jié)2008
用 jsfl 擴(kuò)展你的 flash
淺談flash web的結(jié)構(gòu)
FLASH與ASP通信原理入門(mén)
FLASH基礎(chǔ)開(kāi)發(fā)習(xí)慣
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門(mén)搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶(hù)體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大福“敬•自然”設(shè)計(jì)大賽開(kāi)啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問(wèn)題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買(mǎi)真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
扣代碼工具——捕獲者2.0
扣代碼工具——捕獲者
CSS 3.0 參考手冊(cè)(中文版)
WebRebuild第三屆年會(huì)資料
復(fù)雜背景摳毛羽三則(電子書(shū))
第三屆D2資料分享
搜索引擎優(yōu)化基礎(chǔ)知識(shí)PPT
WAP2.0知識(shí)分享PPT
文字點(diǎn)陣化的應(yīng)用
開(kāi)源ASP博客程序Cmder V2.0

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來(lái)自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來(lái)自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫(huà),設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶(hù)名:  口令:
說(shuō)明:輸入正確的用戶(hù)名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無(wú)關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專(zhuān)業(yè)書(shū)推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫(xiě)給大家看的色彩書(shū)1》
《跟我去香港》
眾妙之門(mén)—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開(kāi)發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開(kāi)發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2