Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 491|回复: 0

[J2ME学习]用Sprite编写J2ME程序(一)

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-11 01:56:17 | 显示全部楼层 |阅读模式
    第一章   开始
                            关于本教程
                                                                         
        MDIP2.0增加了对精灵(Sprite)的支持。精灵就是一些拥有附加属性和方法的图像,能够轻松的实现动画、变换(旋转、镜像)和碰撞检验。在本教程中,你将探索非动画精灵(nonanimated sprites)和动画精灵(animated sprites)的区别,学习使用参考像素进行精灵的布局并且讨论如何检验精灵间的碰撞。

          学习本教程期间,你将创建两个MIDlet(J2ME应用程序)。第一个将展示如何创建并显示一个动画精灵;而另一个MIDlet是一个简单的游戏,用它来阐述运行中的碰撞检验。

           当你完成本教程时,你将具备将精灵运用到你的J2ME应用程序中所必需的基本知识。
      
      
      软件要求

    1、java Development Kit (JDK):JDK提供了Java源代码编译器和创建Java归档文件(Jar)的工具。当需要与Wireless Toolkit
          2.0一起使用时,你需要下载JDK1.4版或更高版本。你可以在 http://java.sun.com/products/jdk/1.4.1 找到JDK1.4。

    2、Wireless Toolkit (WTK):Sun公司的Wireless Toolkit 是J2ME MIDlet的集成开发环境。下载下来的WTK包括一个集成开发
           环境(IDE)和创建MIDlet所需要的库。WTK的下载地址是: http://java.sun.com/products/j2mewtoolkit

    安装软件

    JDK的安装
          使用JDK安装文件安装JDK。你可以使用默认目录也可以自己制定目录。如果你选择指定目录,那么请在安装的地方做个标记。Wireless Toolkit安装过程中会尝试着定位Java虚拟机(JVM)。如果找不到Java虚拟机,Wireless Toolkit安装程序会提示让你输入JDK安装路径。

    Wireless Toolkit(WTK)
           Wireless Toolkit包含在一个单独的可执行可执行文件中。运行这个可执行文件开始安装Wireless Toolkit。建议你使用默认的安装路径。然而如果你不用默认目录,请确保你选择的目录不包括任何间隔。 第 2 章    Sprite 简介  

    概述  
           Sprite( 精灵 ) 本质上其实就是 MIDP 图像。事实上,看看 Sprite 的构造函数你就能发现, Sprite 的 3 个构造函数中有两个需要传进一个图像对象 (Image Object) ;而第三个构造函数是通过一个已经存在的 Sprite 构造 Sprite 。  

    Sprite 的 3 个构造函数:  
    lSprite(Image image) : 构造一个不会动的 Sprite ;  
    lSprite(Image image, int frameWidth, int frameHeight) :
            创建一个可以动的 Sprite ;  
    lSprite(Sprite s) : 通过一个已经存在的 Sprite 构造 Sprite 。  

    精灵 VS 图像   
    精灵负责一个对象的可视化呈现。例如,你可以把 ( 图1 ) 中的每一幅图像创建成一个精灵。  
    (图1)精灵举例  
    精灵的变换  
         尽管精灵是从图像创建来的,但是与单纯的图像相比,精灵表现出许多附件的功能。例如,精灵提供了变换 (transformations) 功能?D?D允许你旋转和镜像一个精灵。 ( 图2 ) 展示了对精灵的几个变换:

    (图2)精灵的变换  

    精灵的参考像素  
         除了变换之外,精灵的另一重要特点就是参考像素这个概念。 默认情况下,精灵的参考像素被定义在 (0,0) 这个位置,如 ( 图3 ) 所示:


    ( 图3 ) 参考像素

    注意: 精灵周围的淡灰色框只是为了清晰地表现精灵的轮廓

          当你尝试着将精灵放置在某个特定位置但却没有参考点时,你就会发现使用参考像素的好处了。举个例子来说,在 ( 图4 ) 中,要把一个音符的头 ( 音符的圆形部分 ) 放置在线上,另一个放置在两条线之间,在没有逻辑参考点的情况下,如果你愿意,可以使用参考像素位置 (0,0) 。


    ( 图4 ) 改变精灵的位置

      下一板块将会演示如何用参考像素精确的解决这一问题。

    改变参考像素位置  
    让我们改变音符的参考像素位置。如 ( 图5五 ) 所示:


    ( 图5 ) 新参考像素

    采用新的参考像素位置,把音符放到五线谱 ( 乐谱中横线的专业名称 ) 的适当位置,更加直观。


    ( 图6 ) 用参考像素改变位置


    精灵动画  
          与图像相比,精灵的另一个好处就是能够实现动画。使用带有多帧画面的精灵(如图7所示),实现动画变成了简单地调用适当的方法,这些方法用于管理每一个画面按顺序显示出来从而形成动画效果的方法

    ( 图 7) 精灵帧
      注意: 虽然图像也可以包含多帧画面,但是精灵拥有独特的能够简单有效地实现动画的方法。在下一章你将看到用精灵实现动画的全部细节。

    创建精灵  
    接下来,你会看到一小段代码。这段实例代码继承自 Sprite 类,它将向你展示如何创建一个精灵:  

    /*--------------------------------------------------
    * AppleSprite.java
    *-------------------------------------------------*/

    import javax.microedition.lcdui.game.*;
    import javax.microedition.lcdui.*;

    public class AppleSprite extends Sprite {
        public AppleSprite(Image image) {
        //Sprite 类的构造函数  
        super(image);
        // 设置在画布上的位置 ... 后面将详细介绍  
        setRefPixelPosition(146, 35);
        }
      } 假设你有一张苹果的PNG图片,参照下面的代码就能创建一个精灵的实例了:  
    private AppleSprite spApple; // 苹果精灵
        ...
        try {
        // 非动画精灵
        spApple = new AppleSprite(Image.createImage("/apple.png"));
        }catch (Exception e) {
           System.out.println("不能读取PNG文件");
      ?? } 注意:PNG格式是J2ME/MIDP支持的唯一的图像格式。要获得更多关于PNG文件的信息,请访问http://www.libpng.org/pub/png/
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 13:32 , Processed in 0.371910 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表