]> _ Git - fluidbook-html5.git/commitdiff
done #1839 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 19 Dec 2017 16:18:41 +0000 (17:18 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 19 Dec 2017 16:18:41 +0000 (17:18 +0100)
js/libs/fluidbook/fluidbook.js
js/libs/fluidbook/fluidbook.loader.js

index 48fae329424a31bad9b7fb8b735eb63ef76ca004..84cacfbb8bbbc64f31f5094e50445f0812a46936 100644 (file)
@@ -126,7 +126,6 @@ Fluidbook.prototype = {
         } catch (err) {
         }
 
-        this.loader.canPreload();
         var $this = this;
         setTimeout(function () {
             $this._hideSplash();
@@ -390,7 +389,9 @@ Fluidbook.prototype = {
         $("#pages").prepend('<div id="nextDoublePage" class="_3d doublePage ' + turning.nextFromClass + 'start"></div>');
         var doublePage = $("#nextDoublePage");
         var currentDoublePage = $("#currentDoublePage");
-        this.displayLoader();
+        if (!this.loader.arePreloadedPages(turning.end)) {
+            this.displayLoader();
+        }
         this.loader.preloadPagesBeforeTransition(turning.end, function () {
             $("#pages").addClass('_3dtransition');
             $this.loader.setContentsInDoublePage(currentDoublePage, turning.flat, true, function () {
@@ -614,7 +615,9 @@ Fluidbook.prototype = {
         var turning = this.getTurningPages(pageNr);
         $("#pages").append('<div id="nextDoublePage" class="doublePage _2d axis_' + this.transitionAxis + ' ' + turning.nextFromClass + '"></div>');
         var doublePage = $("#nextDoublePage");
-        this.displayLoader();
+        if (!this.loader.arePreloadedPages(turning.end)) {
+            this.displayLoader();
+        }
         this.loader.preloadPagesBeforeTransition(turning.end, function () {
             $this.loader.setContentsInDoublePage(doublePage, turning.end, true, function () {
                 $this.beforeTransition(pageNr, 2, turning);
@@ -640,7 +643,9 @@ Fluidbook.prototype = {
             this.hidePage('right');
         }
 
-        this.displayLoader();
+        if (!this.loader.arePreloadedPages(turning.end)) {
+            this.displayLoader();
+        }
         this.loader.preloadPagesBeforeTransition(turning.end, function () {
             $this.loader.setContentsInDoublePage(doublePage, turning.end, true, function () {
                 $this.beforeTransition(pageNr, 2, turning);
index 4c0039a145a279505469491edf7a579ff08fe088..2af8144d80da65aebde47b7587436edd0719ba70 100644 (file)
@@ -4,7 +4,6 @@ function FluidbookLoader(fluidbook) {
     this.backgrounds = [];
     this.links = [];
     this.toPreload = [];
-    this.numPreload = 6;
     this.imagesErrors = [];
 }
 
@@ -18,15 +17,6 @@ FluidbookLoader.prototype = {
         return 'raster';
     },
 
-    canPreload: function () {
-        this.numPreload = 6;
-        if (this.fluidbook.support.imagesVersion) {
-            this.numPreload += 6;
-        }
-        if (this.fluidbook.datas.phonegap) {
-            this.numPreload = 6;
-        }
-    },
     preloadPagesBeforeTransition: function (pages, callback) {
         var $this = this;
         var $pages = pages.slice(0);
@@ -52,6 +42,17 @@ FluidbookLoader.prototype = {
         });
 
     },
+
+    arePreloadedPages: function (pages) {
+        for (var i in pages) {
+            var page = pages[i];
+            if (this.backgrounds[page] == undefined) {
+                return false;
+            }
+        }
+        return true;
+    },
+
     preloadPages: function () {
         if (this.toPreload.length == 0) {
             return;
@@ -80,9 +81,15 @@ FluidbookLoader.prototype = {
             this.cleanPreloaded();
             return;
         }
-        var min = Math.max(1, page - 1);
-        var max = Math.min(min + this.numPreload, this.fluidbook.datas.pages);
-        min = Math.max(1, max - (this.numPreload));
+
+        var numPreloadAfter = 5;
+        var numPreloadBefore = 2;
+        if (this.fluidbook.resize.orientation == 'portrait') {
+            numPreloadAfter = 3;
+            numPreloadBefore = 1;
+        }
+        var max = Math.min(page + numPreloadAfter, this.fluidbook.datas.pages);
+        var min = Math.max(1, page - numPreloadBefore);
         this.toPreload = [];
         for (var i = min; i <= max; i++) {
             this.toPreload.push(i);