MyLoaderScene.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /**
  2. * Created by Will on 2014/10/16.
  3. */
  4. var MyLoaderScene = cc.Scene.extend({
  5. _interval : null,
  6. _length : 0,
  7. _count : 0,
  8. _label : null,
  9. _className:"MyLoaderScene",
  10. init : function(){
  11. var self = this;
  12. // bg
  13. var bgLayer = self._bgLayer = cc.LayerColor.create(cc.color(255, 255, 255));
  14. bgLayer.setPosition(cc.visibleRect.bottomLeft);
  15. self.addChild(bgLayer, 0);
  16. //loading percent
  17. // var label = self._label = cc.LabelTTF.create("玩命加载中... 0%", "Arial", 24);
  18. // label.setPosition(cc.pAdd(cc.visibleRect.center, cc.p(0, 0)));
  19. // label.setColor(cc.color(180, 180, 180));
  20. // bgLayer.addChild(this._label, 10);
  21. var jdt1 = self._jdt1 = new cc.Sprite(res.a_jdt1);
  22. jdt1.setPosition(cc.winSize.width/2,cc.winSize.height/2);
  23. jdt1.scale = 0.5;
  24. // jdt.scaleY = 0.3;
  25. // jdt.scaleX = 0.02;
  26. bgLayer.addChild(this._jdt1, 10);
  27. var jdt = self._jdt = new cc.Sprite(res.a_jdt);
  28. jdt.setPosition(cc.winSize.width/2 - 70,cc.winSize.height/2-5);
  29. jdt.anchorX = 0;
  30. jdt.anchorY = 0;
  31. jdt.scale = 0.005;
  32. // jdt.scaleY = 0.3;
  33. // jdt.scaleX = 0.02;
  34. bgLayer.addChild(this._jdt, 10);
  35. var img = self._img = new cc.Sprite(res.a_loading);
  36. img.setPosition(cc.winSize.width/2,cc.winSize.height/2);
  37. img.scale = cc.winSize.height/960;
  38. bgLayer.addChild(this._img, 1);
  39. return true;
  40. },
  41. _initStage: function (img, centerPos) {
  42. var self = this;
  43. var texture2d = self._texture2d = new cc.Texture2D();
  44. texture2d.initWithElement(img);
  45. texture2d.handleLoadedTexture();
  46. var logo = self._logo = cc.Sprite.create(texture2d);
  47. logo.setScale(cc.contentScaleFactor());
  48. logo.x = centerPos.x;
  49. logo.y = centerPos.y;
  50. self._bgLayer.addChild(logo, 10);
  51. },
  52. onEnter: function () {
  53. var self = this;
  54. cc.Node.prototype.onEnter.call(self);
  55. self.schedule(self._startLoading, 0.3);
  56. },
  57. onExit: function () {
  58. cc.Node.prototype.onExit.call(this);
  59. this._jdt.scale = 0.02;
  60. },
  61. /**
  62. * init with resources
  63. * @param {Array} resources
  64. * @param {Function|String} cb
  65. */
  66. initWithResources: function (resources, cb) {
  67. if(typeof resources == "string") resources = [resources];
  68. this.resources = resources || [];
  69. this.cb = cb;
  70. },
  71. _startLoading: function () {
  72. var self = this;
  73. self.unschedule(self._startLoading);
  74. var res = self.resources;
  75. self._length = res.length;
  76. self._count = 0;
  77. cc.loader.load(res, function(result, count){ self._count = count; }, function(){
  78. if(self.cb)
  79. self.cb();
  80. });
  81. self.schedule(self._updatePercent);
  82. },
  83. _updatePercent: function () {
  84. var self = this;
  85. var count = self._count;
  86. var length = self._length;
  87. var percent = (count / length * 100) | 0;
  88. percent = Math.min(percent, 100);
  89. self._jdt.scale = 0.5*percent/100;
  90. if(count >= length) self.unschedule(self._updatePercent);
  91. }
  92. });
  93. MyLoaderScene.preload = function(resources, cb){
  94. var _myLoaderScene = null;
  95. if(!_myLoaderScene) {
  96. _myLoaderScene = new MyLoaderScene();
  97. _myLoaderScene.init();
  98. }
  99. _myLoaderScene.initWithResources(resources, cb);
  100. cc.director.runScene(_myLoaderScene);
  101. return _myLoaderScene;
  102. };