声音资源:
默认加载模式web audio:
cc.loader.load('http://example.com/background.mp3', callback);
强制DOM模式加载:
音频在加载过程中,会读取 url 内的 get 参数。其中只需要定义一个 useDom 参数,使其有一个非空的值,这样在 audioDownloader 中,就会强制使用 DOM mode 的方式加载播放这个音频。
cc.loader.load('http://example.com/background.mp3?useDom=1', callback);
生命周期回调
1、onLoad
回调会在节点首次激活时触发,比如所在的场景被载入,或者所在节点被激活的情况下。在 onLoad
阶段,保证了你可以获取到场景中的其他节点,以及节点关联的资源数据onLoad
总是会在任何 start
方法调用前执行。
2、start
回调函数会在组件第一次激活前,也就是第一次执行 update
之前触发。start
通常用于初始化一些需要经常修改的数据,这些数据可能在 update 时会发生改变
3、游戏开发的一个关键点是在每一帧渲染前更新物体的行为,状态和方位。这些更新操作通常都放在 update
回调中
4、update
会在所有动画更新前执行,但如果我们要在动效(如动画、粒子、物理等)更新之后才进行一些额外操作,或者希望在所有组件的 update
都执行完之后才进行其它操作,那就需要用到 lateUpdate
回调
5、当组件的 enabled
属性从 false
变为 true
时,或者所在节点的 active
属性从 false
变为 true
时,会激活 onEnable
回调
6、当组件的 enabled
属性从 true
变为 false
时,或者所在节点的 active
属性从 true
变为 false
时,会激活 onDisable
回调。
7、当组件或者所在节点调用了 destroy()
,则会调用 onDestroy
回调,并在当帧结束时统一回收组件。当同时声明了 onLoad
和 onDestroy
时,它们将总是被成对调用。也就是说从组件初始化到销毁的过程中,它们要么就都会被调用,要么就都不会被调用。
一个组件从初始化到激活,再到最终销毁的完整生命周期函数调用顺序为:onLoad
-> onEnable
-> start
-> update
-> lateUpdate
-> onDisable
-> onDestroy
。
节点的destroy 和 removeFromParent 的区别
调用一个节点的 removeFromParent
后,它不一定就能完全从内存中释放,因为有可能由于一些逻辑上的问题,导致程序中仍然引用到了这个对象。因此如果一个节点不再使用了,请直接调用它的 destroy
而不是 removeFromParent
。destroy
不但会激活组件上的 onDestroy
,还会降低内存泄露的几率,同时减轻内存泄露时的后果。
加载场景
cc.director.loadScene("MyScene");
引擎同时只会运行一个场景,当切换场景时,默认会将场景内所有节点和其他实例销毁。如果我们需要用一个组件控制所有场景的加载,或在场景之间传递参数数据,就需要将该组件所在节点标记为「常驻节点」,使它在场景切换时不被自动销毁,常驻内存。我们使用以下接口:
cc.game.addPersistRootNode(myNode);
如果要取消一个节点的常驻属性:
cc.game.removePersistRootNode(myNode);