新闻中心

EEPW首页>嵌入式系统>设计应用> 如何制作动画程序

如何制作动画程序

作者: 时间:2012-05-07 来源:网络 收藏

/**

*时钟的画面

*/

publicclassClockCanvasextendsCanvas{

privateClockTimerTasktimerTask;

privateTimertimer;

privatefinalStringIMAGE_PATH=/clock.png;

privatefinalintCLOCK_WIDTH=150;//时钟的画面宽度

privatefinalintCENTER_X=5+CLOCK_WIDTH/2;

privatefinalintCENTER_Y=CLOCK_WIDTH/2;

privatefinalintHOUR_LENGTH=CLOCK_WIDTH/4;//时钟的长度

privatefinalintMINUTE_LENGTH=CLOCK_WIDTH*2/5;//分钟的长度

privatefinalintSECOND_LENGTH=CLOCK_WIDTH*2/5;//秒钟的长度

privateImageimg;//画面的背景

/**

*构造函数

*/

publicClockCanvas(){

//设置timer

timer=newTimer();

timerTask=newClockTimerTask(this);

timer.schedule(timerTask,1000,1000);

//登陆背景画面

try{

img=Image.createImage(IMAGE_PATH);

}catch(Exceptione){

e.printStackTrace();

}

}

/**

*画时钟

*/

protectedvoidpaint(Graphicsg){

//背景的设置

g.setColor(255,255,255);

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

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

//获得时间

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);

//显示时间

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);

//时钟时针的显示

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;

//描绘时针

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

扩展函数

在本讲中的模拟表应用是实现了表的最小功能的示范应用。在本应用中,也可以自己增加闹钟和跑秒等扩展功能,这些自己都尝试一番哦。

4-4总结

在本讲中我们讲述了应用程序的具体方法。使用,就要对画像赋予动感,这比游戏还要复杂,所以应该能够图表应用程序。要运行,线据和秒表是不可缺少的基本技术,但是线据知识是一门深奥的技术。参照本讲中的样品,加深线据方面的知识,就能够制作成不错的应用程序。在下一讲中,我们将就效果音和BGM、声音等技术进行详细讲解。敬请关注!

4-3-4完成

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

Clock.java

ClockCanvas.java

ClockTimerTask.java

TrigonometricFunctions.java



评论


相关推荐

技术专区

关闭