Kenny_Liu's profile入乡随俗PhotosBlogListsMore ![]() | Help |
|
|
9/21/2006 双点线斜45度视角坐标转换正视角坐标公式 public int get45X(int x,int y){
return (x + 2 * y) / 4; } public int get45Y(int x,int y){
return (x - 2 * y) / 4; } 不小心把qiqi公式扔掉了。。。qiqi看见在给我写一份...... 7/11/2006 孔挖法-随机迷宫算法迷宫必须是奇数*奇数,出口在右下角(也可以随即选择一个终结点作为出口)
2.0半透明矩形,傻归傻,总比没有好 public void fillRect(Graphics g, int x, int y,int w, int h,int ARGBColor) { if (w <= 0 || h <= 0) return; if ( (ARGBColor & 0xff000000) == 0xff000000) { g.setColor(ARGBColor); g.fillRect(x, y, w, h); } else if ( (ARGBColor & 0xff000000) != 0x00000000) { int[] ARGB = new int[w * h]; ARGB[0] = ARGBColor; int TempPos = 1; while (TempPos < ARGB.length) { int TempLen = TempPos; if (TempPos + TempLen > ARGB.length) { TempLen = ARGB.length - TempPos; } System.arraycopy(ARGB, 0, ARGB, TempPos, TempLen); TempPos += TempLen; } g.drawRGB(ARGB, 0, w, x, y,w, h, true); } } 2/23/2006 alpha混合Nokia版一年前的东西,忘记贴上来,有bug,不能透明
void drawGame(Graphics g) { DirectGraphics dg; if (bkSrc==null){ test = Image.createImage(bkWidth,bkHeight); //为虾米要新创建一个涅,因为原来的image是不可变的,不能getPixels test.getGraphics().drawImage(bk,0,0,g.LEFT|g.TOP); bkSrc = new short[bk.getWidth()*bk.getHeight()]; dg = DirectUtils.getDirectGraphics(test.getGraphics()); dg.getPixels(bkSrc, 0, bkWidth, 0, 0, bkWidth, bkHeight, 444); } if (objSrc==null){ test = Image.createImage(objWidth,objHeight); test.getGraphics().drawImage(obj,0,0,g.LEFT|g.TOP); objSrc = new short[obj.getWidth()*obj.getHeight()]; dg = DirectUtils.getDirectGraphics(test.getGraphics()); dg.getPixels(objSrc, 0, objWidth, 0, 0, objWidth, objHeight,444); } dg = DirectUtils.getDirectGraphics(g); g.drawImage(bk,0,0,g.LEFT|g.TOP); long a = System.currentTimeMillis(); short drawSrc[] = new short[obj.getWidth()*obj.getHeight()]; for (int i = 0;i<objSrc.length;i++){ short obj = objSrc[i]; int line = i/objWidth; int row = i%objWidth; short bk = bkSrc[line*bkWidth+row]; int objR = obj>>8&0xf; int objG = obj>>4&0xf; int objB = obj&0xf; int bkR = bk>>8&0xf; int bkG = bk>>4&0xf; int bkB = bk&0xf; objR = objR*per/100+bkR*(100-per)/100; objG = objG*per/100+bkG*(100-per)/100; objB = objB*per/100+bkB*(100-per)/100; System.out.println(objSrc[i]&0xf000); drawSrc[i] = (short)(objSrc[i]&0xf000|((objR<<8)|(objG<<4)|objB)); } dg.drawPixels(drawSrc,false,0,objWidth,0,0,objWidth,objHeight,0,444); g.drawString((System.currentTimeMillis()-a)+"",0,0,g.LEFT|g.TOP); } 7/12/2005 单独存bSound第一步:添加以下两个函数:
void loadSetting() { RecordStore rs=null; try { //打开纪录 bHide=true; rs=RecordStore.openRecordStore(strRec,true); if(rs.getNumRecords() <= 0) { this.saveSetting(); } else { byte data[] = rs.getRecord(1);
if (data == null)return; ByteArrayInputStream baos = new ByteArrayInputStream(data, 0, data.length); DataInputStream dos = new DataInputStream(baos); try { bSound = dos.readBoolean(); nSetID = dos.readByte(); nContextID = dos.readByte(); }
catch (Exception e) {} }
}catch(Exception e)
{ e.printStackTrace(); } return ; }
int nSetID = 1;//记录设置用的序号
int nContextID = -1;//记录内容用的序号 boolean saveSetting() { boolean bOK=false; RecordStore rs=null; //打开纪录 ByteArrayOutputStream baos=new ByteArrayOutputStream(); DataOutputStream dos=new DataOutputStream(baos); try { //写入数据信息 try{ dos.writeBoolean(bSound); dos.write(nSetID); dos.write(nContextID); }catch(Exception e){ dos.close(); } dos.close(); //写入到纪录 byte[] data=baos.toByteArray(); rs=RecordStore.openRecordStore(strRec,true); int a= rs.getNumRecords(); // int b = rs.getSizeAvailable(); // rs.getSizeAvailable(); if(a <= 0)
{ nSetID = rs.addRecord(data, 0, data.length); }
else { rs.setRecord(nSetID, data, 0, data.length); } rs.closeRecordStore(); bOK=true;
}catch(Exception e) { } return bOK;
}
第二步:在Games的构造函数中调用loadSetting,在quitGame()中调用saveSetting();
第三步:把saveGame() { try { ... }catch() {} ... dos.close(); //写入到纪录 byte[] data=baos.toByteArray(); rs=RecordStore.openRecordStore(strRec,true); rs.addRecord(data,0,data.length); rs.closeRecordStore(); }修改为 { try { ... }catch() {} ... dos.close(); //写入到纪录 byte[] data=baos.toByteArray(); rs=RecordStore.openRecordStore(strRec,true); if(nContextID < 0) nContextID = rs.addRecord(data,0,data.length); else rs.setRecord(nContextID, data, 0, data.length); rs.closeRecordStore();
} 第四步:把loadGame()中 { ... for(int i=1;i<rs.getNextRecordID();i++) { //查询所有的纪录 if(rs.getRecordSize(i)<=0) continue; //读取数据 byte data[]=rs.getRecord(i); if(data==null) continue; ByteArrayInputStream baos=new ByteArrayInputStream(data,0,data.length); DataInputStream dos=new DataInputStream(baos); try { ... } }修改为 { ... if(nContextID < 0)return false; byte data[]=rs.getRecord(nContextID); if(data==null) return false; ByteArrayInputStream baos=new ByteArrayInputStream(data,0,data.length); DataInputStream dos=new DataInputStream(baos); try { ... } } 第五步:将原saveGame和loadGame中有关bSound的部分去掉。 曹珺
上海岩浆数码技术有限公司
上海市青海路118号云海苑17层(200041) 电话:021 52280720/1/2/3-203 传真:021 62181045 手机:13817066976 邮箱:cao.jun@magma-digital.com 7/2/2005 看到的爆寒的招聘,佩服死这公司的hr了,有这么写招聘广告的么
6/13/2005 察看剩余内存Runtime runtime = Runtime.getRuntime(); runtime.gc(); System.out.println(runtime.freeMemory()); 新框架drawKey画不出来或者画一半找到drawKey函数,加上红颜色或者其它颜色的一行,反正是颜色不一样的那一行,忘记设的是什么颜色了 /**绘制一个按钮<br> * x,y(Int:In):左上角坐标<br> * ns(Int:In):按钮类型(BIT0:凸凹标志,BIT1:边标志) * nColor(Int:In):按钮颜色*/ void drawKey(int x,int y,int w,int h,Graphics g,int ns, int nColor) { g.setClip(0,0,CatDisp.decWidth,CatDisp.decHeight); if((ns&1)!=0) { //凸按钮 if((ns&2)!=0) {//是否绘制边 setColor(g, nColor, -120); 。。。。 。。。。 。。。 JBuilder X支持中文的解决方法(转自Borland网站)
在NEC机子上使用 drawRoundRect()的问题在用NEC上使用drawRoundRect(int x,int y, int width, int height,int arcWidth, int arcHeight)函数时要注意arcWidth和arcHeight的值不能太小,至少要大于4,否则会发生致命性错误,在模拟器发现不了问题,在真机上会重起. Player播放音效问题用Player调用mid音效完成后要记得调用Player.close()释放掉这个资源 例如: Player player = null;//成员变量 player = Manager.createPlayer(is, "audio/midi");//创建Player player.start();//播放 //如果不再使用了 player.stop();//停止 player.close();//必须调用,否则下次用上面的语句创建player的时候player的状态永远是stop导致无法循环播放音效; 60手机media server错误60concept模拟器报com.nokia.phone.sdk.mirror.lcdui.drawImage错 但是用7210模拟器报空指针 png文件损坏,修改了调色板没算crc,事实证明xp不验证crc 优化速度buffer整个地图,把png数据读进内存,使用时候在createImage(byte[]),局部重绘 for循环处理vector for (int i = floatIce.size()-1;i>=0;i--){ System.out.println("fcuk"); point p = (point)(floatIce.elementAt(i)); int k = (getLayerData(p.x,p.y,3)&0xf0)>>4; if (k==3){ p.clear = true; setLayerData(p.x,p.y,1,0); floatIce.removeElement(p); } } nec模拟器不能运行(找不到jad文件)工程所在目录名字中有空格 moto模拟器不能用其实都能用,用v600的按键代码就可以了,但是真机上就不能用 60模拟器能用但是手机出问题1.模拟器不显中文,所有font.getCharWidth("忘")=0,font.charsWidth也是0,问题可能在中文处理过程中和和中文处理有关的地方,比如算行数,偶的alert超过行数会画图标,draw的那一句有错,但是模拟器不显,所以不换行。。。。-_-b 2.没事儿不要catch(Exception e){},要么print,要么throw,要不然出了错都不知道是哪儿。 drawRect fillrectdrawRect(0,0,10,1)会画一条两个像素的横线 |
||||||||||||||||||||
|
|