3-5 ES6与小游戏资源加载器的封装

2018-02-27  本文已影响38人  留白_汉服vs插画

res资源先加载到项目里。这里是图片资源。

关于资源加载的两个类,Resource和ResourceLoader.

export不仅仅可以用在类上,也可以用来变量和function上,都是相通的。但是有一点要记得,export后面一定要跟上变量的声明。它是把这个变量提供出去,并不是提供这个变量的值。export的是这个变量的引用,而不是这个变量的值。

export const Resources=[

['background','res/background.png'],

    ['birds','res/birds.png'],

    ['land','res/land.png'],

    ['pencilDown','res/pie_down.png'],

    ['pencilUp','res/pie_up.png'],

    ['start_Button','res/start_button.png']

];

资源文件只有两个,另外一个是ResourceLoader.js

//资源文件资源文件加载器,确保只有资源文件全部加载之后才开始渲染。

import {Resources}from "./Resources.js";  //这里要加js

export  class ResourceLoader {

        map =null; //语法错误,这一句去掉就好了。

        constructor(){

        this.map =new Map(Resources); //这里是直接把一个数组塞进去了。

        for(let [key,value] of this.map)

//这是一个循环遍历,如果打印的话 console.log(key,value);可以看出其中key是键值,也就是名称,

                    {const image = new Image();

                     image.src = value;

                        this.map.set(key,image); } 

//value是地址,这里一个循环,将地址换成image实例,并且实例有src属性,属性是对应value地址。

        }

        onloaded(callback) {

                    let loadedCount = 0;

                    for (let value of this.map.values()) {

                      }

                    //注意这个循环,只要其中value进行循环,不用管key的值。

            }

}

在Main.js中引入ResourceLoader ,

//主控制类,初始化整个游戏的精灵,作为游戏开始入口

import {ResourceLoader}from "./js/base/ResourceLoader.js";

export class Main {

constructor(){

        console.log('nihao');

        new ResourceLoader()

}

}

这时候,浏览器会报错, ResourceLoader.js中       map =null;语法错误,这一句去掉就好了。

Map数据结构,是一个键值对,会以key value 存储。有set get方法。其中的值是唯一的。初始化的时候,可以不断set,还可以直接塞进去一个数组。

let 和var作用域是不一样的。

下面是使用资源加载器:在main.js里面

上一篇下一篇

猜你喜欢

热点阅读