Flash技巧:談動(dòng)態(tài)滾動(dòng)文本框制作方法_Flash教程
推薦:Flash技巧:倒播或正播控制有網(wǎng)友問到:在FLASH中如何控制電影實(shí)例的正播放與倒播放?解決這個(gè)問題的方法有多個(gè),前次在論壇上發(fā)了兩個(gè),今天有空又做了一個(gè)實(shí)例。1、先做一個(gè)電影動(dòng)畫元
再看代碼之前,請(qǐng)先看看下面的說明,這會(huì)對(duì)理解代碼有很大的幫助:
http://www.huoshan.org/shiyan/gundongtiao/gundongtiao.htm
下面是滾動(dòng)條中所有的代碼:
//%%%%%%%%%%%%%%%%接口變量%%%%%%%%%%%%//
//接收父剪輯文本域名字
var wenben_txt = _parent.wenben_txt;
//---------滾動(dòng)初始化---------//
//此變量是滑塊的初始高度,現(xiàn)在設(shè)置為最高,也就占滿上、下按鈕之間的空間
//此變量將在外部文本載入完成,滾動(dòng)條高度設(shè)定的時(shí)候得到應(yīng)用(第32行)
var chushigaodu = Math.floor(xia_btn._y-shang_btn._y-shang_btn._height);
//初始化滑塊Y坐標(biāo),并記錄
var ychushiweizhi = huakuai_mc._y=Math.round(shang_btn._y shang_btn._height);
//小滑塊不可見,上下按鈕不可用
huakuai_mc._visible = false;
shang_btn.enabled = false;
xia_btn.enabled = false;
//%%%%%%%%%%%%%%%%滾動(dòng)代碼%%%%%%%%%%%%%%%%%%//
//////////為父剪輯的文字域注冊(cè)偵聽器,以偵聽在文字域產(chǎn)生變化時(shí),也就是在文本被載入進(jìn)來時(shí),執(zhí)行下面的代碼。這樣就不用擔(dān)心代碼執(zhí)行順序問題!
var zhentingqi = new Object();
wenben_txt.addListener(zhentingqi);
//當(dāng)文字域載入完成時(shí),為什么觸發(fā)onScroller事件,而不是onChange事件?
zhentingqi.onScroller = function() {
trace("----------------------");
//在_root中的動(dòng)態(tài)文本框中,顯示總行數(shù)和當(dāng)前行
_parent.zonghangshu_var = "總行數(shù):" wenben_txt.maxscroll;
_parent.dangqianhang_var = "當(dāng)前行:" wenben_txt.scroll;
//判定滑塊兒是否顯示,并根據(jù)文本內(nèi)容多少定義滑塊高度
if (wenben_txt.maxscroll != 1) {
//小滑塊可見,上下按鈕可用
huakuai_mc._visible = true;
shang_btn.enabled = true;
xia_btn.enabled = true;
//定義一個(gè)高度因子,此因子隨加載文本的增多,將無限趨向于1。
var gaoduyinzi = 1-(wenben_txt.maxscroll-2)/wenben_txt.maxscroll;
//根據(jù)高度因子初始化滑塊的高度
huakuai_mc._height = Math.floor(chushigaodu*Math.pow(gaoduyinzi, 1/5));
//記錄外部文本載入完成后,滑塊的高度
trace("滑塊高=" huakuai_mc._height);
}
//滑塊滾動(dòng)的總象素?cái)?shù)
var zongxiangsu = xia_btn._y-shang_btn._y-shang_btn._height-huakuai_mc._height;
//定義平均象素,每一行所包含的像素?cái)?shù),即文本域每滾動(dòng)一行,滑塊需要移動(dòng)的象素?cái)?shù)。
var pingjunxiangsu = zongxiangsu/(wenben_txt.maxscroll-1);
//定義平均行數(shù),每一像素包含的行數(shù),即滑塊每移動(dòng)一象素,文本域在理論上應(yīng)當(dāng)滾動(dòng)的行數(shù)(盡管非整數(shù)行在視覺上沒有反映)。
var pingjunhangshu = (wenben_txt.maxscroll-1)/Math.floor(zongxiangsu);
//記錄“滾動(dòng)總像素”、“平均像素”和“平均行數(shù)”
trace("滾動(dòng)總象素=" zongxiangsu);
trace("平均象素值=" pingjunxiangsu);
trace("平均行數(shù)值=" pingjunhangshu);
//——————定義上按鈕
shang_btn.onPress = function() {
//記錄按下按鈕的時(shí)間點(diǎn)
anxiashijian = getTimer();
wenben_txt.scroll--;
// 使滑塊兒移動(dòng)到相應(yīng)的位置。
huakuai_mc._y = ychushiweizhi pingjunxiangsu*(wenben_txt.scroll-1);
//當(dāng)按下按鈕一定時(shí)間后,自動(dòng)滾動(dòng)文本
onEnterFrame = function () {
if (getTimer()-anxiashijian>500) {
wenben_txt.scroll--;
//使滑塊兒移動(dòng)到相應(yīng)的位置。
//文本框現(xiàn)在的scroll值減1,然后乘以“平均像素”,得到它應(yīng)該滾動(dòng)的像素,然后再加上初始位置的Y坐標(biāo),就得到現(xiàn)在的應(yīng)該滾動(dòng)到的Y坐標(biāo)
huakuai_mc._y = ychushiweizhi pingjunxiangsu*(wenben_txt.scroll-1);
//跟蹤滑塊的Y坐標(biāo)
trace("[滑塊Y坐標(biāo)]=" huakuai_mc._y);
}
};
};
shang_btn.onRelease = function() {
delete onEnterFrame;
delete anxiashijian;
};
//——————定義下按鈕(原理與上按鈕一樣)
xia_btn.onPress = function() {
anxiashijian = getTimer();
wenben_txt.scroll ;
huakuai_mc._y = ychushiweizhi pingjunxiangsu*(wenben_txt.scroll-1);
onEnterFrame = function () {
if (getTimer()-anxiashijian>500) {
wenben_txt.scroll ;
huakuai_mc._y = ychushiweizhi pingjunxiangsu*(wenben_txt.scroll-1);
trace("[滑塊Y坐標(biāo)]=" huakuai_mc._y);
}
};
};
xia_btn.onRelease = function() {
delete onEnterFrame;
delete anxiashijian;
};
//——————滑塊MC事件處理,當(dāng)鼠標(biāo)按下時(shí)
huakuai_mc.onPress = function() {
//開始拖動(dòng)
this.startDrag(false, this._x, ychushiweizhi, this._x, xia_btn._y-huakuai_mc._height);
//使文本隨滑塊滾動(dòng)
this.onEnterFrame = function() {
//在滾動(dòng)過程中即時(shí)獲得“滑塊所處位置”
var xianzaiweizhi = Math.floor(this._y);
trace("現(xiàn)在位置=" xianzaiweizhi);
//先求出滑塊現(xiàn)在Y坐標(biāo)與其在最開始初始化時(shí)Y坐標(biāo)的像素差值,然后用這個(gè)差值乘“每一象素所包含的行數(shù)”,就可以得到文本現(xiàn)在應(yīng)該滾動(dòng)到的行數(shù)了
//這里為什么要加1,可見scroll屬性值應(yīng)該是取正的,也就是說它會(huì)刪除小數(shù)部分,而非采用四舍五入制?
wenben_txt.scroll = (xianzaiweizhi-ychushiweizhi)*pingjunhangshu 1;
//跟蹤滾動(dòng)的當(dāng)前行
trace("[scroll值]=" Math.floor((xianzaiweizhi-ychushiweizhi)*pingjunhangshu 1));
//記錄當(dāng)在滑塊上按鈕下鼠標(biāo)時(shí),滑塊的初始位置
trace("初始位置=" ychushiweizhi);
//跟蹤滑塊的現(xiàn)在位置
trace("[現(xiàn)在位置]=" xianzaiweizhi);
};
};
//滑塊MC事件處理,鼠標(biāo)移出或釋放時(shí)
huakuai_mc.onRollOut = huakuai_mc.onMouseUp=function () {
// “滑塊”停止拖動(dòng)
this.stopDrag();
// 停止文本隨滑塊滾動(dòng)事件
delete this.onEnterFrame;
};
//——————換用MOUSE對(duì)象的onMouseWheel方法結(jié)合偵聽器實(shí)現(xiàn)滑塊隨鼠標(biāo)滾球滾動(dòng)
mouseListener = new Object();
Mouse.addListener(mouseListener);
mouseListener.onMouseWheel = function(delta) {
delta = 1;
huakuai_mc._y = ychushiweizhi pingjunxiangsu*(wenben_txt.scroll-1);
};
};
這里是源文件:http://www.huoshan.org/shiyan/gundongtiao/gundongtiao.rar
小編物語:國際慣例——感謝火山的努力和付出。火山的BLOG可是他自己用FLASH開發(fā)的,有點(diǎn)意思哦。不過網(wǎng)頁設(shè)計(jì)就……恩,看來火山在繼續(xù)深入FLASH開發(fā)的同時(shí),也有必要提高FLASH設(shè)計(jì)的修為啊。
分享:Flash動(dòng)畫—單擺的制作教程想起當(dāng)初作這個(gè)動(dòng)畫時(shí),真是不知如何下手,所以,這是一篇獻(xiàn)給初學(xué)者的教程的單擺動(dòng)畫的制作,應(yīng)該要解決兩個(gè)方面的問題:一、單擺本身的制作,這一點(diǎn)只要用好
Flash教程Rss訂閱網(wǎng)站制作教程搜索
Flash教程推薦
猜你也喜歡看這些
- Flash AS3.0教程之類入門到精通
- Flash8基礎(chǔ)與實(shí)例教程配套光盤
- 北風(fēng)網(wǎng)web講師李炎恢老師網(wǎng)頁三劍客之flash從入門到精通59課時(shí)|已完結(jié)
- Flash as3.0視頻教程之聲音編程
- Flash 8經(jīng)典動(dòng)畫設(shè)計(jì)實(shí)錄
- flash運(yùn)動(dòng)規(guī)律與動(dòng)作實(shí)現(xiàn)
- Flash as3.0視頻教程之組件編程
- 新東方劍橋商務(wù)英語BEC flash教程 初+中+高 (現(xiàn)已穩(wěn)定供源)
- Flash CS3多媒體課件制作視頻教學(xué)
- oeasy教你玩轉(zhuǎn)flash》--更新到11
- 相關(guān)鏈接:
- 教程說明:
Flash教程-Flash技巧:談動(dòng)態(tài)滾動(dòng)文本框制作方法
。