国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用動(dòng)作腳本制作動(dòng)態(tài)進(jìn)度條

2020-04-24 14:50蔣維趙濤
電腦知識(shí)與技術(shù) 2020年5期
關(guān)鍵詞:進(jìn)度條

蔣維 趙濤

摘要:ActionScript 3.0可以在場景中繪制出各種圖形.該文介紹了在Flash中利用動(dòng)作腳本來模擬實(shí)際文件加載情況的動(dòng)態(tài)進(jìn)度條的制作方法。

關(guān)鍵詞:Flash;動(dòng)作腳本;進(jìn)度條

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)05-0217-02

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

進(jìn)度條通常用于標(biāo)識(shí)事件的完成度,尤其在程序下載或安裝界面中,利用進(jìn)度條可直觀反應(yīng)出程序加載完成的情況,在Flash中,與提前在畫布上繪制編譯好的圖形相比,使用Action-Script 3.0編碼繪制圖形不僅可以得到更小的文件尺寸,同時(shí)也可以提供給用戶更加靈活的繪制方式、交互性的體驗(yàn)以及多變的動(dòng)態(tài)效果.本文中將使用ActionScript 3.0代碼繪制矢量圖的方法來制作具有動(dòng)態(tài)加載效果的進(jìn)度條。

1 Graphics類繪制矢量圖形

我們?cè)谑褂妙惖膶傩浴⒎椒ê褪录?,一般要先?chuàng)建類的實(shí)例,而Graphics類是最終類不能實(shí)例化.Graphics類繪制矢量圖形是通過支持矢量繪制的其他類自動(dòng)生成Graphics實(shí)例,并通過graphics屬性對(duì)其進(jìn)行訪問.支持矢量繪制的對(duì)象包括Sprite類和Shape類,由于MovieClip類繼承了Sprite類,所以也可以在MovieClip類的實(shí)例中繪圖.主時(shí)間軸是MovieClip類的實(shí)例,所以具有g(shù)raphics的屬性,我們?cè)诶L制圖形時(shí)可以直接將圖形畫在主場景中,如繪制一條直線:this.graphics.lineStyle(10,Ox990000); this.graphics. moveTo(100, 200); this. graphics. lineTo(300,200);可以直接在主場景中繪制出一條直線,但在實(shí)際編程時(shí)一般都會(huì)預(yù)先定義出一個(gè)顯示對(duì)象容器,如Shape類,再在容器中繪制圖形,這樣可以方便地對(duì)繪制出的圖形進(jìn)行放大、縮小、旋轉(zhuǎn)等操作。

2 動(dòng)畫的設(shè)計(jì)與實(shí)現(xiàn)

2.1 動(dòng)畫實(shí)現(xiàn)的目標(biāo)

動(dòng)畫的主要目標(biāo)是實(shí)現(xiàn)進(jìn)度條的動(dòng)態(tài)加載,且用戶可以自己設(shè)定進(jìn)度條的進(jìn)度長度和加載速度的快慢,同時(shí)實(shí)現(xiàn)進(jìn)度條加載到一定百分比時(shí)進(jìn)度條的顏色會(huì)發(fā)生相應(yīng)的變化。

2.2 動(dòng)畫的原理分析

本文中是用繪制矩形和繪制直線的方法來實(shí)現(xiàn)進(jìn)度條的動(dòng)態(tài)加載,程序設(shè)計(jì)的基本思想是從一起點(diǎn)向一終點(diǎn)繪制一矩形或直線,起點(diǎn)坐標(biāo)值固定,終點(diǎn)坐標(biāo)值為一變量,運(yùn)行時(shí)終點(diǎn)坐標(biāo)值不斷增大,程序每次都會(huì)依據(jù)新的終點(diǎn)坐標(biāo)值重新從起點(diǎn)向終點(diǎn)繪制出一段新的矩形或直線,從視覺上看矩形或直線的長度就是在不斷的動(dòng)態(tài)變化的,利用此原理就會(huì)有進(jìn)度條動(dòng)態(tài)加載的效果,如圖l所示,假設(shè)矩形或直線起始長度為n,隨后起點(diǎn)不變,長度不斷增加。

2.3 動(dòng)畫的實(shí)現(xiàn)過程

(1)利用矩形制作進(jìn)度條

此方法是在繪制矩形時(shí)去掉邊框顏色,保留其內(nèi)部填充顏色,矩形的高決定進(jìn)度條的寬窄,矩形的寬即進(jìn)度條的長度是一變化量.具體做法如下:

新建一個(gè)Flash文檔.

打開動(dòng)作面板輸入以下代碼:

var s:Shape=new Shape0;//定義一顯示對(duì)象容器放置矩形

this.addChild(s);//在窗口舞臺(tái)中顯示容器內(nèi)的矩形

var n: Number=0,M:Number =300, Color: Number=OxOOff33,percent;

//變量n表示矩形的寬度;M是矩形寬度的終點(diǎn)值,決定了進(jìn)度條最終的長度;Color表示矩形的初始填充顏色值;percent用于顯示加載百分比

percent =new TextField0;//生成文本域

percent. defaultTextFormat=new TextFormat(1黑體”,20,Oxff0000);//設(shè)置文本格式

percent.x=150;percent.y=220;//文本框在窗口舞臺(tái)上的位置

addEventListener(Event.ENTE R_FRAME,drawLine);

function drawLine(e:Event)

{s.graphics.beginFiII(Color);//設(shè)置矩形填充顏色

s.graphics.drawRect(50,150,n,50);/,沒置矩形的繪制起點(diǎn)以及寬度和高度

for (var i:Number=0; i<=9000000;i++){)

//此循環(huán)語句是控制n變化的快慢即進(jìn)度條加載的快慢,i

的終止值越大,進(jìn)度條越慢

if fn<=M1

{percent.text= Math.floor(n* 100/M)+”%”;//取得加載百分比

percent.autoSize= TextFieldAutoSize.RIGHT;

addChild(percent);//顯示加載百分比

n++://矩形寬度值不斷增加即進(jìn)度條不斷增加

if(Math.floor(n*lOO/M)%30==0) Color= Color +40;

//判定加載進(jìn)度,若為30的倍數(shù)則重新取得新的顏色填充值

else

{for (var j:Number=0; j<= 30000000;j++){)//延時(shí)

s.graphics.endFill0;

percent.text=”加載完成!”;

(2)利用直線制作進(jìn)度條

利用直線制作進(jìn)度條的過程與繪制矩形過程相似,在繪制矩形時(shí)是利用循環(huán)語句來控制進(jìn)度條加載的快慢,除了使用循環(huán)語句控制進(jìn)度條的加載進(jìn)度,還可以利用setlnterval0來控制進(jìn)度條加載速度的變化.在利用直線制作進(jìn)度條時(shí),我們將使用直線的粗細(xì)來控制進(jìn)度條的寬窄,當(dāng)繪制的筆寬大于2時(shí),LineToO畫的線條兩頭是圓的,我們需要使直線的兩頭是萬頭.具體做法如下:

新建一個(gè)Flash文檔.

打開動(dòng)作面板輸入以下代碼:

var s:Shape=new Shape0;

this.addChild(s);

var n:Number= O,M:Number =300, Color:Number=OxOOff33,ti-shi;

tishi=new TextField0;

tishi. defaultTextFormat=new TextFormat(”黑體”,20,Oxff0000);

tishi.x= 200;tishi.v= 220;

function drawLine0//創(chuàng)建ClockFun0函數(shù)

{s. graphics. lineStyle(30, Color,1, true, LineScaleMode. NONE,CapsStyle.NONE);

//設(shè)置筆觸的粗細(xì)即進(jìn)度條的寬窄,顏色Color, CapsStyle.NONE指定線條兩端為方頭

s.graphics.moveTo(100,200);//設(shè)置線條起點(diǎn)

s.graphics.lineTo(lOO+n,200);//畫線到線條結(jié)束點(diǎn)

if fn<=M、

(tishi.text= MathAoor(n*lOO/M)+"%”;

tishi.autoSize= TextFieldAutoSize.RIGHT;

addChild(tishi);

n++;

if(Math.floor(n*100/M)%30==0) Color= Color +40;)

else

{tishi.text=“加載完成!”;

stop0;】)

setInterval(drawLine, 50);//每隔50毫秒執(zhí)行一次drawLine函數(shù)

(3)測試生成影片截圖如圖2所示。

3 結(jié)論

本文利用了Flash的動(dòng)作腳本實(shí)現(xiàn)了進(jìn)度條的加載動(dòng)畫,在制作時(shí)我們需要注意一些細(xì)節(jié),如文本內(nèi)容需右對(duì)齊,否則顯示的“%”會(huì)在舞臺(tái)上跳動(dòng),用直線繪制時(shí)線條末端處端點(diǎn)類型用的是CapsStyle.NONE,如用CapsStyle.SQUARE設(shè)置端點(diǎn)類型為方頭,進(jìn)度條的總長度會(huì)比我們給出的參數(shù)值M大.另外進(jìn)度條加載速度的快慢,除了使用循環(huán)語句和setlnterval0來控制外,還可以通過控制n的變化大小來實(shí)現(xiàn),如n++,可寫為n=n+0.5,n值變化越小,進(jìn)度越慢,反之越快。

參考文獻(xiàn):

[1]李林,蘇炳均.Flash CS5動(dòng)畫制作教程[M].北京:清華大學(xué)出 版社,2014:8.

[2]劉本軍,李登豐.Flash ActionScript 3.0互動(dòng)設(shè)計(jì)項(xiàng)目教程[M]. 北京:人民郵電出版社,2015:11.

【通聯(lián)編輯:唐一東】 作者簡介:蔣維(1981-),女,洛陽師范學(xué)院教師,主要研究計(jì)算機(jī)應(yīng)用。

猜你喜歡
進(jìn)度條
“進(jìn)度條”思維
VB模擬文件傳輸
掌控板玩點(diǎn)燈游戲
為什么進(jìn)度條到99%就不動(dòng)了
為什么進(jìn)度條到99%就不動(dòng)了
全椒县| 安庆市| 中山市| 拉萨市| 平果县| 伊金霍洛旗| 离岛区| 高淳县| 茌平县| 乡城县| 巴马| 河北区| 沁水县| 巴彦淖尔市| 丹巴县| 自贡市| 罗平县| 弥勒县| 三台县| 漳平市| 开封市| 明水县| 静宁县| 嘉祥县| 博乐市| 甘孜县| 泽州县| 荆门市| 乌兰察布市| 聂拉木县| 商水县| 伊吾县| 嫩江县| 安康市| 勃利县| 友谊县| 黄梅县| 汕头市| 宁阳县| 惠安县| 鲜城|