用类封装精灵的操作,并实例化各种精灵对象 精灵的数字序号使用单例模式的数字生成器实现

 首先,精灵的数字序号采用单例设计模式制作一个数字生成器

功能就是每次调用得到一个不断增加的数字

package com.swift;

public class NumberCreator {
  //单例饿汉式生成唯一的对象
private static NumberCreator instance=new NumberCreator(); private int number;
  //私有化构造方法,外界无法生成对象
private NumberCreator() { }
  //静态方法返回这个对象
public static NumberCreator getCreator() { return instance; } //对象调用方法每次增加私有成员number的数值 public int createNumber() { return this.number++; } }

接下来制作精灵的封装类,采用上面单例的自动计数器生成数字编号

简单封装了精灵的播放动画和设置位置功能

package com.swift;

import com.rupeng.game.GameCore;

public class Sprite{
    private int number;
    public Sprite(String spriteName) {
        this.number=NumberCreator.getCreator().createNumber();
        GameCore.createSprite(this.number, spriteName);
    }
    public void playAnimate(String animateName,boolean isrepeat) {
        GameCore.playSpriteAnimate(this.number, animateName, isrepeat);
    }
    //方法重载 设置默认动画重复播放
    public void playAnimate(String animateName) {
        GameCore.playSpriteAnimate(this.number, animateName, true);
    }
    public void setPosition(int x,int y) {
        GameCore.setSpritePosition(this.number, x, y);
    }
}

最后展示类中实例化精灵,生成不同对象并实现功能

package com.swift;

import com.rupeng.game.GameCore;

public class DemoSprite implements Runnable{

    public static void main(String[] args) {
        GameCore.start(new DemoSprite());
    }

    @Override
    public void run() {
        //窗口大小
        GameCore.setGameSize(500, 300);
        //制作马里奥精灵对象
        Sprite mario=new Sprite("mario");
        mario.playAnimate("walk", true);
        mario.setPosition(200, 100);
        //制作马里奥精灵对象
        Sprite tiger=new Sprite("tiger");
        tiger.playAnimate("run", true);
        tiger.setPosition(300, 120);
        GameCore.pause(5000);
    }

}

实现效果图:

 素材及程序下载地址:

https://pan.baidu.com/s/1hs3qR0S

posted @ 2017-11-05 22:26  Advancing-Swift  阅读(472)  评论(0编辑  收藏  举报