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

?

基于FLASH AS 3的曲柄搖桿機(jī)構(gòu)動畫制作與分析

2015-05-30 12:11:16邵永錄
關(guān)鍵詞:腳本語言動畫制作

邵永錄

摘要:本文從機(jī)械設(shè)計課程教學(xué)的實(shí)際出發(fā),結(jié)合FLASH動畫技術(shù)的應(yīng)用,研究了機(jī)械設(shè)計課程當(dāng)中曲柄搖桿機(jī)構(gòu)中難以理解的結(jié)構(gòu)與運(yùn)動關(guān)系,并分析了具體的動畫制作過程。

關(guān)鍵詞:腳本語言? 動畫制作? 曲柄搖桿機(jī)構(gòu)? 運(yùn)動分析

1 基礎(chǔ)知識認(rèn)知

1.1 素材獲取

用于制作縮放的圖片文件應(yīng)該是矢量圖,文件可以使用矢量圖軟件制作而獲取,常用FALSH自身所具備的繪圖工具就可以完成相關(guān)的素材獲取,將獲取的圖形對象修改為影片剪輯。

1.2 腳本語言基礎(chǔ)

本次研究以Flash Action Script3.0為語言基礎(chǔ)。先介紹相關(guān)圖形對象的屬性。

.x——相對于父級影片剪輯的本地坐標(biāo)的x坐標(biāo)。如果影片剪輯在主時間軸中,則其坐標(biāo)系統(tǒng)將舞臺的左上角指定為(0,0)。

.y——相對于父級影片剪輯的本地坐標(biāo)的y坐標(biāo)。如果影片剪輯在主時間軸中,則其坐標(biāo)系統(tǒng)將舞臺的左上角指定為(0,0)。

.rotation——確定影片剪輯從注冊點(diǎn)開始的影片剪輯旋轉(zhuǎn)的角度。

Math.sin()——正弦三角函數(shù),單位為弧度。

Math.asin()——反正弦三角函數(shù),單位為角度。

Maht.pow()——此函數(shù)為求一個數(shù)a的b次冪,如:Maht.pow(a,b)。

Graphics.moveTo(x,y)——繪制直線的起點(diǎn)。

Graphics.lineTo(x,y)——繪制直線的停止點(diǎn)。

Graphics.lineStyle (6,0x00ffff,1,true,"")——指定一種線條樣式以用于隨后對直線或圓等繪制時的線寬、顏色等。

Graphics.clear()——清除直線、圓等圖形;本文中用于清除上一次創(chuàng)建的直線圖形對象。

SetTimeout(myclear,20)——用于延時功能的函數(shù)。

setInterval()——setInterval函數(shù)的作用是在播放動畫的時候,每隔一定時間就調(diào)用一次參數(shù)。

ClearInterval(sh)——用于清除setInterval()函數(shù)的調(diào)用循環(huán)。

1.3 四桿機(jī)構(gòu)中曲柄、連桿與搖桿間的角度關(guān)系

使用平面幾何三角圖形中的余弦定理與反余弦函數(shù),則可建立機(jī)構(gòu)運(yùn)動中的各個角度關(guān)系。

c2=a2+b2-2abcosC

C=arccos[(a2+b2-c2)/2ab]

2 動畫制作過程研究

2.1 初始化舞臺環(huán)境

首先,設(shè)置舞臺尺寸為550×400像素,然后聲明四個桿件的長度與四個桿件各自注冊點(diǎn)(坐標(biāo)參考點(diǎn))的坐標(biāo);即分別為37.5,125,200,

235.75,且將四個桿的注冊點(diǎn)坐標(biāo)設(shè)置為“ax,ay”,“bx,by”,“cx,cy”,“dx,dy”,再設(shè)置b與c桿鉸接點(diǎn)坐標(biāo)為“cx2,cy2”。

參照原四桿機(jī)構(gòu)固定支點(diǎn)位置,設(shè)置初始兩點(diǎn)坐標(biāo)。如設(shè)計曲柄注冊點(diǎn)(回轉(zhuǎn)中心為“200,100”),則搖桿回轉(zhuǎn)支點(diǎn)坐標(biāo)為(325,300),在時間軸第一幀處寫入初始化腳本程序如下:

var a:Number = 37.5;//定義a桿及其長度;

var b :Number = 125; //定義b桿及其長度;

var c:Number = 200; //定義c桿及其長度;

