`
pandonix
  • 浏览: 400849 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在J2me中实现水波纹效果

    博客分类:
  • J2ME
阅读更多

作者:pandonix

日期:200794

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

原文地址:http://pandonix.iteye.com

 

J2me中实现水波纹效果

    常常在有的网站上面看到一些比较绚丽的水波纹效果。其实,这些都是粒子系统的程序实现。在JSP开发中,已经提供了很多这种特效的实现代码。现在,由于cldc1.1已经支持浮点数运算,所以,我们可以直接在j2me中实现如图所示的特效:

java 代码
  1. import javax.microedition.lcdui.game.*;  
  2. import javax.microedition.lcdui.*;  
  3. /** 
  4.  * 
  5.  * 

    Title: 在J2me中实现水波纹效果

     
  6.  * 
  7.  * 

    Description: 

     
  8.  * 
  9.  * 

    Copyright: Copyright (c) 2007

     
  10.  * 
  11.  * 

    Company: 

     
  12.  * 
  13.  * @author pandonix 
  14.  * @version 1.0 
  15.  */  
  16. public class SplashCanvas extends Canvas implements Runnable{  
  17.   
  18.     Image img;  
  19.     Image imgBuff;  
  20.     Graphics ibg;  
  21.     int w,h;  
  22.     int num=0;  
  23.     double angle;  
  24.     int wave;  
  25.   
  26.     public SplashCanvas() {  
  27.         this.setFullScreenMode(true);  
  28.         try{  
  29.             init();  
  30.         }  
  31.         catch(Exception e){  
  32.   
  33.         }  
  34.     }  
  35.   
  36.     public void init() throws Exception  
  37.     {  
  38.           img=Image.createImage("/1.png");  
  39.           w=img.getWidth();  
  40.           h=img.getHeight();  
  41.           imgBuff=Image.createImage(2*w,h);  
  42.           ibg=imgBuff.getGraphics();  
  43.           ibg.drawImage(img,0,0,0);  
  44.      }  
  45.   
  46.     public void paint(Graphics g) {  
  47.         g.setColor(255,255,255);  
  48.         g.fillRect(0,0,g.getClipWidth(),g.getClipHeight());  
  49.         angle=num*Math.PI/6;  
  50.         double parm = 14.0;  
  51.         for(int i=0;i
  52.         {  
  53.               wave=(int)((i/parm+1)*Math.sin(h/parm*(h-i)/(i+1)+angle));  
  54.                   ibg.drawRegion(img, 0, i, w, 100, i + wave, 0);  
  55.   
  56.         }  
  57.         num=++num%12;  
  58.         g.drawImage(img,10,0,0);  
  59.         g.drawRegion(imgBuff,0,0,2*w,h,Sprite.TRANS_MIRROR_ROT180,10,h,0);  
  60.   
  61.     }  
  62.   
  63.     public void run(){  
  64.         while(true){  
  65.             try{  
  66.                 Thread.sleep(80);  
  67.                 repaint();  
  68.             }  
  69.             catch(Exception e){  
  70.   
  71.             }  
  72.         }  
  73.     }  
  74. }  

思考:

该算法最关键部分采用了浮点数运算,由于只有cldc1.1才支持,所以对水波纹特效的通用性产生了质疑。其实,在cldc1.0也不是不能实现。首先,可以采用将int放大的方式来代替小数,例如,采用1400来表示1.4,最后对结果进行/1000处理。这也是j2me中对于小数的通常处理。其次,可以按照放大int的思路来模拟sin,即,将sin的值放大1000倍以后,采用数组存放起来。

当然,还可以采用开源的浮点数库,例如,在j2mepolish中就提供了HFloat这样的类,遗憾的是,该类的实现效率很低。

 


  • 大小: 21.4 KB
  • src.rar (1.8 KB)
  • 下载次数: 296
分享到:
评论
1 楼 univasity 2008-04-29  
强~~ 谢谢分享

相关推荐

    水波纹效果

    总之,水波纹和倒影效果在Java J2ME中可以通过一系列数学运算和图像处理技巧实现,尽管平台有限,但依然可以创造出令人信服的视觉效果。通过研究和理解这些实现,开发者可以扩展其在移动设备上的图形编程能力。

    j2me_water_effect.rar_j2me

    水波纹特效在J2ME中实现并不简单,因为J2ME的资源有限,包括内存和计算能力。然而,通过巧妙的算法和优化,开发者可以创建出令人满意的动态效果。以下是一些关于如何在J2ME中实现水波纹特效的关键知识点: 1. **...

    J2ME 画布实现中文输入

    在Java Micro Edition (J2ME) 平台上开发移动应用时,由于资源限制,往往需要进行一些巧妙的设计来实现特定功能。"J2ME 画布实现中文输入"这一主题,就是针对在J2ME环境下如何创建一个自定义的中文输入系统进行探讨...

    J2ME 实现mp3 歌词滚动效果源码

    在移动设备上实现多媒体功能是Java ME(J2ME)平台的一个重要应用领域,特别是对于音乐播放,歌词滚动效果能够极大地提升用户...通过学习和分析这个项目,开发者可以深入理解J2ME在实现多媒体应用方面的技巧和方法。

    J2ME水波倒影(CLDC1.1及CLDC1.0)

    在本主题中,我们将深入探讨如何在 J2ME 平台上实现水波倒影效果,同时关注 CLDC1.1 和 CLDC1.0 版本的差异。 首先,"水波倒影" 是一种视觉特效,通常用于增强图形用户界面的吸引力。在 J2ME 应用程序中,这种效果...

    j2me实现3D效果

    在J2ME中,由于没有直接的OpenGL支持,开发者需要依赖如M3G(Mobile 3D Graphics)这样的API来实现3D图形。 M3G是J2ME的一个扩展,它是Java Micro Edition Media Profile的一部分,提供了3D图形的标准接口。使用M3G...

    j2me水波特效.rar

    在J2ME中,可以使用Java 2D API来绘制和更新这些效果。Java 2D提供了一套丰富的图形方法,如绘图、填充、旋转、缩放等,使得开发者能够创建复杂的2D图形和动画。水波特效可能涉及到图像的扭曲、平移以及透明度变化等...

    J2ME中文输入Demo

    在实现中文输入时,这两个组件需要被适当地定制以处理中文字符的输入和显示。 2. **中文字符编码** 中文字符在计算机中通常以Unicode编码表示,这是一种包含世界上大多数语言字符的通用编码系统。在J2ME中,使用...

    J2ME中实现备忘录的增删改查

    本程序实现了在J2ME中的备忘录的增加记录、删除记录、修改记录以及查询记录的功能。

    J2ME实现画图程序

    `Display` 是J2ME中的屏幕管理器,它负责管理显示在设备上的所有屏幕。`DoodleCanvas` 是一个自定义的 `Canvas` 类,它将作为用户交互和绘图的界面。 `DoodleCanvas` 类继承自 `Canvas` 类,`Canvas` 是J2ME中提供...

    j2me 实现ps的效果的代码 图片混合技术

    在J2ME中,我们可以创建一个遮罩图像(通常为单色),然后将其与原始图像进行位运算,如AND或OR运算,达到蒙版效果。 在J2ME中处理图片时,我们还需要考虑性能问题,因为移动设备的资源有限。为了优化,可以采用...

    在J2ME程序中制作Splash画面效果.zip

    在J2ME中,可以使用Timer和TimerTask类来实现。设置一个特定时间后,计时器触发的任务会调用MIDlet的startApp()方法,从而跳过Splash屏幕进入主应用程序。 4. **过渡效果**: 为了使用户体验更加流畅,可以在...

    在J2ME上实现对数据的DES加密

    ### 在J2ME中实现DES加密 在J2ME环境下,DES加密可以通过CryptoLib包实现,这是一个开源的代码库,可在其官方网站上找到并下载。CryptoLib是专为J2ME平台优化的,与Sun Microsystems的J2SE兼容,可以直接在手机终端...

    j2me中简单实现九宫格菜单

    Canvas是J2ME中的基础绘图类,允许开发者进行低级别的图形绘制。在这个场景下,我们将需要覆盖`paint()`方法来绘制九个可点击的区域,每个区域代表一个菜单项。 1. **创建九宫格布局** - 首先,我们需要确定屏幕的...

    J2ME中实现电话通讯录的源代码

    在这个案例中,"J2ME中实现电话通讯录的源代码"项目运用了MVC(Model-View-Controller)设计模式,这是一种广泛用于软件工程的架构模式,特别适用于用户界面的开发。 **1. MVC设计模式详解:** - **Model(模型)**...

    图像处理 image proccess 水波倒影效果

    在J2ME中,这可以通过遍历图像像素并交换其Y坐标来实现。翻转后的图像将作为倒影的基础。 3. **水波效果生成**:水波的形成通常涉及扭曲原始图像。这可以通过使用某种算法(如傅立叶变换或基于像素的位移方法)来...

    J2ME中文教程,J2ME手机程序开发

    J2ME中的GAME API,是MIDP的一个扩展,特别为游戏开发设计。它提供了高级图形绘制功能,如位图操作、动画处理、声音播放等,使得开发者能创建更具交互性和动态效果的游戏。 ### 学习路径与实践 学习J2ME,首先要...

    J2ME 中文api以及应用 J2ME 中文api以及应用.rar

    在**J2ME中文API**中,主要包含以下几个核心部分: 1. **CLDC(Connected Limited Device Configuration)**:这是一个轻量级的Java虚拟机,用于资源有限的设备。它定义了运行时环境和基本类库。 2. **MIDP...

Global site tag (gtag.js) - Google Analytics