• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      邵永錄

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

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

      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——確定影片剪輯從注冊點開始的影片剪輯旋轉(zhuǎn)的角度。

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

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

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

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

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

      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 四桿機構(gòu)中曲柄、連桿與搖桿間的角度關(guān)系

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

      c2=a2+b2-2abcosC

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

      2 動畫制作過程研究

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

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

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

      參照原四桿機構(gòu)固定支點位置,設(shè)置初始兩點坐標(biāo)。如設(shè)計曲柄注冊點(回轉(zhuǎn)中心為“200,100”),則搖桿回轉(zhuǎ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桿注冊點x坐標(biāo);

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

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

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

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

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

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

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

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

      var jd:Number = 0

      function aa()

      {

      jd = jd +5;

      jd %=? 360;

      ……

      }

      setInterval(aa,10);

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

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

      ax=150

      ay=150

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

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

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

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

      cx=ax+d;

      cy=ay;

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

      ax=dx=150

      ay=dy=150

      要求取b與c兩桿的交點坐標(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 繪制曲柄搖桿機構(gòu)圖形

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

      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個注冊點(也稱鉸接點)。

      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)曲柄搖桿機構(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強大的腳本語言工具,結(jié)合相關(guān)的機械設(shè)計原理知識,全部使用腳本代碼程序,可以制作出清晰、精彩的機械機構(gòu)動畫文件。

      參考文獻:

      [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.

      猜你喜歡
      腳本語言動畫制作
      淺談自動編程后處理插件與機床匹配
      一種面向SSC的電信增值業(yè)務(wù)的生成方法及實現(xiàn)
      基于Unity3D的坦克大戰(zhàn)游戲設(shè)計與實現(xiàn)
      淺談宮崎駿的動畫理念
      中職《動畫制作》課程微課設(shè)計策略
      淺析三維角色動畫制作的關(guān)鍵技術(shù)
      Flash設(shè)計大賽與Flash動畫制作課程相互融通的探索
      基于校企雙贏模式的flash動畫制作課程延展性研究
      動畫制作中后期制作技術(shù)的應(yīng)用
      科技傳播(2016年7期)2016-04-28 22:21:40
      淺析計算機技術(shù)在flash動畫中的應(yīng)用
      武威市| 静安区| 都安| 井研县| 客服| 普定县| 梨树县| 若尔盖县| 包头市| 桃江县| 田阳县| 枝江市| 鄂伦春自治旗| 岫岩| 象山县| 石屏县| 卢湾区| 台山市| 呼图壁县| 绥中县| 灌云县| 株洲市| 原平市| 天津市| 卓资县| 丽水市| 萝北县| 岑巩县| 南丹县| 平武县| 海原县| 永登县| 盐池县| 汉源县| 黄大仙区| 北碚区| 孟州市| 兴城市| 亳州市| 武川县| 锦屏县|