var d :Number = 235.75; //定義d桿及其長度;

ax:Number = 150; //定義a桿注冊點(diǎn)x坐標(biāo);

ay:Number = 150; //定義a桿注冊點(diǎn)y坐標(biāo);

bx:Number; //定義b桿注冊點(diǎn)x坐標(biāo);

by:Number; //定義b桿注冊點(diǎn)y坐標(biāo);

cx:Number = 375; //定義c桿注冊點(diǎn)x坐標(biāo);

cy:Number = 350; //定義c桿注冊點(diǎn)y坐標(biāo);

cx2:Number ; //定義b與c桿鉸接點(diǎn)x坐標(biāo);

cy2:Number;? //定義b與c桿鉸接點(diǎn)y坐標(biāo);s

曲柄的定角轉(zhuǎn)動程序如下:

var jd:Number = 0

function aa()

{

jd = jd +5;

jd %=? 360;

……

}

setInterval(aa,10);

2.2 求取各注冊點(diǎn)坐標(biāo)公式

曲柄a的注冊點(diǎn)采取給定方式,根據(jù)舞臺大小,自行確定其坐標(biāo)。

ax=150

ay=150

連桿b的注冊點(diǎn)位置由曲柄的與連桿連接端決定,角度通過余弦定理與反余弦求解而出,程序如下:

bx= ax+a*Math.cos(jd*Math.PI/180);

by =ay-a*Math.sin(jd*Math.PI/180);

搖桿c的注冊點(diǎn)位置由連架桿的固定端點(diǎn)決定,程序如下:

cx=ax+d;

cy=ay;

連架桿d的注冊點(diǎn)與曲柄a的注冊點(diǎn)重合,所以坐標(biāo)與a曲柄的注冊點(diǎn)坐標(biāo)相同。

ax=dx=150

ay=dy=150

要求取b與c兩桿的交點(diǎn)坐標(biāo),就必須使用余弦定理與反三角函數(shù),推動過程較復(fù)雜,此處僅列出相應(yīng)的代碼程序。

e=Math.sqrt(Math.pow(a,2)+Math.pow(d,2)-2*

a*d*Math.cos(jd*Math.PI/180));

wj=Math.acos((Math.pow(e,2)+Math.pow(d,2)-Math.pow(a,2))/(2*e*d))*180/Math.PI;

kj=Math.acos((Math.pow(b,2)+Math.pow(e,2)-Math.pow(c, 2))/(2*b*e))*180/Math.PI;

如果就這樣直接獲取a桿與c桿的轉(zhuǎn)角還是會發(fā)生錯誤的。原因在于當(dāng)曲柄旋轉(zhuǎn)時,會造成與連架桿的夾角時而為正,時而為負(fù)。

腳本制作中,采用IF()語句來分別判斷曲柄旋轉(zhuǎn)過程中對連桿b與水平正向的夾角受到連桿與BD連線夾角KJ,以及AD與BD夾角WJ的不同影響關(guān)系。

if (jd<=180){

w =? kj- wj;

}else{

w =? wj+ kj;

}

cx2 = bx+b * Math.cos(w*Math.PI/180);

cy2 = by-b * Math.sin(w*Math.PI/180);

2.3 繪制曲柄搖桿機(jī)構(gòu)圖形

此曲柄搖桿機(jī)構(gòu)采用Action Script 3的Graphics繪制圖形命令來進(jìn)行,具體繪制四桿程序如下:

var lina:Shape=new Shape();

lina.graphics.moveTo(ax,ay);

lina.graphics.lineStyle(6,0x00ffff,1,true,"");

lina.graphics.lineTo(bx,by);

addChild(lina);//曲柄a

var linb:Shape=new Shape();

linb.graphics.moveTo(bx,by);

linb.graphics.lineStyle(6,0xffff00,1,true,"");

linb.graphics.lineTo(cx2,cy2);

addChild(linb);//連桿b

var linc:Shape=new Shape();

linc.graphics.moveTo(cx,cy);

linc.graphics.lineStyle(6,0x00ff00,1,true,"");

linc.graphics.lineTo(cx2,cy2);

addChild(linc);//搖桿c

var lind:Shape=new Shape();

lind.graphics.moveTo(ax,ay);

lind.graphics.lineStyle(6,0xff0000,1,true,"");

lind.graphics.lineTo(dx,dy);

addChild(lind);//連架桿d

接下來繪制4個注冊點(diǎn)(也稱鉸接點(diǎn))。

