美文网首页
Hilo学习笔记 (2)-game.js文件解析

Hilo学习笔记 (2)-game.js文件解析

作者: 高大强19 | 来源:发表于2020-03-23 09:35 被阅读0次

define(,[],)

define('mygame/game', ['hilo/view/Stage', 'hilo/util/Ticker', 'hilo/view/Bitmap', 'mygame/mediator', 'mygame/resource', 'mygame/loading'], function(Stage, Ticker, Bitmap, mediator, resource, loading){

define([module-name?], [array-of-dependencies?], [module-factory-or-object]);

define(name,[依赖模块],回调函数)

其中:module-name: 模块标识,可以省略。

array-of-dependencies: 所依赖的模块,可以省略。

module-factory-or-object: 模块的实现,或者一个JavaScript对象。

从中可以看到,第一个参数和第二个参数都是可以省略的,第三个参数则是模块的具体实现本身。后面将介绍在不同的应用场景下,他们会使用不同的参数组合。

参考

a:{}"与"a:function{}"这有什么不同? a:{} a是个对象 a:function() {} a是个方法

var game = { init:function(){}}

在index.html中,可以用game.init()来调用这个函数/方法,进行初始化.

就是这样的写法是最近几年开始流行的json写法,把所有的function,所有的变量等,都用var o = {x: func, y: "", z: obj}这样的写法来写。

其理解起来可以用类似于class的理解方式,而执行效率相对也是高的。

把初始化工作放在一块,阅读起来更清楚

参考

定义函数语法规则

var 变量 = {函数名:function(入参)}

有一些函数名以下划线开头,是程序员间约定的、模拟python中的私有方法,_method(). 并不是js的语法要求。

typeof, null, undefined, valueOf()

typeof 操作符,检测变量的数据类型

typeof"John"//返回stringtypeof3.14//返回numbertypeoffalse//返回booleantypeof[1,2,3,4]//返回object,数组是一种特殊的对象类型。typeof{name:'John', age:34}//返回object

null 表示“什么都没有”,是只有一个值的特殊类型,表示一个空对象引用。

可以设置null来清空对象。

undefined 也可以清空对象,是一个没有赋值的变量,类型是undefined.

所以,null和undefined 值相等,类型不同。

typeofundefined// undefinedtypeofnull// objectnull===undefined// falsenull==undefined// true

pre标签

被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。 标签的一个常见应用就是用来表示计算机的源代码。 可以导致段落断开的标签(例如标题、p 和 address 标签)绝不能包含在 pre 所定义的块里。

ts文件

ts文件的编译 1.全局模式安装ts编译器 npm install -g typescript (备注:安装方式:1全局方式:命令行。2本地安装:require方式) 在cmd对应目录下执行tsc xx.ts 可以生成对应的xx.js文件 然后用node xx.js输出 有些ts文件用的还是js的语法,所以可以直接用node xx.ts

2.全局模式安装ts-node编译器 npm install -g ts-node 直接用ts-node执行ts文件

参考链接

模块化编程

前端越来像桌面系统,代码变庞大,急需模块化开发。但是js不支持类,更无论模块了。

开发人员做类模块的努力。

JS模块化编程

game.js -问题及解答

// game.js....bindEvent:function(){varthat =this;        mediator.on('resource:loaded',function(event){            loading.loaded(event.detail.num);        });        ...

bindEvent 绑定元素 mediator 中间者,协调者,

event对象

中介者模式

//mediator.jsvarmediator =Class.mix({}, EventMixin);

1.Module Design Pattern模块模式,立即执行方式实现 (function(){})(); 2.Singleton Design Pattern单例模式,

varprinter = (function(){varprinterInstance;functioncreate(){return{turnOn:functionturnOn(){console.log('working')        }      }    }return{getInstance:function(){if(!printerInstance) {                printerInstance = create();            }returnprinterInstance;        }    }    })()printer.getInstance().turnOn()// output: working

3.Observer Design Pattern观察者模式,当应用的一个部分变动时,其他部分也会更新。 4.Constructor Pattern构造函数模式 5.Command Pattern命令模式 设计模式 参考链接

// Class.jsvarmix =function(target){for(vari =1, len =arguments.length; i < len; i++){varsource  =arguments[i], defineProps;。。。

mix “混合”的意思

匿名函数

方法一:varfoo =function(){//code }方法二:functionfoo(){//code }

主要区别“提前”(hoist)行为。 the Google style guide 建议我们采用方法一。 编译后变量foo会被提前,但是它的赋值并不会提前,匿名函数只有在使用的时候才被初始化。

定义函数时用 var foo = function () {} 和 function foo() 有什么区别

Class 类,匿名的方法

// Class.jsdefine('hilo/core/Class',function(){varClass =function(){varcreate =function(properties){        };        ... ...varmix =function(target){    };    }();returnClass;});

相关文章

网友评论

      本文标题:Hilo学习笔记 (2)-game.js文件解析

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