亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        使用Flash動(dòng)畫演示物體運(yùn)動(dòng)過程
        ——以彈簧振子為例

        2018-03-05 05:48:02湛高超林盼明
        物理通報(bào) 2018年3期
        關(guān)鍵詞:按鈕動(dòng)畫程序

        湛高超 林盼明

        (華南師范大學(xué)物理與電信工程學(xué)院 廣東 廣州 510006)

        物理是研究物體運(yùn)動(dòng)規(guī)律的一門科學(xué),在物理教學(xué)中,有大量需要使用動(dòng)畫的地方,但在網(wǎng)上并不容易找到一個(gè)合適的動(dòng)畫.Flash是一個(gè)功能強(qiáng)大的動(dòng)畫制作軟件,但要精通Flash并不容易.本文介紹一種使用Flash ActionScript 2.0程序的動(dòng)畫制作方法,簡(jiǎn)單易行,為教學(xué)提供便利.

        1 演示程序

        1.1 演示程序框架

        圖1 演示程序框架

        程序框架如圖1所示,在程序開始,先定義需要用到的物理量,如質(zhì)量m1,速度v1等,以及程序需要用到的中間變量、信號(hào)標(biāo)識(shí)變量.然后便是控制物體運(yùn)動(dòng)的程序,將相關(guān)的公式在此輸入.最后便是循環(huán)程序,其功能是每隔一定的時(shí)間運(yùn)行一次對(duì)應(yīng)的程序,便將一個(gè)連續(xù)的物理過程轉(zhuǎn)換為步進(jìn)的物理過程,只要設(shè)置的時(shí)間間隔足夠小,肉眼觀看時(shí)便是一個(gè)連續(xù)的動(dòng)畫.

        1.2 賦值程序

        賦值程序既可以放在按鈕中,也可以放在第一幀,或者將一部分整個(gè)運(yùn)動(dòng)過程都需要用到的放在第一幀,其他的放在對(duì)應(yīng)的按鈕中.以彈簧振子的演示為例,在第一幀進(jìn)行了如下賦值:

        sign=1;//按鈕信號(hào)標(biāo)識(shí)變量

        danwei=0.0001;//屏幕坐標(biāo)與現(xiàn)實(shí)坐標(biāo)的轉(zhuǎn)換比值,1屏幕單位=0.000 1 m

        xzuobiao=500;yzuobiao=500;Ekzuobiao=100000;Epzuobiao=400//繪圖時(shí)xy坐標(biāo)的伸縮

        m1=0.1;m2=0.1;//兩個(gè)物體的質(zhì)量

        a=cara._x;b=carb._x;//獲取兩個(gè)物體的位置

        c=tanhuang._x;//彈簧的位置

        d=c-a;//彈簧到物體a的距離

        l=b-a;//兩個(gè)物體之間的距離

        t=0;//時(shí)間初始值

        v1=0.05;v2=0;//程序賦予初始速度

        //文本框輸入初始值可改為以下程序

        //v1=v1.text;v2=v2.text//從名字為v1,v2的輸入文本框中獲取值[1-2]

        Ek= 4*(1/2*m1*v1*v1+1/2*m2*v2*

        v2)*danwei*danwei;Ep=0;//初始動(dòng)能和勢(shì)能

        v11=v1;v22=v2;//速度的中間變量

        1.3 運(yùn)動(dòng)程序

        推導(dǎo)出物體運(yùn)動(dòng)的方程式,按照步進(jìn)的方式設(shè)計(jì)程序,每刷新一次更新一次位置,基本框架如下:

        function yundongmingcheng()

        { if(物體處于允許的運(yùn)動(dòng)范圍){

        {t=t+1;運(yùn)動(dòng)程序,代入物理方程式,更新物體所處位置}

        else{停止循環(huán)程序}

        }

        以彈簧振子的演示為例,運(yùn)動(dòng)程序如下:

        functiontanhuangzhenzi()

        {

        if(carb._x<900)//控制物體在屏幕邊界內(nèi)

        {t=t+1;//時(shí)間增加

        cara._x=v1/danwei/100 +cara._x;

        carb._x=v2/danwei/100 +carb._x;//物體按t時(shí)刻各自的速度運(yùn)動(dòng)一個(gè)時(shí)間間隔

        Ek=4*(1/2*m1*v1*v1+1/2*m2*v2*

        v2);//計(jì)算t時(shí)刻的動(dòng)能

        Ep=2*Math.abs(1/2*(l-(carb._x-cara._x))*0.03*0.03);//計(jì)算t時(shí)刻的彈性勢(shì)能

        F=(l-(carb._x-cara._x))*danwei*0.03;//計(jì)算t+1時(shí)刻彈簧的彈力,其中彈簧勁度系數(shù)κ=0.03 N/m

        v2=(m2*v2+F)/m2;v1=(m1*v1-F)/m1;//計(jì)算t+1時(shí)刻的速度

        tanhuang._x=(carb._x+cara._x+42+42)/2;//計(jì)算彈簧的位置,根據(jù)所畫物體的大小調(diào)整

        tanhuang._xscale=(carb._x-cara._x-76.5)

        /(l-76.5)*100;//控制彈簧伸縮,根據(jù)所畫物體的大小調(diào)整

        }

        else{clearInterval(bj);//運(yùn)動(dòng)到邊界時(shí)停止循環(huán)程序}

        }

        1.4 循環(huán)程序

        Flash中用于循環(huán)的程序有幾個(gè),此處推薦使用setInterval(程序名稱,時(shí)間間隔),通過對(duì)循環(huán)運(yùn)行運(yùn)動(dòng)函數(shù),在屏幕上便可以看到連續(xù)的動(dòng)畫[3].該函數(shù)的使用方法很簡(jiǎn)單,如下:

        var bj;//隨便起一個(gè)名字

        bj=setInterval(tanhuangzhenzi,10);//每隔10ms運(yùn)動(dòng)一次tanhuangzhenzi函數(shù)

        停用循環(huán)函數(shù)的指令為clearInterval(bj),該指令可放置到運(yùn)動(dòng)函數(shù)中,當(dāng)物體運(yùn)動(dòng)到屏幕邊界時(shí)停止運(yùn)動(dòng),也可以根據(jù)需要放置到暫停、停止按鈕中.

        1.5 運(yùn)動(dòng)速度調(diào)節(jié)

        動(dòng)畫中物體運(yùn)動(dòng)的快慢,是由循環(huán)程序每運(yùn)行一次運(yùn)動(dòng)程序時(shí),物體在屏幕坐標(biāo)中的增加量決定的.因此,需要在賦值程序中,定義一個(gè)變量danwei,單位為:米/屏幕坐標(biāo),在運(yùn)動(dòng)程序的公式中,需要時(shí)刻注意保持等式兩邊量綱一致.這個(gè)變量設(shè)置為多少,可在最后調(diào)試動(dòng)畫時(shí),根據(jù)個(gè)人喜好進(jìn)行調(diào)整.同時(shí),還需要注意循環(huán)程序中的時(shí)間間隔,如在彈簧振子的動(dòng)畫中,該時(shí)間間隔設(shè)為10 ms,而在運(yùn)動(dòng)程序中,速度的單位是m/s,因此在更新物體在屏幕的位置時(shí),不僅要轉(zhuǎn)換為屏幕的坐標(biāo),還需要除以100,例:cara._x=v1/danwei/100 +cara._x.靈活調(diào)整這兩個(gè)參數(shù),可以調(diào)節(jié)動(dòng)畫的快慢.

        2 按鈕防誤按設(shè)計(jì)

        為動(dòng)畫設(shè)置播放、暫停、停止按鈕,可使動(dòng)畫隨時(shí)可控,便于觀察.在按鈕的設(shè)置中,為避免重復(fù)按同一個(gè)按鈕導(dǎo)致程序出錯(cuò),可進(jìn)行如下設(shè)置:

        if(sign!=3)//當(dāng)按鈕標(biāo)識(shí)變量不等于3時(shí),運(yùn)行程序

        {按下按鈕運(yùn)行的程序

        sign=3;}//運(yùn)行完程序后,將按鈕標(biāo)識(shí)變量設(shè)置為3

        else{break;}//再次點(diǎn)擊該按鈕時(shí),由于sign=3,直接退出,不運(yùn)行程序

        對(duì)不同的按鈕設(shè)置不同的標(biāo)識(shí)變量,便可以保證重復(fù)按同一按鈕無效,必須按了其他按鈕之后才能再次按本按鈕.

        3 函數(shù)曲線的描繪

        在演示物理運(yùn)動(dòng)時(shí),往往需要用v-t圖像、E-t圖像來輔助理解,下面將介紹使用Flash來描繪函數(shù)圖像的方法[3,4].

        3.1 描點(diǎn)程序介紹

        第一部分:

        _root.createEmptyMovieClip("pointv1", 1);//系統(tǒng)自動(dòng)新建一個(gè)名為pointv1的空白影片剪輯

        pointv1.lineStyle(2,0xff0000,100); //設(shè)置線條的顏色,可在flash的顏色面板中查看

        pointv1.moveTo(245.35,545-5*yzuobiao);

        //設(shè)置起始位置(x,y)

        第二部分:

        onEnterFrame = function () {//從進(jìn)入界面開始不斷循環(huán)下面的描繪程序

        pointv1.lineTo(245.35+t*xzuobiao,545-v1*yzuobiao); //描繪程序,描繪到下一時(shí)刻(x,y)的位置

        }

        將此程序放在第一幀的位置即可,如需要畫多條線段,可重復(fù)第一部分的設(shè)置,然后在第二部分的大括號(hào)內(nèi)添加描繪程序.當(dāng)演示程序運(yùn)行時(shí),線條便會(huì)自動(dòng)出現(xiàn).

        清除函數(shù)圖像的函數(shù)是pointv1.clear(),可放在停止按鈕中.值得注意的是,為了再次運(yùn)行能夠畫出圖像,需要在清除之后放置描點(diǎn)程序的第一部分和第二部分.

        3.2 橫縱坐標(biāo)的伸縮

        由于相關(guān)的物理量都是用國(guó)際標(biāo)準(zhǔn)單位表示的,但呈現(xiàn)在屏幕中時(shí),是按照Flash自帶的坐標(biāo)系,故需要進(jìn)行坐標(biāo)的轉(zhuǎn)換.在賦值函數(shù)中,需要加入標(biāo)識(shí)變量xzuobiao,yzuobiao,并在描繪程序中乘上該變量.通過改變?cè)撟兞?,便能?shí)現(xiàn)函數(shù)圖像的伸縮.若有多個(gè)不同單位的物理量,還可以設(shè)置更多的標(biāo)識(shí)變量.

        整體框架如圖2和圖3所示.

        圖2 有按鈕控制的整體框架

        圖3 無按鈕自動(dòng)循環(huán)播放的整體框架

        如果要制作一個(gè)由按鈕控制的動(dòng)畫,可按圖2的框架在對(duì)應(yīng)位置放置相應(yīng)的程序.彈簧振子的動(dòng)畫效果如圖4動(dòng)畫效果圖所示.如果要制作一個(gè)無按鈕控制自動(dòng)循環(huán)播放的動(dòng)畫,可按圖 3 無按鈕自動(dòng)循環(huán)播放的整體框架的框架在對(duì)應(yīng)位置放置相應(yīng)的程序.

        圖4 動(dòng)畫效果圖

        5 結(jié)語

        通過使用setInterval()函數(shù),可以非常簡(jiǎn)易地用動(dòng)畫演示由物理方程控制的物體運(yùn)動(dòng),并通過變量“danwei”來調(diào)節(jié)運(yùn)動(dòng)的快慢.巧妙地利用if函數(shù),可以實(shí)現(xiàn)由按鈕控制播放、暫停和停止,同時(shí)避免誤按.本文還提供了在Flash上描繪函數(shù)圖像的辦法.根據(jù)需要,可按不同框架搭建程序,既可由按鈕控制,也可以無按鈕控制自動(dòng)循環(huán).該制作動(dòng)畫的方法可以非常方便地實(shí)現(xiàn)其他運(yùn)動(dòng)過程的演示,只需要改變運(yùn)動(dòng)程序的物理公式部分就行.

        1 張靖.在Flash中實(shí)現(xiàn)文本框數(shù)據(jù)的存取.煤炭技術(shù),2012,31(5)

        2 李佩,張紅.對(duì)Flash動(dòng)態(tài)文本和輸入文本的認(rèn)識(shí).硅谷,2010(3): 91

        3 鐘子云.基于定時(shí)循環(huán)事件的動(dòng)畫技術(shù).計(jì)算機(jī)應(yīng)用,2003(S2): 89~91

        4 姚炯,沈小娟.物理課件中阻尼振動(dòng)圖象的繪制.中國(guó)教育技術(shù)裝備,2008(18): 70~72

        猜你喜歡
        按鈕動(dòng)畫程序
        哪個(gè)是門鈴真正的按鈕
        當(dāng)你面前有個(gè)按鈕
        做個(gè)動(dòng)畫給你看
        動(dòng)畫發(fā)展史
        我的動(dòng)畫夢(mèng)
        文苑(2019年22期)2019-12-07 05:28:56
        試論我國(guó)未決羈押程序的立法完善
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        我是動(dòng)畫迷
        創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
        亚洲无码美韩综合| 日韩一卡2卡3卡4卡新区亚洲| 开心婷婷五月激情综合社区| 亚洲精品无码乱码成人| 国产免费av片在线观看播放| av资源在线永久免费观看| 亚洲天堂二区三区三州| 小鲜肉自慰网站| 欧美日韩色| 国产一区二区三区涩涩涩| 免费在线观看视频播放| 亚洲av无码一区二区三区人妖| 曰韩精品无码一区二区三区 | 大香伊蕉国产av| 中出高潮了中文字幕| 日本精品一区二区三区试看| 国产亚洲一区二区在线观看| 国产精品爽爽va在线观看无码| 40分钟永久免费又黄又粗| 亚洲第一黄色免费网站| 国产国产精品人在线视| 中文人妻av久久人妻18| 国产一区二区三区国产精品| 深夜黄色刺激影片在线免费观看| 久久久久亚洲精品无码蜜桃| 国产成人综合久久精品推| 国产视频最新| 精品国产女主播一区在线观看| 久久久亚洲欧洲日产国码aⅴ| 少妇高潮惨叫久久久久久| 日韩丝袜亚洲国产欧美一区| 天堂精品人妻一卡二卡| 亚洲av香蕉一区区二区三区| 精品欧美乱码久久久久久1区2区| 国产美女胸大一区二区三区| 少妇被黑人嗷嗷大叫视频| 免费人妻无码不卡中文字幕18禁| 国产精品丝袜在线不卡| 国产一区二区三区尤物| 男人的天堂免费a级毛片无码| 97se在线观看|