بسم الله الرحمن الرحيم
كيفية عمل Animation في J2ME ,,
ساقوم بشرح مثال لكيفية عمل رسومات متحركة باستخدام J2ME وهو عبارة عن دائرة كاملة ملونة ويختفي اللون بشكل تدريجي الى ان تصبح الدائرة باللون الابيض مثل الساعة تماما
لعمل ذلك نحتاج الى الحزمة
import javax.microedition.lcdui.*;
public class StopWatchCanvas extends Canvas implements Runnable{سنستخدم الاسلوب paint()-Method لذلك تكون الميدليت مشتقة من Canvas و Runnable حتى نستطيع استخدام
Display display; display.callSerially(this);
وهذا الاسلوب حتى نستطيع القيام باضافة حدث معين مثل حركة او الافضل نضيف Thread
حتى نستطيع اعادة تنفيذ الاوامر الموجودة في paint لابد ان نستخدم اسلوب اخر ونسميه run ونكتب فيه repaint وكيفية البدء في الرسم واعادة ذلك وهنا يتم حساب رقم الدرجة(الزاوية بالدرجات يعني رسمdrawArc في الدائرة قوس قوس) الحالي ومن ثم اعادة الرسمpaint عن طريق repaint
public void run()
{
int permille=(int)((System.currentTimeMillis()-startTime)/seconds);
degree = 360 -(permille*360)/1000;
repaint();
}وهذا هو الكلاس المهم في البرنامج وخير طريقة للفهم السؤال
import javax.microedition.lcdui.*;
public class StopWatchCanvas extends Canvas implements Runnable{
int degree = 360;
long startTime;
int seconds;
Display display;
public StopWatchCanvas ( Display display, int seconds)
{
this.display =display;
this.seconds = seconds;
startTime =System.currentTimeMillis();
}
public void paint (Graphics g)
{
g.setGrayScale(255);
g.fillRect(0,0,getWidth(),getHeight());
if(degree>0){
g.setColor(255,0,0);
g.fillArc(0,0,getWidth(),getHeight(),90,degree);
display.callSerially(this);
}
g.setGrayScale(0);
g.drawArc(0,0,getWidth()-1,getHeight()-1,0,360);
}
public void run()
{
int permille=(int)((System.currentTimeMillis()-startTime)/seconds);
degree = 360 -(permille*360)/1000;
repaint();
}
}