ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>精品日韩欧美,日韩高清av一区二区三区,日韩在线欧美http://www.aygfsteel.com/dreaminfly/category/146.html路上...zh-cnWed, 28 Feb 2007 15:24:04 GMTWed, 28 Feb 2007 15:24:04 GMT60在Eclipse3.0.1上安装EclipseME0.5.5版本http://www.aygfsteel.com/dreaminfly/archive/2005/04/18/3401.htmlž®æ¯…ž®æ¯…Mon, 18 Apr 2005 03:08:00 GMThttp://www.aygfsteel.com/dreaminfly/archive/2005/04/18/3401.htmlhttp://www.aygfsteel.com/dreaminfly/comments/3401.htmlhttp://www.aygfsteel.com/dreaminfly/archive/2005/04/18/3401.html#Feedback0http://www.aygfsteel.com/dreaminfly/comments/commentRss/3401.htmlhttp://www.aygfsteel.com/dreaminfly/services/trackbacks/3401.html开始安装EclipseME 0.5.5:

ä»?.5.5版本开始,EclipseMEž®†é‡‡ç”¨æ–°çš„安装模式。而在0.5.0版本及之前版本均是一个压¾~©æ–‡ä»¶è§£åŽ‹åˆ°Eclipse的安装èµ\径下卛_¯ã€‚è¿™¿Uå®‰è£…åŞ式已¾lä¸åœ¨ä‹É用,我们ž®†é‡‡ç”¨ä»¥ä¸‹çš„æ–°çš„安装模式。如果你仅是要升¾U§EclipseMEåˆ?.5.5版本åQŒé‚£ä¹ˆä¹Ÿè¦æŒ‰ä»¥ä¸‹çš„æ–°çš„安装方法来做ã€?BR>
1åQ‰ç¬¬ä¸€æ­¥ï¼šæ‰“å¼€EclipseåQŒé€‰æ‹©Help -> Software Updates -> Find and Installã€?BR>


























ž®æ¯… 2005-04-18 11:08 发表评论
]]>
Eclipse开发J2MEhttp://www.aygfsteel.com/dreaminfly/archive/2005/04/18/3400.htmlž®æ¯…ž®æ¯…Mon, 18 Apr 2005 03:03:00 GMThttp://www.aygfsteel.com/dreaminfly/archive/2005/04/18/3400.htmlhttp://www.aygfsteel.com/dreaminfly/comments/3400.htmlhttp://www.aygfsteel.com/dreaminfly/archive/2005/04/18/3400.html#Feedback0http://www.aygfsteel.com/dreaminfly/comments/commentRss/3400.htmlhttp://www.aygfsteel.com/dreaminfly/services/trackbacks/3400.html现在Eclipse的最新版本是3.0.2åQŒä½†å»ø™®®ä½¿ç”¨3.01M6版本。è€?SPAN style="FONT-SIZE: 12pt">EclipseME刚刚推出äº?SPAN style="FONT-SIZE: 12pt">0.9.0版本åQŒå®Œå…¨æ”¯æŒ?/FONT>Eclipse3.01M6版ã€?BR>1、下载JDKåQ?/FONT>http://java.sun.com ä¸‹è²JDK1.4.2版本。或者此地址åQ?BR>

2、下载J2ME版本åQ?/FONT>http://java.sun.com ä¸‹è²ã€‚或者此地址åQ?/FONT>

3ã€?FONT color=#0000ff>下蝲Eclipse3.01M6版本åQ?/FONT>http://www.Eclipse.org ä¸‹è²ã€‚或者此地址åQ?BR>
ftp://ftp.jaist.ac.jp/pub/eclipse/eclipse/downloads/drops/S-3.1M6-200504011645/eclipse-SDK-3.1M6-win32.zip

4ã€?FONT color=#0000ff>下蝲Eclipse3.01M6版本的中文语­a€åŒ…:http://www.Eclipse.org ä¸‹è²ã€‚或者此地址åQ?BR>
http://download.eclipse.org/eclipse/downloads/drops/L-3.0.1_Translations-200409161125/NLpack-eclipse-SDK-3.0.x-win32.zip

5、下è½?SPAN style="FONT-SIZE: 12pt">Eclipse3.01M6çš„J2ME插äšgEclipseME0.9.0版本åQ?/FONT>http://www.EclipseME.org 下蝲。或者此地址åQ?A >

http://nchc.dl.sourceforge.net/sourceforge/eclipseme/eclipseme.feature_0.9.0_site.zip

