微信游戏在哪里 微信游戏在哪里设置不要好友看到( 四 )


微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
在我说我们能做什么之前,我想说明一点,这个方法只是为了解决小游戏中转包小于的问题4M而做的,与子模块的设计思路不同 。该模块的目的是什么?就是把不用的函数放到模块里,当你需要的时候,然后加载相应的模块 。我的方法,有必要进入游戏之前,所有模块都需要加载,无论模块的功能是否需要它,无论模块中有什么功能 。
为了说明这一点,我们先来看看JS的类 。JS在撰写本文时,类的定义,有顺序吗?看看这段代码,这里定义了一个父类,然后定义一个子类 。我们能不能先在这里写定义一个子类,写定义另一个父类?注意子类的定义,您需要传入父类的定义,如果你先写子类的定义,传入的父类定义是一个undefined,当它被转移到父类定义中的属性时,将报告一个错误 。所以父类必须写在子类前面 。换组件模块是什么感觉?假设我们现在有两个文件,第一个被加载的被称为模块A,加载后,它被称为模块B 。模块A中有一个子类的定义,在模块B中有其他类的定义,本模块也包括在内A中子类的父类的定义 。在模块A加载后,当运行子类的定义时,他的父类叫做,因为模块B尚未加载,所以肯定是报错了 。这里怎么才能避免报错?很简单,将父类定义,也放在模块里A里,那就不会报错了 。如果父类有父类,而且在模块中B里的,然后记得把他的父类也带到模块中A里 。
具体我们是怎么操作把父类也放在模块里A里的呢?我们只需要打电话给Laya编译器之前,将父类as文档检查模块A把它放在文件夹里 。父类中的包名是什么,不需要修改 。知道包名是AS尽管它与存储文件的路径相匹配,但在用laya编译时,它不检查包名是否与路径匹配,最终生成到JS里的,它是写在文件中的包名,路径只是作为放入哪个模块的基础 。
微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
我们刚刚谈到的是,在另一个模块的情况下,父类导致了错误 。除了这个,还有别的吗?有的,比如我们刚才在模块里A里的类,在解耦的逻辑中,必须有对模块的调用B的类 。然而,在初始化时,它不应该碰到商业逻辑,你为什么报告错误?让我们看一下模块A中的代码 。
模块A框中的前几行通常是这样的,第二行,是将Laya引擎中的一些公共方法用短名称定义变量,调用方便的逻辑 。第三行开始,它是本模块中引用的类,用所有类的名称给变量名赋值,这样使用起来很方便,不需要写包括包名的类名 。也就是说,我们直接在AS中的代码,不需要太多的修改,它就可以在JS 。注意到,这些代码行,它在这里JS该文件将在初始化时运行 。看第四行,我们有课,假设这个类被称为ClassName,这个类是在模块中定义的B里的,那么这个赋值语句将是因为模块B尚未加载而找不到ClassName的定义,然后报告一个错误 。这个类出现在这里的原因是,因为它用在这个模块的一个类中 。
我们在这里见,写在类的方法中的代码,它将不会在初始化期间运行,所以我写了模块B在中定义的类在初始化时不会报告错误,导入的类将被写到模块的开头,会在初始化时运行到将报告一个错误 。所以我们是这样处理的,所有模块A里的类,如果import该类是一个模块B的类,那拿着这个import删除掉 。把所有使用这个类的地方,类名,包括包名,写为此函数调用的字符串 。
微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
好像是这个变化,会有更多需要改变的地方,并且在生成的代码中,还会有多个董事的名字,我把它改成了这个,向类中添加一个静态变量,让他等于这个函数,那么就不需要在代码中修改了,转到使用该类名的地方,实际上,这个定义的静态变量叫做 。并编译成JS后,静态变量的定义变成了get函数来获取这个值,也就是说,只有在使用它的地方才会调用它,而不是初始化 。这就解决了模块A该模块在代码中被调用B类导致初始化期间报告错误的问题 。
微信游戏在哪里 微信游戏在哪里设置不要好友看到

文章插图
做刚才那两个地方就完事了?我们再回忆两种情况,它们都是模块A里的类,如果模块被引用B里的类,然后想办法去掉他的引用,第一次运行时让他调用它 。换句话说,编译为JS的时间,模块A中的类被视为没有引用的模块B在班上,如果该模块B中的类,假设叫SimgleClass,唯一的参考是模块A中的类引用了,现在把模块A中的引用被删除,那SimgleClass没有类引用它,也就是编译的时候,不会将此类编译成JS里去 。在运行时,你会报告一个错误,因为你找不到定义 。所以在SimageClass加上强制编译的标签,这是由LayaBox提供的标签,当有这个标签时,即使这个类没有引用,也会被编译成JS里去 。