游戏引擎:图形渲染系统,特效系统,物理系统,各个功能集合。
cocoscreator是将cocos2d-x封装成了可视化编辑。面向对象转变成面向组件开发。
ts编程是js编程语言的超集。
基础类型+""可以转换成字符串类型,适用于document.write(var)。`${var}`包含的字符串可以随意换行。
null空值适用于所有类型。any类型适用于任何类型。声明类型跟一对中括号就表示数组。
ts索引从0开始,lua从1开始。
联合类型 let num:number|string
枚举类型在ts和js中声明时的区别
用typeof var检查类型,用type声明类型别名。类似c语言的typedef。
num++和c语言一样先使用再自增。前自增同理。
双等号只判断值,三等号还会判断类型。!=只判断值不判断类型。!==还会判断类型。
函数返回类型也是用冒号表示 function name():void{},也有匿名函数的语法。
声明类类型对象用let .. new ,和基础类型不一样(使用冒号)。
类构造方法constructor(),除了类型声明用冒号,其他和强类型语言都差不多。
使用extends关键字继承类。使用super.func()来调用父类的同名函数。
abstruct抽象类,不能被实例化,只能继承。抽象方法同理。可以用父类指针指向子类对象。
ts无法多继承,要用接口扩展。class child extends father implements IOher{//必须实现接口方法}。
接口用interface声明,弥补类无法实现多继承的缺点。接口里面就只写方法名,不用实现,类implements的时候再去实现。
继承更加倾向于继承父类的特性,接口更像需要实现的特定行为,如果是特性就用继承,如果是行为就用接口。
属性寄存器就是set和get。
不同开发者写类似的模块一定要用namespace区分,空间内的东西在声明的时候带上export才能被外部使用。
泛型用<T>来表示。用的不多。
一组数据可以类型不同就是元组。let hero:[string,number]。
数组两种声明方式:let arr1:number[]=[1,2,3] let arr2:Array<number> = new Array<number>()。
第二种方式里,数组类型Array本身就是一个类,<number>用到了泛型。
数组操作接口:push,unshift,pop,splice,shift,concat,indexOf,sort,reverse。
字典定义:let dic:{[key:string]:string}={"name1":"test1","name2":"test2"}
dic["name3"]="test3" 方括号里可以用双引号也可以不用。
回调:把函数当成参数传入。匿名函数的方式:func(()=>{});
原义文本字符,元字符,限定符。^xxx$用来判断账号密码。在中括号中写自己的匹配规则。匹配电话:\d{2}-\d{11}
声明匹配规则:let reg = /\d{2}-\d{11}/g 用reg.exec执行
访问修饰符:public,protected,private
单例模式:用static修饰,属性寄存器,私有的构造函数,懒加载创建。
代理模式:定义interface接口,再定义一个接口继承它,在类里只声明抽象接口对象的代理成员,在实例化的时候再new具体的代理类型。
教程里一直强调接口就是协议。up主说自己以前学代码都是抄写默写最后才理解。
观察者模式:声明一个抽象接口(协议),在类里声明该协议类型的集合,在属性变化时遍历集合调用行为方法。类外分别new类对象和协议的类对象,把协议对象加入到类对象的集合里。
工厂模式:注意工厂方法一定是static的,创建的时候直接用类名.func生产。
链表:很简单,由于有自动回收机制,操作接口实现起来很方便。