美文网首页
3-5 ES6与小游戏资源加载器的封装

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

作者: 留白_汉服vs插画 | 来源:发表于2018-02-27 23:11 被阅读38次

    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里面

    相关文章

      网友评论

          本文标题:3-5 ES6与小游戏资源加载器的封装

          本文链接:https://www.haomeiwen.com/subject/rpgmxftx.html