JavaFX游戏制作:让你的精灵动起来

电子游戏最重要的表现形式我认为是动作。当然精美的立绘也可以给人非常棒的感官体验,但是能动的角色往往更能让人有心驰神往的感觉。这篇文章我将借助JavaFX让精灵动起来。

动画实体类

动画实体类主要存放动画的每一帧,以及长宽和位置信息等等基础信息。

与之前的图片类不同的是,我们定义了一个图片指针,指向将要绘制的下一帧信息。

@Data
@NoArgsConstructor
// 动画实体
public class AnimEntity {

    // 图片集合
    private List<Image> frame;
    // 动画指针
    private int frameIdx;
    // 图片的长宽
    private int height;
    private int width;
    // 位置
    private int posx;
    private int posy;

    public AnimEntity(List<String> imagename, int width, int height, int posx, int posy){
        this.width = width;
        this.height = height;
        this.posx = posx;
        this.posy = posy;
        this.frameIdx = 0;
        frame = new ArrayList<>();
        for(int i=0; i<imagename.size(); i++){
            frame.add(new Image(imagename.get(i), width, height, true, true));

        }
    }

    // 播放下一帧
    public Image getnext(){
        Image framenow = frame.get(frameIdx++);
        if(frameIdx == frame.size()){
            frameIdx = 0;
        }
        return framenow;
    }

}

动画画家

动画画家存储了所有将要绘制到画布上的信息,并且按照顺序将他们绘制出来

public class AnimDrawer {

    private Canvas canvas;
    private GraphicsContext gc;

    // 动画集合
    private List<AnimEntity> animlist;

    public AnimDrawer(Canvas canvas, GraphicsContext gc){
        this.canvas = canvas;
        this.gc = gc;
        animlist = new ArrayList<>();
    }

    // 添加动画实体
    public void addAnim(AnimEntity animEntity){
        this.animlist.add(animEntity);
    }

    // 移除动画实体
    public void removeAnim(AnimEntity animEntity){
        this.animlist.remove(animEntity);
    }

    // 开始不停画动画
    public void start(int timeout){
        new Thread(()->{
            wh
世界地图矢量数据可以通过多种网站进行下载。以下是一些提供免费下载世界地图矢量数据的网站: 1. Open Street Map (https://www.openstreetmap.org/): 这个网站可以根据输入的经纬度或手动选定范围来导出目标区域的矢量图。导出的数据格式为osm格式,但只支持矩形范围的地图下载。 2. Geofabrik (http://download.geofabrik.de/): Geofabrik提供按洲际和国家快速下载全国范围的地图数据数据格式支持shape文件格式,包含多个独立图层,如道路、建筑、水域、交通、土地利用分类、自然景观等。数据每天更新一次。 3. bbbike (https://download.bbbike.org/osm/): bbbike提供全球主要的200多个城市的地图数据下载,也可以按照bbox进行下载。该网站还提供全球数据数据格式种类齐全,包括geojson、shp等。 4. GADM (https://gadm.org/index.html): GADM提供按国家或全球下载地图数据的服务。该网站提供多种格式的数据下载。 5. L7 AntV (https://l7.antv.antgroup.com/custom/tools/worldmap): L7 AntV是一个提供标准世界地图矢量数据免费下载的网站。支持多种数据格式下载,包括GeoJSON、KML、JSON、TopJSON、CSV和高清SVG格式等。可以下载中国省、市、县的矢量边界和世界各个国家的矢量边界数据。 以上这些网站都提供了世界地图矢量数据免费下载服务,你可以根据自己的需求选择合适的网站进行下载
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值