新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何制作動(dòng)畫程序

如何制作動(dòng)畫程序

作者: 時(shí)間:2012-05-07 來源:網(wǎng)絡(luò) 收藏

/**

*時(shí)鐘的畫面

*/

publicclassClockCanvasextendsCanvas{

privateClockTimerTasktimerTask;

privateTimertimer;

privatefinalStringIMAGE_PATH=/clock.png;

privatefinalintCLOCK_WIDTH=150;//時(shí)鐘的畫面寬度

privatefinalintCENTER_X=5+CLOCK_WIDTH/2;

privatefinalintCENTER_Y=CLOCK_WIDTH/2;

privatefinalintHOUR_LENGTH=CLOCK_WIDTH/4;//時(shí)鐘的長(zhǎng)度

privatefinalintMINUTE_LENGTH=CLOCK_WIDTH*2/5;//分鐘的長(zhǎng)度

privatefinalintSECOND_LENGTH=CLOCK_WIDTH*2/5;//秒鐘的長(zhǎng)度

privateImageimg;//畫面的背景

/**

*構(gòu)造函數(shù)

*/

publicClockCanvas(){

//設(shè)置timer

timer=newTimer();

timerTask=newClockTimerTask(this);

timer.schedule(timerTask,1000,1000);

//登陸背景畫面

try{

img=Image.createImage(IMAGE_PATH);

}catch(Exceptione){

e.printStackTrace();

}

}

/**

*畫時(shí)鐘

*/

protectedvoidpaint(Graphicsg){

//背景的設(shè)置

g.setColor(255,255,255);

g.fillRect(0,0,getWidth(),getHeight());

g.drawImage(img,5,0,Graphics.TOP|Graphics.LEFT);

//獲得時(shí)間

Calendarcal=Calendar.getInstance();

inthour=(int)cal.get(Calendar.HOUR);

inthour_of_day=(int)cal.get(Calendar.HOUR_OF_DAY);

intminute=(int)cal.get(Calendar.MINUTE);

intsecond=(int)cal.get(Calendar.SECOND);

intyear=(int)cal.get(Calendar.YEAR);

intmonth=(int)cal.get(Calendar.MONTH)+1;

intday=(int)cal.get(Calendar.DAY_OF_MONTH);

//顯示時(shí)間

g.setColor(0,0,200);

StringdateString=year+/+month+/+day++hour_of_day+:+minute+:+second;

g.drawString(dateString,CENTER_X,getHeight()-25,Graphics.TOP|Graphics.HCENTER);

//時(shí)鐘時(shí)針的顯示

g.setColor(100,100,100);

inthourAngle=360-30*hour+90;

if(hourAngle>=360)hourAngle-=360;

inthourX=CENTER_X+TrigonometricFunctions.COS[hourAngle]*HOUR_LENGTH/TrigonometricFunctions.MULTIPLE;

inthourY=CENTER_Y-TrigonometricFunctions.SIN[hourAngle]*HOUR_LENGTH/TrigonometricFunctions.MULTIPLE;

//描繪時(shí)針

for(inti=-2;i3;i++){

g.drawLine(CENTER_X+i,CENTER_Y+i,hourX,hourY);

g.drawLine(CENTER_X-i,CENTER_Y+i,hourX,hourY);

}

//分針的顯示

intminuteAngle=360-6*minute+90;

if(minuteAngle>=360)minuteAngle-=360;

intminuteX=CENTER_X+TrigonometricFunctions.COS[minuteAngle]*MINUTE_LENGTH/TrigonometricFunctions.MULTIPLE;

intminuteY=CENTER_Y-TrigonometricFunctions.SIN[minuteAngle]*MINUTE_LENGTH/TrigonometricFunctions.MULTIPLE;//j`

//畫分針的范圍

for(inti=-2;i3;i++){

g.drawLine(CENTER_X+i,CENTER_Y+i,minuteX,minuteY);

g.drawLine(CENTER_X-i,CENTER_Y+i,minuteX,minuteY);

}

//秒針的顯示

intsecondAngle=360-6*second+90;

if(secondAngle>=360)secondAngle-=360;

intsecondX=CENTER_X+TrigonometricFunctions.COS[secondAngle]*SECOND_LENGTH/TrigonometricFunctions.MULTIPLE;

intsecondY=CENTER_Y-TrigonometricFunctions.SIN[secondAngle]*SECOND_LENGTH/TrigonometricFunctions.MULTIPLE;

g.drawLine(CENTER_X,CENTER_Y,secondX,secondY);

}

}

Figure6

4-3-4

擴(kuò)展函數(shù)

在本講中的模擬表應(yīng)用是實(shí)現(xiàn)了表的最小功能的示范應(yīng)用。在本應(yīng)用中,也可以自己增加鬧鐘和跑秒等擴(kuò)展功能,這些自己都嘗試一番哦。

4-4總結(jié)

在本講中我們講述了應(yīng)用程序的具體方法。使用,就要對(duì)畫像賦予動(dòng)感,這比游戲還要復(fù)雜,所以應(yīng)該能夠圖表應(yīng)用程序。要運(yùn)行,線據(jù)和秒表是不可缺少的基本技術(shù),但是線據(jù)知識(shí)是一門深?yuàn)W的技術(shù)。參照本講中的樣品,加深線據(jù)方面的知識(shí),就能夠制作成不錯(cuò)的應(yīng)用程序。在下一講中,我們將就效果音和BGM、聲音等技術(shù)進(jìn)行詳細(xì)講解。敬請(qǐng)關(guān)注!

4-3-4完成

以下是所制作的程序的源碼。

Clock.java

ClockCanvas.java

ClockTimerTask.java

TrigonometricFunctions.java



關(guān)鍵詞: 程序 動(dòng)畫 制作 如何

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