下蝲完以上五个文件后åQŒè¿›è¡Œç›¸åº”顺序的安装。另外:Eclipseçš„èÊY件不需要安装,直接解压卛_¯åQŒå¾ˆæ–¹ä¾¿å§ã€?/SPAN>



]]>
菜鸟初学Java的备忘录(ä¸?http://www.aygfsteel.com/dreaminfly/archive/2005/04/01/2726.htmlž®æ¯…ž®æ¯…Fri, 01 Apr 2005 12:30:00 GMThttp://www.aygfsteel.com/dreaminfly/archive/2005/04/01/2726.htmlhttp://www.aygfsteel.com/dreaminfly/comments/2726.htmlhttp://www.aygfsteel.com/dreaminfly/archive/2005/04/01/2726.html#Feedback0http://www.aygfsteel.com/dreaminfly/comments/commentRss/2726.htmlhttp://www.aygfsteel.com/dreaminfly/services/trackbacks/2726.html作者:xm4014

今天开始学习Java中多¾U¿ç¨‹çš„实çŽ?

  ¾U¿ç¨‹æ˜¯ä¸€äº›å¯ä»¥åƈ行的åQŒç‹¬ç«‹çš„æ‰§è¡Œçš„代ç ?之前我编的程序都只能做一件事æƒ?也就是只有一个线½E?多线½E‹çš„¾~–程ž®±æ˜¯å¯ä»¥ž®†ç¨‹åºä“QåŠ¡åˆ†æˆå¤šä¸ªåÆˆè¡Œçš„å­ä“QåŠ?同时˜qè¡Œ,互不òq²æ‰°.我对多线½E‹çš„理解是从格斗游戏得来çš?格斗游戏中两人对打就是通过两个¾U¿ç¨‹æ¥å®žçŽ°çš„å?否则如何能够你出你的æ‹?我发我的冲击波呢.

  (1æœ?8æ—?½Hç„¶æƒ›_ˆ°ä¸€ä¸ªé—®é¢?补充一ä¸?多线½E‹æ˜¯ä¸æ˜¯æˆ‘们通常所说的多ä“Q务呢?我的理解æ˜?不能˜q™æ ·è¯´ä¹Ÿå¯ä»¥˜q™æ ·è¯?

  ½Ž€å•说æ?多线½E‹æä¾›äº†ä¸€¿Uåœ¨˜q›ç¨‹å†…部˜q›è¡Œå¤šä¸ª¾U¿ç¨‹òq¶è¡Œè°ƒåº¦çš„æœºåˆ?而多ä»ÕdŠ¡åˆ™æä¾›çš„æ˜¯åœ¨ä¸€ä¸ªæ“ä½œç³»¾lŸå†…部运行多个进½E‹çš„æœºåˆ¶.

  多ä“Q务操作系¾l?如Windows)的基本原理是˜q™æ ·çš?操作¾pȝ»Ÿž®†CPU的时间片分配¾l™å¤šä¸ªçº¿½E?每个¾U¿ç¨‹åœ¨æ“ä½œç³»¾lŸæŒ‡å®šçš„æ—‰™—´ç‰‡å†…完成(注意,˜q™é‡Œçš„多个线½E‹æ˜¯åˆ†å±žäºŽä¸åŒè¿›½E‹çš„).操作¾pȝ»Ÿä¸æ–­çš„从一个线½E‹çš„æ‰§è¡Œåˆ‡æ¢åˆ°å¦ä¸€ä¸ªçº¿½E‹çš„æ‰§è¡Œ,如此往å¤?宏观上看æ?ž®±å¥½åƒæ˜¯å¤šä¸ª¾U¿ç¨‹åœ¨ä¸€èµäh‰§è¡?ç”׃ºŽ˜q™å¤šä¸ªçº¿½E‹åˆ†å±žäºŽä¸åŒçš„è¿›½E?因此在我们看æ?ž®±å¥½åƒæ˜¯å¤šä¸ª˜q›ç¨‹åœ¨åŒæ—¶æ‰§è¡?˜q™æ ·ž®±å®žçŽîCº†å¤šä“QåŠ?WhoopsåQŒçœŸ¾l•口.

  如上,多线½E‹å’Œå¤šä“Q务是有很明显的区别的.但是再想一ä¸?在一个应用程序内实现多线½E‹ä¸ä¹Ÿæ˜¯é CPU分配旉™—´ç‰‡å—?既然原理是相同的,那么多线½E‹ä¹Ÿå¯ä»¥è¯´æ˜¯å¤šä“Q务的.

  一个Java½E‹åºå¯åЍå?ž®±å·²¾læœ‰ä¸€ä¸ªçº¿½E‹åœ¨˜qè¡Œ,我们可以通过下面的例子来初步建立一个线½E‹çš„实际印象

class testthread{
public static void main(String args[]){
Thread t=Thread.currentThread();
t.setName("This Thread is running");
System.out.println("The running thead:"+t);
try{
for(int i=0;i<5;i++)
{
System.out.println("Sleep time"+i);
Thread.sleep(1000);//挂è“v¾U¿ç¨‹,ž®±æ˜¯è®©çº¿½E‹ä¼‘息一会儿,
//不占用系¾lŸèµ„æº?因此其它¾U¿ç¨‹å¯ä»¥¾l§ç®‹.
//˜q™é‡Œçš„Thread¾~ºçœè¡¨ç¤ºä¸Èº¿½E?BR>}
}catch(InterruptedException e){System.out.println("thread has wrong");}
}
}

  ˜q™åªæ˜¯ä¸€ä¸ªçº¿½E?那么我们怎么实现多个¾U¿ç¨‹å‘?又怎样让线½E‹åšæˆ‘安排它要做的事情呢?

  实现¾U¿ç¨‹ä½“的构造有两种æ–ÒŽ³•.

  ½W¬ä¸€¿Uæ–¹æ³•是通过¾l§æ‰¿æž„造线½E‹ä½“.

  在Java中专门有一个Thread¾c?˜q™ä¸ª¾c»é‡Œé¢æœ‰ä¸€ä¸ªå‡½æ•°run(),里面记录着¾U¿ç¨‹è¦å®Œæˆçš„æ“ä½œåQŒå°±å¥½åƒé€šå¸¸æ‰€è¯´çš„ä¸Õd‡½æ•°main()ä¸€æ øP¼Œrun()函数˜qè¡Œå®Œäº†,¾U¿ç¨‹ž®Þq»“束了.通过¾l§æ‰¿˜q™ä¸ª¾c?我们可以定义我们自己的线½E?在run函数中告诉它该做什么事æƒ?下面的程序就是ç‘ô承了一个SimpleThread¾c?用两个线½E‹æ¥è¾“出HelloWorld.

public class TwoThread{

public static void main(String args[]){
new SimpleThread("HelloWorld1").start();//创徏两个¾U¿ç¨‹çš„实ä¾?ž®Þp¿™ä¹ˆç®€å?BR> new SimpleThread("HelloWorld2").start();
}

}
class SimpleThread extends Thread{ file://真正的内容在˜q™é‡Œ
public SimpleThread(String str){
super(str);//super代表SimpleThread¾cȝš„直接父类åQŒè¿™é‡Œå°±æ˜¯Thread
}

file://我们要线½E‹åšçš„事情都在这里了
public void run(){
for(int i=0;i<10;i++){
System.out.println(i+" "+getName());
try{
sleep((int)(Math.random()*1000));
}catch(InterruptedException e){}
}
System.out.println("Done!"+getName());
}
}

  ˜qè¡Œçš„结果是两个¾U¿ç¨‹äº¤æ›¿æ˜„¡¤ºå„自的HelloWorld十次,è¾“å‡ºæ˜¯æØœåœ¨ä¸€èµïLš„åQŒå› ä¸ÞZ¸¤ä¸ªçº¿½E‹æ˜¯åŒæ—¶˜qè¡Œçš?



ž®æ¯… 2005-04-01 20:30 发表评论
]]>菜鸟初学Java的备忘录 (一)http://www.aygfsteel.com/dreaminfly/archive/2005/04/01/2725.htmlž®æ¯…ž®æ¯…Fri, 01 Apr 2005 12:18:00 GMThttp://www.aygfsteel.com/dreaminfly/archive/2005/04/01/2725.htmlhttp://www.aygfsteel.com/dreaminfly/comments/2725.htmlhttp://www.aygfsteel.com/dreaminfly/archive/2005/04/01/2725.html#Feedback0http://www.aygfsteel.com/dreaminfly/comments/commentRss/2725.htmlhttp://www.aygfsteel.com/dreaminfly/services/trackbacks/2725.html作者:xm4014


  今天½W¬ä¸€‹Æ¡æŽ¥è§¦Javaã€?/FONT>

  虽然以前间或的也看了些书¾cï¼Œä½†å¤šæ˜¯éš”靴搔ç—?上不了正å¸?¾lä¸æ•¢è¯´è‡ªå·±æ‡‚Java。接触一门新的技术和初恋一æ ?都是½W¬ä¸€‹Æ?但不同的是后者一般开始无比甜èœ?¾l“局却很痛苦,而前者则往往开始很痛苦,­‘Šåˆ°åŽæ¥å´è¶Šæ˜¯æœ‰å‘?½Ž€ç›´æ˜¯‹Æ²çŞ不能.现在我就正处于这个很痛苦的阶ŒD?˜qžä¸€ä¸ªæœ€½Ž€å•çš„Helloworld都运行不出来,æ€ÀL˜¯æç¤ºExcepion in thread "main" java.lan.NoClassDefFoundError. 只好上网åŽÀLŸ¥,åŽÀLœ.记性又不好,所以搜出来赶紧保存下来,常备无患.

  一般来说安装完JDK之后,一定要按一下步骤配¾|®ï¼Œæ‰å¯æ­£ç¡®¾~–译˜qè¡ŒåQˆå‡å®šjdk版本ä¸?.4.0)

  1.ž®†jdk1.4.0-安装在自己机器的某个盘符的根目录下,如:可安装在C:\jdk下ã€?

  ***(以下出现的c:\jdkæ”¹äØ“ä½ è‡ªå·±å®‰è£…JDK的目å½?***

  2.如果你的˜qè¡ŒçŽ¯å¢ƒæ˜¯win98åQŒåˆ™åœ¨C盘根目录下,autoexec.batæ–‡äšg中,加入下面两条语句åQ?

  set Path=%PATH%;c:\jdk\bin

  set CLASSPATH=.;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar

  保存后,重新启动机器åQŒå°±å®Œæˆäº†jdk1.4的安装ã€?

  3.如果你的˜qè¡ŒçŽ¯å¢ƒæ˜¯win2000的话åQŒåˆ™éœ€åœ¨â€œæŽ§åˆ‰™¢æŽì€çš„“系¾lŸâ€ä¸‹åQŒâ€œé«˜¾U§â€é€‰é¡¹çš„“环境变量”中åQŒæ·»åŠ ä¸¤ä¸ªç”¨æˆ·å˜é‡ã€?

  其中一个用户变量的名称为“path”,å€égØ“â€?;d:\j2sdk1.4.0_01\binâ€?

  另一个用户变量的名称ä¸?CLASSPATH",å€égØ“â€?;d"\j2sdk1.4.0_01\lib\dt.jar;d:\j2sdk1.4.0_01\lib\tools.jar”,单击“确定”即可。即完成了jdk1.4.0的安装ã€?

  至于˜q™æ ·åšçš„æ„ä¹‰ä½•在åQŒæˆ‘惛_º”该是让Java¾pȝ»Ÿåœ¨ç¼–译字节代ç ?.java)的时候需要一个什么东东的支持åQŒå¦‚果你不告诉它˜q™ä¸ªä¸œä¸œæ”‘Öœ¨å“ªä¸ªåœ°æ–¹çš„话åQŒå®ƒž®ÞqНå‚ÖMº†?!

  看到屏幕上终于显½Cºå‡ºHello worldå¯ÒŽˆ‘来说意义重大.˜q™æ˜¯æˆ‘近一òq´æ¥å†™çš„½W¬ä¸€ä¸ªç¨‹åº?再次ítä¸Š½E‹åºä¹‹èµ\,½Ž€ç›´æœ‰æå¦‚隔世的感è§?已经快找不准我的位置äº?˜q˜å¥½åŽŸæ¥å­¦çš„ä¸€äº›å…³äºŽC++和面向对象的皮毛没忘光光,所以费点周折熟悉了JDK的环境之å?接下来的事情ž®±å¥½åŠžå¤šäº?心里也踏实多äº?

  用String¾cȝ›´æŽ¥å®šä¹‰å­—½W¦ä¸²å˜é‡æ¯”è“vC中讨厌的指针,感觉¼‹®å®žå¥½çš„å¤?用惯了Object Pascal的我åQŒå¦‚果再回去æ•? *,真要疯掉不可.

  数组的定义和C,C++好像略有不同åQŒè®°ä¸æ¸…了,先记下来再说

  int[] number=new int[5]

  String[] message=new String[5]

  变量˜q™ä¸€éƒ¨åˆ†æƒŒ™“v来要交待的也ž®Þp¿™ä¹ˆå¤šå§ã€‚虽然是菜鸟åQŒä½†æˆ‘也知道,æ€ÀL˜¯å¦‚èµK‹¹©å¼ºèˆ¬åœ¨è¯­æ³•上面æ­ÀLŠ çš„äh½Ž€ç›´æ˜¯ç™½ç—´:大多数情况下,漂亮的程序根本不需要无谓的点缀,工工整整,思èµ\清晰ž®±å¯ä»¥äº†.

  倒是对于Java½E‹åºçš„æ¡†æž¶æˆ‘倒想备忘一ä¸?一个简单的java½E‹åºå¥½åƒæ˜¯åº”该是˜q™æ ·çš„æ¡†æž?

 class ProgramName
{
public static void main(String[] args)
{
file://½E‹åºçš„主ä½?BR> }
public static int othermethod()
{
file://其它æ–ÒŽ³•
}
}

