作者:pandonix
日期:2007年9月4日
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
原文地址:http://pandonix.iteye.com
在J2me中实现水波纹效果
常常在有的网站上面看到一些比较绚丽的水波纹效果。其实,这些都是粒子系统的程序实现。在JSP开发中,已经提供了很多这种特效的实现代码。现在,由于cldc1.1已经支持浮点数运算,所以,我们可以直接在j2me中实现如图所示的特效:
java 代码
- import javax.microedition.lcdui.game.*;
- import javax.microedition.lcdui.*;
-
-
-
-
-
-
-
-
-
-
-
-
-
- public class SplashCanvas extends Canvas implements Runnable{
-
- Image img;
- Image imgBuff;
- Graphics ibg;
- int w,h;
- int num=0;
- double angle;
- int wave;
-
- public SplashCanvas() {
- this.setFullScreenMode(true);
- try{
- init();
- }
- catch(Exception e){
-
- }
- }
-
- public void init() throws Exception
- {
- img=Image.createImage("/1.png");
- w=img.getWidth();
- h=img.getHeight();
- imgBuff=Image.createImage(2*w,h);
- ibg=imgBuff.getGraphics();
- ibg.drawImage(img,0,0,0);
- }
-
- public void paint(Graphics g) {
- g.setColor(255,255,255);
- g.fillRect(0,0,g.getClipWidth(),g.getClipHeight());
- angle=num*Math.PI/6;
- double parm = 14.0;
- for(int i=0;i
- {
- wave=(int)((i/parm+1)*Math.sin(h/parm*(h-i)/(i+1)+angle));
- ibg.drawRegion(img, 0, i, w, 1, 0, 0, i + wave, 0);
-
- }
- num=++num%12;
- g.drawImage(img,10,0,0);
- g.drawRegion(imgBuff,0,0,2*w,h,Sprite.TRANS_MIRROR_ROT180,10,h,0);
-
- }
-
- public void run(){
- while(true){
- try{
- Thread.sleep(80);
- repaint();
- }
- catch(Exception e){
-
- }
- }
- }
- }
思考:
该算法最关键部分采用了浮点数运算,由于只有cldc1.1才支持,所以对水波纹特效的通用性产生了质疑。其实,在cldc1.0也不是不能实现。首先,可以采用将int放大的方式来代替小数,例如,采用1400来表示1.4,最后对结果进行/1000处理。这也是j2me中对于小数的通常处理。其次,可以按照放大int的思路来模拟sin,即,将sin的值放大1000倍以后,采用数组存放起来。
当然,还可以采用开源的浮点数库,例如,在j2mepolish中就提供了HFloat这样的类,遗憾的是,该类的实现效率很低。
- 大小: 21.4 KB
分享到:
相关推荐
总之,水波纹和倒影效果在Java J2ME中可以通过一系列数学运算和图像处理技巧实现,尽管平台有限,但依然可以创造出令人信服的视觉效果。通过研究和理解这些实现,开发者可以扩展其在移动设备上的图形编程能力。
水波纹特效在J2ME中实现并不简单,因为J2ME的资源有限,包括内存和计算能力。然而,通过巧妙的算法和优化,开发者可以创建出令人满意的动态效果。以下是一些关于如何在J2ME中实现水波纹特效的关键知识点: 1. **...
在Java Micro Edition (J2ME) 平台上开发移动应用时,由于资源限制,往往需要进行一些巧妙的设计来实现特定功能。"J2ME 画布实现中文输入"这一主题,就是针对在J2ME环境下如何创建一个自定义的中文输入系统进行探讨...
在移动设备上实现多媒体功能是Java ME(J2ME)平台的一个重要应用领域,特别是对于音乐播放,歌词滚动效果能够极大地提升用户...通过学习和分析这个项目,开发者可以深入理解J2ME在实现多媒体应用方面的技巧和方法。
在本主题中,我们将深入探讨如何在 J2ME 平台上实现水波倒影效果,同时关注 CLDC1.1 和 CLDC1.0 版本的差异。 首先,"水波倒影" 是一种视觉特效,通常用于增强图形用户界面的吸引力。在 J2ME 应用程序中,这种效果...
在J2ME中,由于没有直接的OpenGL支持,开发者需要依赖如M3G(Mobile 3D Graphics)这样的API来实现3D图形。 M3G是J2ME的一个扩展,它是Java Micro Edition Media Profile的一部分,提供了3D图形的标准接口。使用M3G...
在J2ME中,可以使用Java 2D API来绘制和更新这些效果。Java 2D提供了一套丰富的图形方法,如绘图、填充、旋转、缩放等,使得开发者能够创建复杂的2D图形和动画。水波特效可能涉及到图像的扭曲、平移以及透明度变化等...
在实现中文输入时,这两个组件需要被适当地定制以处理中文字符的输入和显示。 2. **中文字符编码** 中文字符在计算机中通常以Unicode编码表示,这是一种包含世界上大多数语言字符的通用编码系统。在J2ME中,使用...
本程序实现了在J2ME中的备忘录的增加记录、删除记录、修改记录以及查询记录的功能。
`Display` 是J2ME中的屏幕管理器,它负责管理显示在设备上的所有屏幕。`DoodleCanvas` 是一个自定义的 `Canvas` 类,它将作为用户交互和绘图的界面。 `DoodleCanvas` 类继承自 `Canvas` 类,`Canvas` 是J2ME中提供...
在J2ME中,我们可以创建一个遮罩图像(通常为单色),然后将其与原始图像进行位运算,如AND或OR运算,达到蒙版效果。 在J2ME中处理图片时,我们还需要考虑性能问题,因为移动设备的资源有限。为了优化,可以采用...
在J2ME中,可以使用Timer和TimerTask类来实现。设置一个特定时间后,计时器触发的任务会调用MIDlet的startApp()方法,从而跳过Splash屏幕进入主应用程序。 4. **过渡效果**: 为了使用户体验更加流畅,可以在...
### 在J2ME中实现DES加密 在J2ME环境下,DES加密可以通过CryptoLib包实现,这是一个开源的代码库,可在其官方网站上找到并下载。CryptoLib是专为J2ME平台优化的,与Sun Microsystems的J2SE兼容,可以直接在手机终端...
Canvas是J2ME中的基础绘图类,允许开发者进行低级别的图形绘制。在这个场景下,我们将需要覆盖`paint()`方法来绘制九个可点击的区域,每个区域代表一个菜单项。 1. **创建九宫格布局** - 首先,我们需要确定屏幕的...
在这个案例中,"J2ME中实现电话通讯录的源代码"项目运用了MVC(Model-View-Controller)设计模式,这是一种广泛用于软件工程的架构模式,特别适用于用户界面的开发。 **1. MVC设计模式详解:** - **Model(模型)**...
在J2ME中,这可以通过遍历图像像素并交换其Y坐标来实现。翻转后的图像将作为倒影的基础。 3. **水波效果生成**:水波的形成通常涉及扭曲原始图像。这可以通过使用某种算法(如傅立叶变换或基于像素的位移方法)来...
J2ME中的GAME API,是MIDP的一个扩展,特别为游戏开发设计。它提供了高级图形绘制功能,如位图操作、动画处理、声音播放等,使得开发者能创建更具交互性和动态效果的游戏。 ### 学习路径与实践 学习J2ME,首先要...
在**J2ME中文API**中,主要包含以下几个核心部分: 1. **CLDC(Connected Limited Device Configuration)**:这是一个轻量级的Java虚拟机,用于资源有限的设备。它定义了运行时环境和基本类库。 2. **MIDP...