Maison > interface Web > Tutoriel H5 > le corps du texte

Cadre de jeu HTML5 enregistrement de développement cnGameJS - explication détaillée du code du module de chargement des ressources

黄舟
Libérer: 2017-03-24 16:01:51
original
1437 Les gens l'ont consulté

1. Fonction  

Ce module est l'entrée du jeu. Nous chargeons les ressources via ce module et appelons la fonction d'entrée de l'objet du jeu une fois le chargement des ressources terminé. De plus, ce module comprend également la commutation entre les scènes de jeu, ainsi que le calcul et l'affichage du pourcentage de chargement.

Lors du démarrage du jeu, transmettez d'abord la liste des ressources qui doivent être chargées, puis transmettez l'objet du jeu, et enfin transmettez la fonction qui est appelée après le chargement de chaque ressource. Cette fonction peut obtenir. le pourcentage de chargement. Comme suit :

cnGame.loader.start(["src1","src2","src3"],gameObj,function(loadedPercent){});
Copier après la connexion

Dans ce cas, les trois ressources d'image transmises précédemment seront chargées en premier, et chaque fois qu'une image est chargée, la fonction de rappel suivante , <🎜 sera être appelé. >Cette fonction peut obtenir le pourcentage de chargement, implémenter l'interface de chargement et indiquer à l'utilisateur la progression actuelle du chargement et d'autres fonctions. Une fois le chargement terminé, appelez la méthode initialize de l'objet de jeu gameObj pour démarrer le jeu.

2. Implémentation spécifique :

Nous regardons d'abord le code du chargeur :

/**
     *图像加载器
    **/    
    var loader={
        sum:0,            //图片总数
        loadedCount:0,    //图片已加载数
        loadingImgs:{}, //未加载图片集合
        loadedImgs:{},    //已加载图片集合
        /**
         *图像加载,之后启动游戏
        **/    
        start:function(src,gameObj,onLoad){//可传入src数组或单个src "xxx.jpg" or ["xxx.jpg","ggg,gif","www.png"]
        
            if(cg.core.isArray(src)){ 
                this.sum=src.length;
                for(var i=0,len=src.length;i<len;i++){
                    this.gameObj=gameObj;
                    this.onLoad=onLoad;
                    this.loadingImgs[src[i]]=new Image();
                    this.loadingImgs[src[i]].onload=imgLoad(this);
                    this.loadingImgs[src[i]].src=src[i];
                    this.loadingImgs[src[i]].srcPath=src[i];//没有经过自动变换的src
                }
                    
            }
            
        }
        
    }
Copier après la connexion
Tout d'abord, le chargeur de ressources enregistre les champs suivants : liste des ressources chargées, liste des ressources déchargées, nombre total de ressources et nombre total de ressources chargées. Lorsque la méthode start est appelée, le chargeur commence à parcourir l'image src

array et génère un objet image pour le chargement. De plus, nous devons enregistrer srcPath pour chaque objet image, qui est le paramètre src d'origine (car par défaut le navigateur convertira le paramètre src en un chemin d'image complet) . L'étape suivante consiste à ajouter un gestionnaire onLoad pour chaque image. Nous devons calculer le pourcentage de chargement dans ce gestionnaire et enregistrer l'objet image chargé dans l'objetloadImgs pour faciliter son utilisation ultérieure par les utilisateurs. Le processus de chargement de l'image est le suivant :

/**
     *图像加载完毕的处理程序
    **/    
    var imgLoad=function(self){
        return function(){
            self.loadedCount+=1;
            self.loadedImgs[this.srcPath]=this;
            this.onLoad=null;                    //保证图片的onLoad执行一次后销毁
            self.loadedPercent=Math.floor(self.loadedCount/self.sum*100);
            self.onLoad&&self.onLoad(self.loadedPercent);
            if(self.loadedPercent===100){
                self.loadedCount=0;
                self.loadedPercent=0;
                loadingImgs={};
                if(self.gameObj&&self.gameObj.initialize){
                    self.gameObj.initialize();
                    if(cg.loop&&!cg.loop.stop){//结束上一个循环
                        cg.loop.end();
                    }
                    cg.loop=new cg.GameLoop(self.gameObj);//开始新游戏循环
                    cg.loop.start();
                }
                
            }
            
        
        }
    }
Copier après la connexion
Une fois chaque image chargée, la quantité de chargement est augmentée de 1, l'objet image est enregistré et le pourcentage d'achèvement du chargement est calculé.

Enfin, vous devez supprimer le gestionnaire de l'image (car l'image a été chargée, le gestionnaire est inutile et peut être libéré pour économiser les ressources mémoire). Lorsque le pourcentage de chargement est de 100%, toutes les valeurs seront réinitialisées et les chargementImgs seront libérés pour le prochain chargement des ressources. De plus, la boucle du jeu sera également démarrée (la boucle de jeu). est responsable de tous les objets de jeu dans chaque image) mis à jour et dessiné)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal