Maison interface Web Tutoriel H5 Enregistrement de développement cnGameJS du cadre de jeu HTML5 - exemple de code du module de fonction de base

Enregistrement de développement cnGameJS du cadre de jeu HTML5 - exemple de code du module de fonction de base

Mar 24, 2017 pm 04:05 PM

Retour au répertoire

Organisation du code-cadre 1.cnGameJs

CoreFonction La fonction principale du module est de faciliter le développement ultérieur du framework et le développement de jeux utilisateur L'ensemble du framework est fermé pour éviter la contamination de la portée globale. Après cela, chaque module différent est dans sa propre fermeture, ce qui rend la séparation des différents modules plus claire . Par conséquent, la division des modules de notre framework sera comme ceci :

(function(win,undefined){//最大的闭包

var fun1=function(){//各模块公用的方法
}

//这里放各个小模块,它们有各自的闭包

}(window,undefined)
Copier après la connexion

Alors, comment diviser les autres petits modules ? Afin de permettre à chaque petit module d'avoir son propre espace de noms et dans sa propre fermeture , nous avons ajouté une méthode de registre, qui peut étendre son propre module dans différents espaces de noms , la première chose nous devons transmettre le nom de l'espace de noms, cette méthode génère l'objet espace de noms pour nous, puis nous exécutons notre propre méthode pour effectuer l'opération d'expansion correspondante pour l'objet espace de noms :

/**
         *生成命名空间,并执行相应操作
        **/
        register:function(nameSpace,func){
            var nsArr=nameSpace.split(".");
            var parent=win;
            for(var i=0,len=nsArr.length;i<len;i++){
                (typeof parent[nsArr[i]]==&#39;undefined&#39;)&&(parent[nsArr[i]]={});
                parent=parent[nsArr[i]];
            }
            if(func){
                func.call(parent,this);    
            }
            return parent;
        }
Copier après la connexion

comme ci-dessus , vous pouvez d'abord diviser l'espace de noms entrant chaîne , puis générer un objet, puis exécuter la fonction transmise par l'utilisateur pour effectuer l'opération d'expansion, comme suit :

cnGame.register("cnGame.core",function(){this.func=function(){}});
Copier après la connexion

De cette façon, le module principal peut être généré et la méthode func est ajoutée au module, puis l'organisation du code de notre framework ressemblera à ceci :

(function(win,undefined){

var cnGame={
    register:function(nameSpace,handler){

    }
}

/*core模块*/
cnGame.register("core",function(){
  //添加该模块内容
})

/*input模块*/
cnGame.register("input",function(){
  //添加该模块内容
})

win["cnGame"]=cnGame;


})(window,undefined);
Copier après la connexion

 
2. Initialisation du framework

Lorsque le framework est initialisé, les objets qui doivent être sauvegardés sont : l'objet canvas, l'objet de contexte, la position du canevas, la taille, etc. On peut d'abord regardez la fonction d'initialisation :

/**
         *初始化
        **/
        init:function(id,options){
            options=options||{};
            this.canvas = this.core.$(id||"canvas");    
            this.context = this.canvas.getContext(&#39;2d&#39;);
            this.width = options.width||800;
            this.height = options.height||600;
            this.title = this.core.$$(&#39;title&#39;)[0];
            canvasPos=getCanvasPos(this.canvas);
            this.x=canvasPos[0]||0;
            this.y=canvasPos[1]||0;
            this.canvas.width=this.width;
            this.canvas.height=this.height;
            this.canvas.style.left=this.x +"px";
            this.canvas.style.top=this.y +"px";
            
        },
Copier après la connexion

Très simple, il suffit de sauvegarder quelques valeurs d'initialisation pour une utilisation ultérieure. De plus, vous pouvez remarquer que nous avons appelé la méthode getCanvasPos pour obtenir le paramètre de position du canevas. Ce paramètre boucle pour obtenir le offsetParent de l'objet, et superpose offsetLeft et offsetTop pour obtenir la position du canevas. sur la page. Le code source de cette fonction est le suivant :

/**
    *获取canvas在页面的位置
    **/      
    var getCanvasPos=function(canvas){
        var left = 0;
        var top = 0;
        while (canvas.offsetParent) {
            left += canvas.offsetLeft;
            top += canvas.offsetTop;
            canvas = canvas.offsetParent;

        }
        return [left, top];

    }
Copier après la connexion

3. Module de fonction outil

Après cela, nous pouvons utiliser la méthode de registre ci-dessus pour ajouter le premier module : module de base. Ce module est également très simple. Sa fonction principale est d'ajouter des fonctions d'outils pour faciliter le développement ultérieur du framework et le développement de jeux utilisateur. Voici quelques fonctions d'outils couramment utilisées, telles que l'obtention d'éléments par identifiant, le prototype héritage , copie d'objet , événement liaison, etc. Notez que s'il y a des problèmes de compatibilité avec différents navigateurs, nous pouvons définir la fonction en fonction du navigateur dès le début, au lieu de juger à chaque fois le type de navigateur et d'effectuer les opérations correspondantes, ce qui sera plus efficace. Prenons l'exemple de la liaison d'événement :

/**
        事件绑定
        **/
        this.bindHandler=(function(){
                            
                        if(window.addEventListener){
                            return function(elem,type,handler){
                                elem.addEventListener(type,handler,false);
                                
                            }
                        }
                        else if(window.attachEvent){
                            return function(elem,type,handler){
                                elem.attachEvent("on"+type,handler);
                            }
                        }
        })();
Copier après la connexion
Renvoyez à l'avance différentes fonctions en fonction des caractéristiques du navigateur, de sorte que l'utilisation ultérieure n'ait pas besoin de juger les caractéristiques du navigateur et améliore l'efficacité.

Ci-joint les codes sources de toutes les fonctions de l'outil Comme ils sont très simples, le module ne sera pas décrit en détail.

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Bordure de tableau en HTML Bordure de tableau en HTML Sep 04, 2024 pm 04:49 PM

Guide de la bordure de tableau en HTML. Nous discutons ici de plusieurs façons de définir une bordure de tableau avec des exemples de bordure de tableau en HTML.

Marge gauche HTML Marge gauche HTML Sep 04, 2024 pm 04:48 PM

Guide de la marge HTML gauche. Nous discutons ici d'un bref aperçu de la marge gauche HTML et de ses exemples ainsi que de son implémentation de code.

Tableau imbriqué en HTML Tableau imbriqué en HTML Sep 04, 2024 pm 04:49 PM

Ceci est un guide des tableaux imbriqués en HTML. Nous discutons ici de la façon de créer un tableau dans le tableau ainsi que des exemples respectifs.

Disposition du tableau HTML Disposition du tableau HTML Sep 04, 2024 pm 04:54 PM

Guide de mise en page des tableaux HTML. Nous discutons ici des valeurs de la mise en page des tableaux HTML ainsi que des exemples et des résultats en détail.

Espace réservé d'entrée HTML Espace réservé d'entrée HTML Sep 04, 2024 pm 04:54 PM

Guide de l'espace réservé de saisie HTML. Nous discutons ici des exemples d'espace réservé d'entrée HTML ainsi que des codes et des sorties.

Liste ordonnée HTML Liste ordonnée HTML Sep 04, 2024 pm 04:43 PM

Guide de la liste ordonnée HTML. Ici, nous discutons également de l'introduction de la liste et des types HTML ordonnés ainsi que de leur exemple respectivement.

Déplacer du texte en HTML Déplacer du texte en HTML Sep 04, 2024 pm 04:45 PM

Guide pour déplacer du texte en HTML. Nous discutons ici d'une introduction, du fonctionnement des balises de sélection avec la syntaxe et des exemples à implémenter.

Bouton HTML onclick Bouton HTML onclick Sep 04, 2024 pm 04:49 PM

Guide du bouton HTML onclick. Nous discutons ici de leur introduction, de leur fonctionnement, des exemples et de l'événement onclick dans divers événements respectivement.

See all articles