var cir1:Shape=new Shape();

cir1.graphics.beginFill(0xff0ff0);

cir1.graphics.drawCircle(ax,ay,6);

cir1.graphics.endFill();

addChild(cir1);//圓a

var cir2:Shape=new Shape();

cir2.graphics.beginFill(0xff0ff0);

cir2.graphics.drawCircle(bx,by,6);

cir2.graphics.endFill();

addChild(cir2);//圓b

var cir3:Shape=new Shape();

cir3.graphics.beginFill(0xff0ff0);

cir3.graphics.drawCircle(cx2,cy2,6);

cir3.graphics.endFill();

addChild(cir3);//圓c

var cir4:Shape=new Shape();

cir4.graphics.beginFill(0xff0ff0);

cir4.graphics.drawCircle(cx,cy,6);

cir4.graphics.endFill();

addChild(cir4);//圓d

2.4 動態(tài)曲柄搖桿機(jī)構(gòu)的獲取

延時清除與使用setInterval()每隔一定時間調(diào)用一次自定義函數(shù)aa(),注意將setTimeout()的時間與setInterval()的時間設(shè)置成相同值,從而保證桿件轉(zhuǎn)動效果的連貫性。

setTimeout(myclear,20);//延時函數(shù)

function myclear()

{//延時清除畫線!

lina.graphics.clear();

linb.graphics.clear();

linc.graphics.clear();

lind.graphics.clear();

cir2.graphics.clear();

cir3.graphics.clear();

cir1.graphics.clear();

cir4.graphics.clear();

}

}//以上程序內(nèi)容全部在自定義函數(shù)aa()當(dāng)中。

接下來便是使用setInterval()函數(shù)來按時調(diào)用aa()自定義函數(shù),程序設(shè)置如下。

sh = setInterval(aa,20);

2.5 影片輸出與應(yīng)用

將Flash文件導(dǎo)出生成.swf格式動畫文件,然后就可以在PowerPoint軟件下的控制工具箱中的Shockware Flash Object將此動畫文件導(dǎo)入到PPT中。播放PPT,就可以更好地為課堂教學(xué)服務(wù)了。

3 總結(jié)

利用Flash Action Script3.0強(qiáng)大的腳本語言工具,結(jié)合相關(guān)的機(jī)械設(shè)計原理知識,全部使用腳本代碼程序,可以制作出清晰、精彩的機(jī)械機(jī)構(gòu)動畫文件。

參考文獻(xiàn):

[1]陳志民.Adobe創(chuàng)意大學(xué)Flash CS6標(biāo)準(zhǔn)教材[M].北京希望電子出版社,2013.4.

[2]張佳麗.Flash CS6中文版動畫制作標(biāo)準(zhǔn)教程[M].中國青年出版社,2013.7.

[3]嚴(yán)嚴(yán).Flash CS6中文版完全學(xué)習(xí)手冊[M].人民郵電出版社,2013.3.

猜你喜歡
腳本語言動畫制作
淺談自動編程后處理插件與機(jī)床匹配
一種面向SSC的電信增值業(yè)務(wù)的生成方法及實(shí)現(xiàn)
基于Unity3D的坦克大戰(zhàn)游戲設(shè)計與實(shí)現(xiàn)
淺談宮崎駿的動畫理念
中職《動畫制作》課程微課設(shè)計策略
淺析三維角色動畫制作的關(guān)鍵技術(shù)
Flash設(shè)計大賽與Flash動畫制作課程相互融通的探索
基于校企雙贏模式的flash動畫制作課程延展性研究
動畫制作中后期制作技術(shù)的應(yīng)用
科技傳播(2016年7期)2016-04-28 22:21:40
淺析計算機(jī)技術(shù)在flash動畫中的應(yīng)用
乌兰浩特市| 旬阳县| 平塘县| 乐陵市| 兴海县| 花垣县| 离岛区| 桐柏县| 黎平县| 珲春市| 周至县| 九台市| 芒康县| 克什克腾旗| 泰和县| 鄂州市| 施甸县| 柏乡县| 芮城县| 海兴县| 青龙| 巴林右旗| 象山县| 天祝| 化州市| 突泉县| 潮州市| 大港区| 林州市| 宁河县| 兴仁县| 中阳县| 肥城市| 凤山县| 清原| 怀宁县| 江津市| 敦煌市| 威宁| 桂东县| 正阳县|