  整个½E‹åºåœ¨ä¸€ä¸ªå¤§çš„ç±»ä¸?˜q™ä¸ª¾cÈš„æ¦‚念应该ž®Þp·Ÿpascal里面的单元差不多的。同pascal一æ ?æ–‡äšg名也要与单元å?在这里是¾cÕd-一æ ?Java对大ž®å†™è¦æ±‚çš„éžå¸æ€¸¥æ ?æˆ‘è¯­æ³•é”™äº†å¥½å‡ æ¬¡éƒ½æ˜¯å› äØ“˜q™ä¸ª.

  Java½E‹åºž®±æ˜¯ç”׃¸€ä¸ªæˆ–者多个或者很多个æ–ÒŽ³•在这样一个大¾cÕd½“中组成的.

  在如上的代码ä¸?定义æ–ÒŽ³•的参数表½Cºçš„æ„æ€åˆ†åˆ«äØ“:

  public表示此成员函数是公有的,可以被其他类直接调用

  static表示main成员函数在ProgramName¾cÈš„æ‰€æœ‰å¯¹è±¡ä¸­æ˜¯å”¯ä¸€çš„,Javaž®†äؓ其分配永久存储空é—?



]]>
快速参考指å?/title><link>http://www.aygfsteel.com/dreaminfly/archive/2005/03/16/2142.html</link><dc:creator>ž®æ¯…</dc:creator><author>ž®æ¯…</author><pubDate>Wed, 16 Mar 2005 12:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/dreaminfly/archive/2005/03/16/2142.html</guid><wfw:comment>http://www.aygfsteel.com/dreaminfly/comments/2142.html</wfw:comment><comments>http://www.aygfsteel.com/dreaminfly/archive/2005/03/16/2142.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dreaminfly/comments/commentRss/2142.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dreaminfly/services/trackbacks/2142.html</trackback:ping><description><![CDATA[<FONT color=#0000ff size=2><STRONG>javax.microedition.lcdui.Display¾c?/STRONG><BR><BR>æ–ÒŽ³•<BR>static Display getDisplay(MIDlet midlet)                       èŽ·å–Display¾cȝš„实例<BR>Displayable getCurrent()                                                   获取目前Displayable¾cȝš„实例<BR>void setCurrent(Alert alert,Displayable displayable)    昄¡¤ºæ‰€æŒ‡å®šçš„æŠ¥è­¦å¯¹è¯æ¡†çš„实例和被指定Displayable¾cȝš„实例<BR><BR>void setCurrent(Displayable displayable)                       昄¡¤ºæ‰€æŒ‡å®šçš„Displayable¾cȝš„实例<BR> <BR>boolean isColor()                                                                  判断讑֤‡æ˜¯å¦æ”¯æŒå½©è‰²<BR><BR>int numColors()                                                                     获取讑֤‡èƒ½ç”¨çš„色彩位数或灰度<BR><BR>void callSerial(Runnable runnable)                                     重绘囑֐ŽåQŒè°ƒç”¨Runnable¾cȝš„实例<BR><BR><STRONG>javax.microedition.lcdui.Displayable¾c?/STRONG><BR><BR>æ–ÒŽ³•<BR>void addCommand(Command command)                           ž®†å‘½ä»¤å…³è”到Displayabel¾cȝš„实例<BR><BR>void removecommand (Command command )                     æ’¤æ¶ˆå…Œ™”<BR>  <BR>void setCommandListener (CommandListener commandlistener)   å…Œ™”CommandListener到Displayable¾cȝš„实例<BR><BR>boolean isShown ()                                                                 判断Displayable¾cÕd®žä¾‹æ—¶å€™åœ¨å±å¹•上显½C?BR><BR><STRONG>javax.microedition.lcdui.Command¾c?/STRONG><BR><BR>Command(String label, int commandTYPE, int priority)      创徏Command¾cȝš„实例åQŒæ˜¾½CºæŒ‡å®šçš„æ ‡ç­¾åQŒè®¾¾|®æŒ‡å®šçš„命ä×o¾cÕdž‹å’Œä¼˜å…ˆçñ”<BR><BR>int getCommandType()                                                            èŽ·å–å‘½ä×o的命令类åž?BR><BR>String getLabel()                                                                        èŽ·å–å‘½ä×o的标½{?BR><BR>int getPriority()                                                                           èŽ·å–å‘½ä×o的优先çñ”<BR><BR>javax.microedition.lcdui.CommandListener接口<BR><BR>æ–ÒŽ³•<BR><BR>void commandAction(Command command,Displayable dispalyable)  处理Command¾cȝš„实例<BR><BR><STRONG>javax.microedition.lcdui.Item¾c?/STRONG><BR><BR>æ–ÒŽ³•<BR>String  getLabel()                                                                          获取与Item¾cȝš„实例兌™”的标½{?BR><BR>void setLabel(String label)                                                           ä¸ºItem¾cȝš„实例指定一个标½{?BR><BR>javax.microedition.ItemStateListener接口<BR>æ–ÒŽ³•<BR><BR>void itemStateChanged (Item item)                                           å¤„理Item¾cȝš„实例的改å?BR><BR><STRONG>javax.microedition.midlet.MIDlet ¾c?BR></STRONG><BR>æ–ÒŽ³•<BR>abstract void destroyApp(boolean unconditional)                    关闭MIDlet<BR><BR>abstract void pauseApp()                                                               æš‚停MIDlet<BR><BR>abstract void startApp()                                                                 ‹È€‹z»MIDlet<BR><BR>final void notify Destroyed()                                                           è¯äh±‚停止MIDlet<BR>final void notifyPause()                                                                    è¯äh±‚暂停MIDlet<BR>final void notifyRequset()                                                                è¯äh±‚‹È€‹z»MIDlet<BR><BR>final String getAppProperty(string key)                                          从JAD或JARæ–‡äšg获取属æ€?BR><BR><STRONG>javax.microedition.midlet.MIDletStateChangeException¾c?/STRONG><BR><BR>æ–ÒŽ³•<BR>MIDletStateChangeException                                                        不用‹¹‹è¯•生成心得MIDletStateChangeException对象<BR><BR>MIDletStateChangeExceptionåQˆString stringåQ?nbsp;                           生成新的带消息的MIDletStateChangeException对象</FONT><img src ="http://www.aygfsteel.com/dreaminfly/aggbug/2142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dreaminfly/" target="_blank">ž®æ¯…</a> 2005-03-16 20:21 <a href="http://www.aygfsteel.com/dreaminfly/archive/2005/03/16/2142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手机游戏开发综˜q?/title><link>http://www.aygfsteel.com/dreaminfly/archive/2005/01/16/345.html</link><dc:creator>ž®æ¯…</dc:creator><author>ž®æ¯…</author><pubDate>Sun, 16 Jan 2005 05:01:00 GMT</pubDate><guid>http://www.aygfsteel.com/dreaminfly/archive/2005/01/16/345.html</guid><wfw:comment>http://www.aygfsteel.com/dreaminfly/comments/345.html</wfw:comment><comments>http://www.aygfsteel.com/dreaminfly/archive/2005/01/16/345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dreaminfly/comments/commentRss/345.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dreaminfly/services/trackbacks/345.html</trackback:ping><description><![CDATA[<p><font color="#000080" size="2">手机ž®±æ˜¯ä¸€å°ç½‘¾lœè®¡½Ž—机åQŒåŸºäºŽæ‰‹æœºçš„¾|‘络游戏ž®†ä¼šæˆäØ“IT最后的金矿..... <br />一、背景介¾l?br /><br />  现在的移动电话是ž®åž‹çš„计½Ž—机åQŒå®ƒçš„处理能力与台式机的标准处理能力相比很有限,但是­‘›_¤Ÿ˜qè¡Œä¸€ä¸ªå°åž‹çš„æ¸¸æˆã€?nbsp;<br /><br />  现在的手机的一个特性就是它们还是网¾lœè®¡½Ž—机åQŒèƒ½å¤Ÿé«˜é€Ÿå‘送和接收数字数据ã€?nbsp;除了语音数据以外åQŒå®ƒä»¬è¿˜å¯ä»¥å‘送和接收其它¾cÕdž‹çš„æ•°æ®ã€‚所以类伹{€Šä¼ å¥‡ã€‹ã€ã€Šåƒòq´ã€‹è¿™æ ïLš„¾|‘络游戏也可以在手机上实现ã€?br /><br />  当然ž®±å¤„理能力和性能而言åQŒå½“前阶ŒD늚„支持Java的手机很接近½W¬äºŒä»£æŽ§åˆ¶å°æ¸¸æˆæœºã€?0òq´ä»£ä¸­æœŸçš„家用电脑和早期的手持游戏机。内存通常很有é™?-一èˆ?28KBåˆ?00KB--è™½ç„¶æœ‰äº›æ™ø™ƒ½æ‰‹æœºæ¯”如Nokia 3650æœ? MB内存。与PC相比åQŒå®ƒä»¬çš„输入和显½CºåŠŸèƒ½ä¹Ÿå¾ˆæœ‰é™ï¼›ž®å±òq•(许多仍然是黑白屏òq•)åQŒäؓ电话拨号优化的小键盘òq¶ä¸é’ˆå¯¹æ–‡æœ¬è¾“å…¥åQŒä»¥åŠæœ‰é™çš„声音处理能力ã€?br /><br />  二、移动游戏是如何实现çš?nbsp;<br /><br />  目前在移动电话实现游戏的技术主要有以下几种åQ?br /><br />  1、嵌入式游戏<br /><br />  一些游戏在出厂前就固化在芯片中了,象Nokia的贪吃蛇ž®±æ˜¯ä¸€ä¸ªæœ€è‘—名的例子。但ç”׃ºŽç”¨æˆ·ä¸èƒ½è‡ªå·±å®‰è£…新的游戏åQŒæ‰€ä»¥å®ƒä»¬é€æ¸å˜å¾—不太‹¹è¡Œäº†ã€?br /><br />  2、短消息服务游戏<br /><br />  短信息服åŠ?SMS)è¢«ç”¨æ¥ä»Žä¸€ä¸ªæ‰‹æœºå‘å¦ä¸€ä¸ªæ‰‹æœºå‘é€ç®€çŸ­çš„æ–‡å­—ä¿¡æ¯ã€‚ç”¨æˆ·ä¸€èˆ¬äØ“æ¯æ¡ä¿¡æ¯æ”¯ä»˜1毛钱的信息费。短消息服务游戏的玩法通常是发送一条信息到某个åïL åQŒè¿™ä¸ªå·ç å¯¹åº”游戏供应商的服务器åQŒæœåŠ¡å™¨æŽ¥æ”¶˜q™æ¡æ¶ˆæ¯åQŒæ‰§è¡Œä¸€äº›æ“ä½œç„¶åŽè¿”å›žä¸€æ¡å¸¦æœ‰ç»“æžœçš„æ¶ˆæ¯åˆ°æ¸¸æˆè€…çš„æ‰‹æœºä¸­ã€‚çŸ­æ¶ˆæ¯æœåŠ¡ä¸æ˜¯ä¸€ä¸ªç‰¹åˆ«å¥½çš„ç”¨äºŽå®žçŽ°ç§»åŠ¨æ¸¸æˆçš„æŠ€æœ¯ï¼Œå› äØ“å®ƒä¾é ç”¨æˆ¯‚¾“入文字,因此本质上它是一个命令行环境。而且它还很昂贵,即ä‹É和服务器只交æ?0‹Æ¡ä¿¡æ¯ä¹Ÿè¦èбè´?块钱或者更多的钱。虽然多媒体消息服务( MMS)技术的推出使得åŸÞZºŽæ¶ˆæ¯çš„æ¸¸æˆæ›´åŠ å…·æœ‰å¸å¼•åŠ›åQŒä½†æ˜¯ä»ç„¶ä¸æ˜¯ä¸€¿Ué‡è¦çš„æ¸¸æˆçŽ¯å¢ƒåQŒæ‰€ä»¥åœ¨æ­¤æˆ‘们不会深入探讨它ã€?br /><br />  3、浏览器游戏<br /><br />  差不å¤?999òq´ä»¥åŽå‡ºåŽ‚çš„æ¯å°æ‰‹æœºéƒ½æœ‰ä¸€ä¸ªæ— ¾U¿åº”用协è®?WAP)‹¹è§ˆå™¨ã€‚WAP本质上是一个静态浏览蝲体,非常像一个简化的WebåQŒæ˜¯ä¸ºç§»åŠ¨ç”µè¯å°åž‹ç‰¹å¾å’Œä½Žå¸¦å®½è€Œä¸“é—¨ä¼˜åŒ–çš„ã€‚è¦çŽ©WAP游戏的话åQŒå¯ä»¥è¿›å…¥æ¸¸æˆä¾›åº”商的URLåQˆé€šå¸¸é€šè¿‡¿UÕdЍ˜qè¥å•†é—¨æˆïL½‘站的一个链接)åQŒä¸‹è½½åƈ‹¹è§ˆä¸€ä¸ªæˆ–多个™åµé¢åQŒé€‰æ‹©ä¸€ä¸ªèœå•或者输入文字,提交数据到服务器åQŒç„¶åŽæµè§ˆæ›´å¤šçš„™åµé¢ã€‚WAP (1.x)版本使用独特的标记语­a€WMLåQŒå…è®¸ç”¨æˆ·ä¸‹è½½å¤šä¸ªé¡µé¢ï¼Œå›_¡ç‰‡ç»„。新版本的WAP(2.x)使用XHTML的一个子集,一‹Æ¡ä¼ é€’ä¸€ä¸ªé¡µé¢åÆˆä¸”å…è®¸æ›´å¥½çš„æŽ§åˆ¶æ˜„¡¤ºæ ¼å¼ã€‚两¿Uç‰ˆæœ¬çš„WAP都提供一个比SMS更友好的界面åQŒè€Œä¸”更加便宜åQŒåªè¦æ ¹æ®ä‹É用时间付费而不是根据信息数。但是它是一个静态的‹¹è§ˆè½½ä½“åQ›æ‰‹æœºæœ¬íw«å‡ ä¹Žä¸éœ€è¦åšä»ÖM½•处理˜q‡ç¨‹åQŒåƈ且所有游戏必™å»é€šè¿‡¾|‘络åQŒæ‰€æœ‰çš„æ“ä½œéƒ½æ˜¯åœ¨è¿œ½E‹æœåŠ¡å™¨ä¸Šæ‰§è¡Œçš„ã€‚æ‰‹æœºå°†¾l§ç®‹å¸¦æœ‰WAP‹¹è§ˆå™¨ï¼Œè€Œä¸”开发者可能发现WAP有利于传送比游戏应用½E‹åºæä¾›çš„æ›´è¯¦ç»†çš„å¸®åŠ©ä¿¡æ¯æˆ–è€…è§„åˆ™ï¼Œå› äØ“å¤§éƒ¨åˆ†çš„æ¸¸æˆä»ç„¶å—æœ‰é™çš„å†…å­˜åˆ¶çº¦ã€‚ç„¶è€Œï¼ŒWAP没能辑ֈ°é«˜ä‹É用率的目标(在欧‹z²å’ŒåŒ—美‹zÔŒ¼Œåªæœ‰6%的手æœÞZ‹É用WAPåQ‰ï¼Œè€Œä¸”¿UÕdЍ˜qè¥å•†å’Œæ¸¸æˆå¼€å‘者正在远¼›»WAP技术ã€?nbsp;我们也不会在˜q™é‡ŒæŽ¢ç©¶ä»ÖM½•WAP的细节ã€?br /><br />  4、J2ME和其它的解释语言<br /><br />  Java 2 Micro Edition (J2ME)是一¿Ué’ˆå¯¹ç§»åŠ¨ç”µè¯å’ŒPDA˜q™æ ·çš„小型设备的Java语言。大部分的手机厂商都˜q«åˆ‡å¸Œæœ›Java手机推广应用。上千万的Java手机已经åˆîCº†æ¶ˆè´¹è€…的手中。J2ME与台式机中的Java相比˜q˜æ˜¯æœ‰å¾ˆå¤§çš„限制åQŒä½†æ˜¯å®ƒå·²ç»æžå¤§çš„æé«˜äº†¿UÕdŠ¨ç”µè¯æ”¯æŒæ¸¸æˆçš„èƒ½åŠ›ã€‚å®ƒæœ‰æ¯”SMS或WAP更好控制的界面,允许使用子图形动画,òq¶ä¸”可以通过无线¾|‘络˜qžæŽ¥åˆ°è¿œ½E‹æœåŠ¡å™¨ã€‚æ”¯æŒJava的手机的普及åQŒæ‰€ä»¥å®ƒæˆäؓ目前最好的¿UÕdŠ¨æ¸¸æˆå¼€å‘çŽ¯å¢ƒï¼Œæˆ‘ä»¬åœ¨è¿™é‡Œå°†è¯¦ç»†ç ”ç©¶J2ME游戏的开发。J2ME不是手机上配¾|®çš„唯一的解释语­a€åQŒä½†æ˜¯å®ƒæ˜¯ä¸€ä¸ªè®¸å¤šåŽ‚å•†æ”¯æŒçš„è¡Œä¸šæ ‡å‡†ã€‚ä¸€äº›ä¸“ç”¨çš„è§£é‡Šè¯­è¨€ä¹Ÿåœ¨æŸäº›åŒºåŸŸæœ‰ä¸Šä½³çš„è¡¨çŽ°åQŒå¦‚北美的Qualcommçš„BREW ( Binary Runtime Environment for WirelessåQŒç”¨äºŽæ— ¾U¿åº”用程序的二进制运行环å¢?和一些韩国移动运营商支持的名为GVM的标准。在˜q™ä¸ª¾pÕdˆ—文章中,我们ž®†è¦é‡ç‚¹è®¨è®ºä½¿ç”¨J2ME开发移动游戏,òq¶ä¸”ž®†ä»‹¾låœ¨Nokiaòq›_°ä¸Šå¼€å‘移动游戏的æ–ÒŽ³•ã€?nbsp;<br /><br />  5、C++应用½E‹åºæˆ–其它编译语­a€<br /><br />  另外一¿Uå¼€å‘方式是使用C++å¼€å‘ç§»åŠ¨æ¸¸æˆï¼ŒæŠŠç¨‹åºç¼–è¯‘äØ“æœ¬æœºæœºå™¨ä»£ç ã€‚ç¼–è¯‘è¯­­a€½E‹åºä¸€èˆ¬è¯´æ¥æä¾›æ›´å¥½çš„æŽ§åˆ¶ç”¨æˆ·ç•Œé¢åQŒä»¥åŠä¸Žè§£é‡Šè¯­è¨€ç›¸æ¯”更快的速度。C++开发者可以定位于Series 60òq›_°è®‘Ö¤‡ã€‚此外,Microsoftçš?Net CF也可以以¾~–译的åŞ式开发移动设备上的游戏,在以后的文章中我ž®†ä»‹¾lPocket PCòq›_°ä¸Šæ¸¸æˆå¼€å‘çš„æ–ÒŽ³•ã€?/font></p> <p><font color="#000080" size="2">三、移动游戏开发与传统游戏开发的区别 <br /><br />  ¿UÕdŠ¨æ¸¸æˆå¼€å‘ä¸Žä¼ ç»Ÿæ¸¸æˆå¼€å‘åŒºåˆ«åœ¨è®¸å¤šæ–šw¢åQ?br /><br />  1、开发团队的大小<br /><br />  传统的PC和控制台游戏一般需è¦?2åˆ?0人的开发团队。因为大部分¿UÕdŠ¨æ¸¸æˆè§„æ¨¡æ¯”æŽ§åˆ¶å°æ¸¸æˆž®ï¼Œæ‰€ä»¥ä¸€èˆ¬æƒ…况下只需è¦?åˆ?人的团队开发,有的时候甚臌™®¾è®¡è€…å’Œ¾~–程者是同一个ähã€?br /><br />  2、预½Ž?br /><br />  传统游戏的预½Ž—在一百万¾ŸŽå…ƒåˆîCº”百万¾ŸŽå…ƒä¹‹é—´ã€‚大部分¿UÕdŠ¨æ¸¸æˆçš„é¢„½Ž—则通常ž®‘于一百万¾ŸŽå…ƒã€‚实际上åQŒç§»åŠ¨ç”µè¯æœ‰é™çš„æ˜„¡¤ºèƒ½åŠ›å’Œå¯¹åº”ç”¨½E‹åºå¤§å°çš„限制ä‹É得不可能象传¾lŸæ¸¸æˆé‚£æ ähŠ•å…¥å¤§é‡çš„è´¢åŠ›ç‰©åŠ›ã€‚ä»ŽæŸç§æ„ä¹‰ä¸Šæ¥è¯ß_¼Œ˜q™ä¹Ÿ½Ž—是一个优炏V€?br /><br />  3、开发周æœ?br /><br />  传统的游戏一般要开发两åˆîC¸‰òq´ã€‚而大部分¿UÕdŠ¨æ¸¸æˆå‡ æœˆä¹‹å†…ž®Þpƒ½å¼€å‘完毕。换句话è¯ß_¼Œåªè¦æœ‰ä¸€ä¸ªå°åž‹å¼€å‘团队和一个小的预½Ž—ï¼Œä½ å°±å¯ä»¥å¼€å‘åÆˆæŽ¨å¹¿ä¸€ä¸ªä¸“ä¸šå“è´¨çš„¿UÕdŠ¨æ¸¸æˆã€‚å› æ­¤ï¼Œå¯¹äºŽè®¸å¤šåœ¨ä¼ ¾lŸæ¸¸æˆé¢†åŸŸé‡åˆ°æŒ«æŠ˜çš„开发者来è¯ß_¼Œ¿UÕdŠ¨æ¸¸æˆå¼€å‘æœ‰å¾ˆå¼ºçš„å¸å¼•åŠ›ã€?br /><br />  4、网¾lœè®¾å¤?br /><br />  ¿UÕdŠ¨æ¸¸æˆå¯èƒ½ä¸åŒäºŽæˆ‘ä»¬ä¹‹å‰çœ‹åˆ°çš„ä»ÖM½•游戏åQšå®ƒå—蝲体因素的限制åQŒä½†æ˜¯æ”¯æŒç½‘¾lœåƈ且可多äh游戏。用于PC的调制解调器也只æ˜?òq´å‰æ‰å¤§èŒƒå›´åº”用åQ›æŽ§åˆ¶å°æ¸¸æˆåªä¸˜q‡çŽ°åœ¨æ‰èƒ½ä¸Š¾|‘。移动电话的ç‰ÒŽ€§å†³å®šå®ƒæ˜¯ä¸€¿Uç½‘¾lœè®¾å¤‡ã€‚即使它们的处理能力使äh惌™“v以前的老式计算机技术,但是它们的网¾lœæ€§èƒ½å´æ›´åŠ å‡ºä¼—ã€?br /><br />  5、开放标å‡?br /><br />  控制台游戏开发需要从控制台游戏厂商取得授权和支持åQŒéœ€è¦æ”¯ä»˜ç»™ä»–们"òq›_°ä½¿ç”¨è´?。在无线应用½E‹åºä¸–界åQˆå¦‚同在PCæ¸¸æˆå¼€å‘ä¸­ä¸€æ øP¼‰åQŒä½ å¯ä»¥å…è´¹çš„开发ä“Q何款式的游戏åQŒè€Œä¸è¦æ”¯ä»˜Nokia、Sun或其他åã^台提供商一分钱。此外,˜q™äº›¿UÕdŠ¨æ¸¸æˆå¼€å‘åã^å°æ ‡å‡†å¯ä»¥å‘å¼€å‘è€…å‘å¸ƒã€å¼€æ”‘ÖÆˆå¯å…è´¹å–å¾—ã€?br /><br />  6、部¾|?br /><br />  传统的游戏主要是在èÊY件市åœÞZ¸Šè´­ä¹°ã€‚而移动游戏主要是ç”Þq”¨æˆ·ä»Ž¿UÕdŠ¨é—¨æˆ·¾|‘站下蝲òq¶å®‰è£…。在有些情况下,它们是通过无线¾|‘ç»œä¸‹è²çš„ã€‚æœ‰äº›æ‰‹æœºå…è®æ€½ ä¸‹è²ä¸€ä¸ªåº”用程序到计算æœÞZ¸­åQŒç„¶åŽé€šè¿‡æ•°æ®¾U¿ä¼ é€åˆ°æ‰‹æœºä¸­ã€?br /><br />  因此åQŒç§»åŠ¨æ¸¸æˆçš„é”€å”®æ¸ é“æ˜¯éžå¸¸ä¸åŒçš„ã€‚ç”¨æˆ·ä¸€èˆ¬é€šè¿‡¿UÕdЍ˜qè¥å•†çš„æ¸¸æˆèœå•、手机厂商预装在手机中的游戏菜单或者无¾U¿åº”用程序门æˆïL½‘站上扑ֈ°¿UÕdŠ¨æ¸¸æˆã€?br /><br />  四、蝲体的优点<br /><br />  1、庞大的潜在用户¾Ÿ?br /><br />  现在全球­‘…过十亿部移动电话正在被使用åQŒåƈ且这个数目正在逐渐增加。在除美国之外的每个发达国家åQŒæ‹¥æœ‰æ‰‹æœºçš„人数比拥有计½Ž—机的äh数更多。虽焉™‚£äº›æ‰‹æœºåªæœ‰ä¸€ž®éƒ¨ä»½æ˜¯æ”¯æŒJava的手机,但是˜q™ä¸ªæ•°ç›®æ­£åœ¨å¿«é€Ÿåœ°æé«˜òq¶ä¸”在几òq´å†…Java手机ž®†è¦æˆäؓ行业标准。移动游戏潜在的市场比其它ä“Q何åã^収ͼŒæ¯”如Playstationå’ŒGameBoy都要大ã€?br /><br />  2、便携æ€?br /><br />  GameBoy比ä“Q何其他控制台游戏卖出的多的一个原因就是:便携性。äh们可以随旉™šåœ°çŽ©ä»–ä»¬é€‰æ‹©çš„æ¸¸æˆã€‚ä¸ŽçŽ°åœ¨çš„æ¸¸æˆæŽ§åˆ¶å°æˆ–è€…ä¸ªäººç”µè„‘ç›¸æ¯”ï¼Œæ‰‹æœºå¯èƒ½ä¸æ˜¯ä¸€ä¸ªå¥½çš„æ¸¸æˆè®¾å¤‡ï¼Œä½†æ˜¯äºÞZ»¬åŸºæœ¬ä¸Šæ˜¯éšæ—¶éšåˆ»éƒ½æŠŠå®ƒä»¬å¸¦åœ¨íw«è¾¹ã€‚在他们¼›Õd¼€å®¶çš„æ—¶å€™æˆ–者想玩的时候,¾l™å¼€å‘è€…åº”è¯¥äØ“ä»–ä»¬æä¾›å¥½çŽ©çš„æ¸¸æˆã€?br /><br />  3、支持网¾l?br /><br />ã€€ã€€å› äØ“¿UÕdŠ¨ç”µè¯æ˜¯ç½‘¾lœè®¾å¤‡ï¼Œæ‰€ä»¥å¯ä»¥å®žçŽ°å¤šäººæ¸¸æˆï¼Œè™½ç„¶æœ‰æŸäº›é™åˆ¶å› ç´ ã€?/font></p> <p><font color="#000080" size="2">五、蝲体的¾~ºç‚¹<br /><br />  1、屏òq•小<br /><br />  你面对的是小型的屏幕。虽然屏òq•分辩率持箋提高åQŒåƈ且彩屏即ž®†æˆä¸ºæ ‡å‡†ï¼Œä½†æ˜¯å±å¹•ž®ºå¯¸˜q˜æ˜¯ä¸€ç›´å¾ˆž®ï¼Œå› äؓ没有äºÞZ¹æ„æ‹¿ç€ç –块一样大的手机ã€?br /><br />  ˜q˜æœ‰ä¸€ä¸ªç›¸å…³çš„问题åQšä¸åŒçš„æ‰‹æœºçš„屏òq•大ž®æ˜¯ä¸åŒçš„。比如说Nokia Series 60òq›_°è®‘Ö¤‡ž®±æä¾›äº†å’ŒNokia 5100˜q™æ ·çš„Series 40讑֤‡ä¸åŒçš„屏òq•尺寸。虽然各个厂商已¾læ ‡å‡†åŒ–它们产品的屏òq•å°ºå¯æ€»¥é¿å…åˆ†å‰²å¸‚场åQŒä½†æ˜¯å¼€å‘者仍焉™œ€è¦äؓ不同的电话优化他们的游戏--你肯定想使用特定的手æœÞZ¸Šæ‰€æœ‰å¯ç”¨çš„屏幕½Iºé—´ã€?br /><br />  2、有限的颜色和声éŸÏx”¯æŒ?br /><br />  大部分ä‹É用者手中的手机仍然是黑白的åQŒè™½ç„¶çŽ°åœ¨å‡ºå”®çš„æ”¯æŒJava的手机大部分都是彩屏手机。在˜q™äº›æ‰‹æœºä¸?2bit彩色非常‹¹è¡Œã€?br /><br />  即ä‹É手机本来ž®±æœ‰å£°éŸ³è®‘Ö¤‡åQŒä½†æ˜¯åº”用程序播攑֣°éŸ³çš„能力却非常有限。J2ME规范æ ÒŽœ¬ä¸éœ€è¦ç¡¬ä»¶åŽ‚å•†æ”¯æŒå£°éŸ»I¼Œè™½ç„¶åŸºæœ¬çš„Java手机允许使用一些声韛_ƈ且MIDIæ”¯æŒæ­£åœ¨æˆäØ“æ ‡å‡†ã€‚é€šå¸¸åQŒæ‰‹æœÞZ¸­åªæœ‰ä¸€ä¸ªè¯­éŸÏxˆ–者一个声道可用ã€?br /><br />  3、应用程序大ž®é™åˆ?br /><br />  大部分的Java手机只有很少的内存空间用于运行MIDlet。此外,对MIDlet的大ž®å§‹¾lˆæœ‰ä¸€ä¸ªé™åˆ¶ã€‚å®žé™…çš„é™åˆ¶å–å†³äºŽæ‰‹æœø™®¾å¤‡å’Œ¿UÕdЍ˜qè¥å•†çš„规定ã€?br /><br />  在这æ ïLš„限制条äšg下设计开发移动游戏固然是非常困难的,但是我们要知道,½W¬ä¸€å°å®¶ç”¨ç”µè„‘只æœ?4 KB内存åQŒä½†æ˜¯ä»ç„¶æœ‰äººçƒ­è¡·äºŽåœ¨å…¶ä¸Šå¼€å‘游戏èÊY件。在一些智能手æœÞZ¸Šå†…存的限制就ž®‘一些,比如Nokia 3650甚至可以˜qè¡Œå‡ å…†å­—节的应用程序ã€?br /><br />  4、高½{‰å¾…æ—‰™—´<br /><br />  ½{‰å¾…æ—‰™—´----机器发出è¯äh±‚和接到响应之间所èŠÞp´¹çš„æ—¶é—?---在计½Ž—机上是以微¿U’计½Ž—;在有¾U¿å› ç‰¹ç½‘上是以毫¿U’计½Ž—;而在无线¾|‘络则要以秒计算ã€?br /><br />  ½{‰å¾…æ—‰™—´æ˜¯ç½‘¾lœæ¸¸æˆä¸­ä¸€ç›´å­˜åœ¨çš„一个问题,开发者们æ€ÀL˜¯åœ¨åŠªåŠ›æ¶ˆé™¤å®ƒå¸¦æ¥çš„é—®é¢˜ã€‚æ— ¾U¿ç½‘¾lœç­‰å¾…时间非帔R•¿åQŒè¿™ž®×ƒ¸å¯èƒ½æœ‰æ•ˆçš„开发多人快速动作移动游戏。然而基于回合制的多人游戏是相当可行的,我们在后面的文章中将讨论如何使用各种æ–ÒŽ³•来处理这个问题ã€?br /><br />  虽然¿UÕdЍ˜qè¥å•†æ€ÀL˜¯åœ¨åŠªåŠ›å¢žåŠ ç§»åŠ¨ç”µè¯å¯ç”¨çš„å¸¦å®½åQŒä½†æ˜¯ä»–们却没有把降低等待时间当成首要解决的问题åQŒå› ä¸ºå®ƒå¯¹äºŽåˆ«çš„应用½E‹åºòq¶ä¸é‡è¦ã€?br /><br />  ˜q˜æœ‰ä¸€¿Uç‰¹ŒDŠæƒ…况:使用蓝牙技术或其他无线局域网技术的手机可以和附˜q‘的蓝牙讑֤‡ä½¿ç”¨å› ç‰¹¾|‘等待时é—ß_¼ˆä¸€èˆ?00-400毫秒åQ‰é€šè®¯ã€‚è¿™æ øP¼Œä½¿ç”¨åƒNokia 3650˜q™æ ·çš„æ™ºèƒ½æ‰‹æœºï¼Œä½ å°±å¯ä»¥å’Œé™„˜q‘çš„¿UÕdŠ¨ç”¨æˆ·ä¸€èµïLŽ©å¤šäh快速动作游戏了ã€?br /><br />  5、可中断性是关键<br /><br />  当用æˆähŽ¥å¬ç”µè¯çš„æ—¶å€™ï¼Œæ‰‹æœºéƒ½ä¼šä¸­æ–­˜q›è¡Œä¸­çš„æ¸¸æˆã€‚游戏程序必™å»èƒ½å¤Ÿæš‚åœåÆˆä¸”ç‘ô¾l­ï¼Œè€Œä¸”不会造成游戏问题åQˆä¾‹å¦‚,游戏者在打电话的时候老怪仍然在¿UÕdЍåQŒæ‰“æ­ÈŽ©å®¶æ‰®æ¼”的角色åQŒå¯¼è‡´è¾“掉游戏)òq¶ä¸”不会造成内存溢出。这需要在¾~–程的时候多注意åQŒNokia提供了技术文档帮助J2MEå’ŒSymbian C++å¼€å‘è€…äº†è§£åÆˆè§£å†³˜q™ä¸ªé—®é¢˜ã€?br /><br />  6、正在发展的技æœ?br /><br />ã€€ã€€ç”¨äºŽå¼€å‘ç§»åŠ¨æ¸¸æˆçš„æŠ€æœ¯åÆˆä¸æ˜¯é’ˆå¯¹æ¸¸æˆè®¾è®¡çš„ï¼Œå› æ­¤å¸¸å¸¸æœ‰ç‰¹å®šçš„é™åˆ¶æ¡äšg。例如,J2ME规范不需要支持透明度,˜q™å°±ä½¿å¾—子图形除了在½Iºç™½çš„背景上以外åQŒåœ¨ä»ÖM½•背景上都会很隄¡œ‹ã€?br /><br />  òq¸è¿çš„æ˜¯åQŒå¤§éƒ¨åˆ†è®‘Ö¤‡åŽ‚å•†çš„Java手机都补充了J2MEåQŒæ”¯æŒäº†é€æ˜Žåº¦ã€‚äØ“äº†å……åˆ†åˆ©ç”¨J2ME的性能åQŒä½ éœ€è¦æ”¯æŒæ‰‹æœºç‰¹å®šçš„APIåQ›äؓ了得到最好的效果åQŒå°±éœ€è¦äؓ一个游戏编写好几个版本。最˜q‘发行的MIDP 2.0规范解决了一些此¾c»é—®é¢˜ï¼Œä½†æ˜¯å¯¹ä¸å…¼å®¹MIDP 2.0的手机是无效的ã€?<br /></font></p> <p><font color="#000080" size="2">六、避其短å¤?nbsp;取其长处<br /><br />  游戏有惊人的可塑性;它们可以使用从石器时代到çŽîC»£é«˜ç§‘技的每一¿UæŠ€æœ¯æ¥å®žçŽ°ã€‚æ¯å½“ä½ ä½¿ç”¨ä½ ä»¥å‰ä»Žæ¥æ²¡æœ‰ä‹É用过的技术进行开发的时候,你需要了解它的性能和局限,努力把它的性能发挥到极限,同时回避或者解军_®ƒçš„局限性ã€?br /><br />  我们可以从我们的¿UÕdŠ¨æ¸¸æˆçš„æ€§èƒ½å’Œå±€é™æ€§çš„è®¨è®ºä¸­å¾—å‡ÞZ»€ä¹ˆç»“论呢åQ?br /><br />  1、短的游戏时é—?br /><br />  äºÞZ»¬˜qŸæ—©è¦æ‰“电话或者接电话åQŒåƈ且他们不æƒÏxŠŠæ‰€æœ‰çš„ç”µé‡éƒ½ç”¨æ¥çŽ©æ¸¸æˆã€‚ç†æƒ³çš„æƒ…å†µæ˜¯æ¯ä¸€å›žåˆæ¸¸æˆåº”è¯¥ä¿æŒåœ¨äº”ä¸ªåˆ†é’Ÿæˆ–æ›´çŸ­æ—‰™—´ä¹‹å†…。这不意味着一个完整的游戏必须在五分钟之内¾l“束--而是你应该允许游戏者中断、保存和¾l§ç®‹æ¸¸æˆã€?br /><br />  2、玩家有自己的时间表åQŒè€Œä¸æ˜¯å¿…™å»éµå¾ªä½ çš„æ—¶é—´è¡¨<br /><br />  让äh们在惌™¦çŽ©æ¸¸æˆçš„æ—¶å€™çŽ©åQŒä¸è¦å¼º˜q«ä»–们等待(如果你可以避免)åQŒä¹Ÿä¸è¦è¦æ±‚他们在ä“Q何时间都在游戏中ã€?br /><br />  3、避免等待时é—?br /><br />  ˜q™å¯¹å•äh游戏来说很容易实现。在多äh游戏中,你就需要解决等待时间的问题了。(我们ž®†åœ¨åŽé¢è®¨è®º˜q™ä¸ªé—®é¢˜ã€?<br /><br />  4、ä‹É用网¾l?br /><br />  ¾|‘络不一定对于每个移动游戏都是必需的,但是那种与äh竞争的感觉,即ä‹É只有一个排行榜åQŒä¹Ÿèƒ½å¸å¼•更多的游戏者。要è®îC½åQŒæ‰‹æœºå®žé™…上是一¿Uç¤¾ä¼šæ€§è®¾å¤‡ï¼Œæ·ÕdŠ æŸç§½C¾ä¼šæ€§å› ç´ åˆ°ä½ çš„æ¸¸æˆä¸­ä¼šä½¿å®ƒæ›´åŠ å—æ¬¢˜qŽã€?br /><br />  5、尽可能地让游戏保持ž®åž‹<br /><br />  è®îC½ä¸€ç‚¹ï¼ŒäºÞZ»¬ä»ç„¶çƒ­ä¸­äº?0òq´ä»£çš„优¿U€çš„æ¸¸æˆã€‚在某些斚w¢åQŒæŠ€æœ¯çš„é™åˆ¶å¼ø™¿«ä½ æŠŠæ›´å¤šçš„æ³¨æ„åŠ›æ”‘Öˆ°åŸºæœ¬çš„æ¸¸æˆä¸­åŽ…R€?br /><br />  当我们在后箋文章中探讨开发的时候,我们ž®†è®¨è®ÞZ¸€äº›æŠ€æœ¯é—®é¢˜ã€?br /><br />  6、做好支持多¿Uæ‰‹æœºçš„准备<br /><br />  臛_°‘åQŒéœ€è¦æ”¯æŒä¸åŒçš„屏幕ž®ºå¯¸åQŒè¿™å¯¹Nokia¾pÕdˆ—æ‰‹æœºå¾ˆå®¹æ˜“åšåˆ°ã€‚äØ“Series 40开发一¿Uç‰ˆæœ¬ï¼Œä¸ºSeries 60开发另一¿Uç‰ˆæœ¬ã€‚多数情况下åQŒä½ ˜q˜è¦åˆ©ç”¨ç‰¹å®šæ‰‹æœºçš„æ€§èƒ½å’ŒAPIåQŒæ¯”如Nokia的用æˆïL•Œé¢å’ŒSMS APIåQŒä½ è¦äؓ不具备相同特性的手机开发不同的版本ã€?br /><br />  7ã€äØ“å›½é™…åŒ–åšå¥½å‡†å¤?br /><br />  全世界都在ä‹É用移动电话,每一¿Uè¯­­a€éƒ½æœ‰è‡ªå·±çš„市场。在你开发的时候你ž®Þp¦åšå¥½è®¡åˆ’åQŒä»¥ä¾¿æ›´åˆ©äºŽæœ¬åœ°åŒ–ã€?/font></p> <p><font color="#000080" size="2">七、处理等待时é—?br /><br />  ¿UÕdŠ¨æ¸¸æˆå¦‚ä½•è§£å†³æ— çº¿¾|‘络的高½{‰å¾…æ—‰™—´å‘¢ï¼Ÿ<br /><br />  1、单人游æˆ?br /><br />  游戏者的游戏不需要用到网¾lœï¼Œé™¤éžæ˜¯æŠŠé«˜åˆ†ä¼ é€åˆ°æŽ’行榜中åQŒæˆ–允许游戏者浏览排行榜。这¿Uç½‘¾lœé€šè®¯å¯¹äºŽæ¸¸æˆå½±å“ä¸å¤§åQŒå‡ ¿U’é’Ÿçš„åšg˜qŸä¸ä¼šå¼•èµïL”¨æˆïLš„反感ã€?br /><br />  实质上,在大多数的单人游戏中òq¶æ²¡æœ‰è¿™ä¸ªé—®é¢˜ã€?br /><br />  2ã€?多玩å®?单äh游戏<br /><br />  在一ä¸?多玩å®?单äh游戏中,游戏者感觉他们是在玩一个多人游戏,但是事实上,每个人只是面对相同的游戏åQŒåœ¨æ¸¸æˆæˆ–者回合结束时比较分数ã€?br /><br />  当一个游戏者加入游戏时åQŒä»–告诉其他游戏者他的IDåøP¼Œç„¶åŽå¼€å§‹çŽ©å•äh游戏。服务器要么¾l™æ¯ä¸ªæ¸¸æˆè€…发送一个包含相同消息的游戏状态文ä»Óž¼Œè¦ä¹ˆå‘送一个来自构造启动游戏状态的客户软äšg的代码。每个游戏者玩游戏åQŒè®¾æ³•取得最高的得分。当一个游戏者结束游戏后åQŒä»–的客æˆïL«¯½E‹åºæŠŠä»–的得分提交到服务器。当所有的游戏者都完成游戏后(或者超˜q‡æŸä¸ªæ—¶é—´ä»¥åŽï¼‰åQŒæœåŠ¡å™¨å‘Šè¯‰æ¯ä¸ªæ¸¸æˆè€…è°å–å¾—äº†æœ€é«˜åˆ†åQŒä»¥åŠæ¯ä¸ªæ¸¸æˆè€…取得的分数ã€?br /><br />  ˜q™ç§é£Žæ ¼çš„æ¸¸æˆåœ¨å› ç‰¹¾|‘上相当成功åQ›AOL最受欢˜qŽçš„æ¸¸æˆSlingož®±æ˜¯ä¸€ä¸ªå¾ˆå¥½çš„例子ã€?br /><br />ã€€ã€€å› äØ“åªæœ‰åœ¨æœåŠ¡å™¨å¼€å§‹æˆ–è€…ç»“æŸæ¸¸æˆçš„æ—¶å€™æ‰éœ€è¦äº¤æ¢æ¶ˆæ¯ï¼Œæ‰€ä»¥ç­‰å¾…æ—¶é—´åªæœ‰åœ¨˜q™äº›æ—¶å€™æ‰æˆäؓ一个问题ã€?br /><br />  3、基于回合的游戏<br /><br />  在一个基于回合的游戏中,游戏者进入他们的回合åQŒåƈ在接收结果之前需要等待一ŒD‰|—¶é—´ã€‚几¿U’é’Ÿçš„åšg˜qŸæ˜¯å¯ä»¥å®¹å¿çš„ã€?br /><br />  有两¿UåŸºäºŽå›žåˆçš„æ¸¸æˆåQ?br /><br />  3.1、轮‹¹æ¸¸æˆ?br /><br />  在一个轮‹¹æ¸¸æˆä¸­åQŒæ¯ä¸ªæ¸¸æˆè€…按‹Æ¡åº˜q›å…¥å›žåˆã€‚像象棋、红心大战这æ ïLš„¾lå…¸æ¸¸æˆž®±æ˜¯å¾ˆå¥½çš„例子ã€?br />˜q™ç§æ¸¸æˆçš„缺点就是游戏者在重新˜q›å…¥å›žåˆä¹‹å‰æ— äº‹å¯åšã€‚虽然经典游戏在因特¾|‘上有很多玩å®Óž¼Œä½†è¿™å¤šå¤šž®‘少有点无趣åQŒã€?br /><br />  因此åQŒé™åˆ¶è½®‹¹æ¸¸æˆçš„æ¸¸æˆè€…数是个非常好的ä¸ÀL„åQŒè¿™æ ·åšg˜qŸå°±ä¸ä¼šå˜å¾—非常é•ѝ€‚两到四个游戏者是比较理想的情å†üc€?br /><br />  3.2、同时动作游æˆ?br /><br />  在一个同时动作游戏中åQŒæ¯ä¸ªæ¸¸æˆè€…独立于其它游戏者计划他自己的行动。当一个游戏者就¾lªæ—¶åQŒä»–发送指令到服务器。服务器½{‰åˆ°ä»Žæ‰€æœ‰çš„æ¸¸æˆè€…那里都接到指ä×oåQŒç„¶åŽåˆ†è§£å›žåˆï¼Œå†æŠŠ¾l“果发送到所有的游戏者那里ã€?br /><br />  4ã€?åÏx—¶åŠ¨ä½œ"游戏<br /><br />  在一ä¸?åÏx—¶åŠ¨ä½œ"游戏中,游戏可能会持¾l­å¾ˆé•¿æ—¶é—ß_¼ˆå‡ å¤©ã€å‡ ä¸ªæ˜ŸæœŸã€å‡ ä¸ªæœˆç”šè‡³åˆ°æ°¸˜qœï¼‰ã€‚游戏者可以在ä»ÖM½•时候进入游戏,执行游戏中的动作。在一些游戏中åQŒä»–们可能只能与其他的同时进入游戏的用户交互åQ›åœ¨å…¶å®ƒçš„æ¸¸æˆä¸­åQŒä»–们也许能与ä“Q何其他游戏者交互,即ä‹É˜q™äº›æ¸¸æˆè€…å·²¾lä¸‹¾Uѝ€?br /><br />  6、把½{‰å¾…æ—‰™—´åˆ†å¸ƒåˆ°æ¸¸æˆä¸­<br /><br />  让游戏者接受高½{‰å¾…æ—‰™—´çš„另一¿Uç®€å•方法就是把½{‰å¾…æ—‰™—´åˆ†å¸ƒåˆ°æ¸¸æˆæœ¬íw«ä¸­ã€‚例如,大部分星际飞èˆÒŽˆ˜æ–—游戏让人都感觉到象是二‹Æ¡å¤§æˆ˜æ—¶çš„空战,战船在你íw«è¾¹å‘¼å•¸è€Œè¿‡åQŒå‘你开炮。然而,在手æœÞZ¸Šè¦å®žçŽ°è¿™¿Uç«çˆ†çš„场面好像困难很大。我们可以换一¿Uæ€èµ\åQŒæˆ‘们可以把星际战舰¾cÀL¸¸æˆåšæˆä¸€ä¸ªç±»ä¼¼ç¬¬ä¸€‹Æ¡ä¸–界大战æ“v战的游戏åQŒæ˜Ÿé™…飞èˆÒŽ…¢æ…¢åœ°¿UÕdЍåQŒå½¼æ­¤ä¹‹é—´ä¸€å‘一发的发射炮弹åQŒå¯¼å¼¹ç¼“慢的¿UÕdŠ¨å¥”å‘å®ƒä»¬çš„ç›®æ ‡ã€‚ä½ å¯ä»¥ä½¿ç”¨˜q™ç§æ–ÒŽ³•来隐藏几¿U’钟的等待时间。肯定还有更多的解决长等待时间的æ–ÒŽ³•。这是一个值得花时间去思考解决的问题ã€?br /><br /><br /><br /><br /><br /></font></p><img src ="http://www.aygfsteel.com/dreaminfly/aggbug/345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dreaminfly/" target="_blank">ž®æ¯…</a> 2005-01-16 13:01 <a href="http://www.aygfsteel.com/dreaminfly/archive/2005/01/16/345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">ËàÄÏ</a>| <a href="http://" target="_blank">ÑÉêÈ</a>| <a href="http://" target="_blank">²ìÑÅÏØ</a>| <a href="http://" target="_blank">ÉÌÂåÊÐ</a>| <a href="http://" target="_blank">ÔÀÑôÊÐ</a>| <a href="http://" target="_blank">ÕØ¶«ÊÐ</a>| <a href="http://" target="_blank">Ïå³ÇÏØ</a>| <a href="http://" target="_blank">ɳÑÅÏØ</a>| <a href="http://" target="_blank">ÐÂç­ÏØ</a>| <a href="http://" target="_blank">¹âÔóÏØ</a>| <a href="http://" target="_blank">ÍÅ·çÏØ</a>| <a href="http://" target="_blank">¹ÅÝþÏØ</a>| <a href="http://" target="_blank">Ïå³ÇÏØ</a>| <a href="http://" target="_blank">¹âÉ½ÏØ</a>| <a href="http://" target="_blank">½øÏÍÏØ</a>| <a href="http://" target="_blank">°²ÑôÏØ</a>| <a href="http://" target="_blank">ÔÀÑôÊÐ</a>| <a href="http://" target="_blank">À³Î÷ÊÐ</a>| <a href="http://" target="_blank">¹ãË®ÊÐ</a>| <a href="http://" target="_blank">ºù«µºÊÐ</a>| <a href="http://" target="_blank">Ë«½­</a>| <a href="http://" target="_blank">ÅíË®</a>| <a href="http://" target="_blank">µÀÕæ</a>| <a href="http://" target="_blank">ÐóÇÏØ</a>| <a href="http://" target="_blank">ËÉ×ÌÊÐ</a>| <a href="http://" target="_blank">¸Ê×Î</a>| <a href="http://" target="_blank">ÐìÎÅÏØ</a>| <a href="http://" target="_blank">̨ÄÏÊÐ</a>| <a href="http://" target="_blank">ÆÖ±±ÏØ</a>| <a href="http://" target="_blank">ÄϽ­ÏØ</a>| <a href="http://" target="_blank">ÍòÈÙÏØ</a>| <a href="http://" target="_blank">ÍòÄêÏØ</a>| <a href="http://" target="_blank">²¼¶û½òÏØ</a>| <a href="http://" target="_blank">ºÎ÷ÊÐ</a>| <a href="http://" target="_blank">²ýÀÖÏØ</a>| <a href="http://" target="_blank">°×ÓñÏØ</a>| <a href="http://" target="_blank">ÎäÂ¡ÏØ</a>| <a href="http://" target="_blank">ÈÊ»³ÊÐ</a>| <a href="http://" target="_blank">¾ÅÁúÏØ</a>| <a href="http://" target="_blank">³ÎÂõÏØ</a>| <a href="http://" target="_blank">µ±ÑôÊÐ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>