}
},
+ normalizeTransitionPageNr: function (pageNr) {
+ if (pageNr == undefined) {
+ pageNr = this.fluidbook.currentPage;
+ if (pageNr == -1) {
+ pageNr = 1;
+ }
+ }
+ return this.fluidbook.normalizePage(pageNr);
+ },
+
+ getTransitionDuration: function (pageNr) {
+ var type = this.getTransitionType(pageNr);
+ if (type === 'immediate') {
+ return 0;
+ } else if (type === 'flip3d') {
+ return this.flip3d.animationTime;
+ } else {
+ return parseFloat(this.fluidbook.datas.mobileTransitionDuration);
+ }
+ },
+
+ getTransitionType: function (pageNr) {
+ pageNr = this.normalizeTransitionPageNr(pageNr);
+
+ if (pageNr === this.fluidbook.normalizePage(this.fluidbook.currentPage) ||
+ this.fluidbook.currentPage === -1 ||
+ !this.fluidbook.support.transitions2d ||
+ this.fluidbook.datas.mobileTransitions === 'none') {
+ return "immediate";
+ } else if (this.fluidbook.displayOnePage) {
+ return 'portrait';
+ } else if ((!this.fluidbook.support.transitions3d && !this.fluidbook.support.transitions3dacc) || this.fluidbook.datas.mobileTransitions === 'slide') {
+ return 'slide';
+ } else if (this.fluidbook.support.transitions3dacc && this.fluidbook.datas.mobileTransitions === 'flip3d') {
+ return 'flip3d';
+ } else {
+ return 'flipcss';
+ }
+ },
+
pageTransition: function (pageNr) {
var $this = this;
if (this.fluidbook.pad.enabled) {
$(this.fluidbook).trigger('fluidbook.beforePageTransition');
this.fluidbook.tooltip.hideTooltip();
+ pageNr = this.normalizeTransitionPageNr(pageNr);
+ var transitionType = this.getTransitionType(pageNr);
- if (pageNr == undefined) {
- pageNr = this.fluidbook.currentPage;
- if (pageNr == -1) {
- pageNr = 1;
- }
- }
- pageNr = this.fluidbook.normalizePage(pageNr);
- if (this.fluidbook.firstTransition || pageNr === this.fluidbook.normalizePage(this.fluidbook.currentPage) || this.fluidbook.currentPage === -1 || !this.fluidbook.support.transitions2d || this.fluidbook.datas.mobileTransitions == 'none') {
+ if (this.fluidbook.firstTransition || transitionType === 'immediate') {
this.fluidbook.firstTransition = false;
this.fluidbook.zoom.resetZoom();
return this.pageTransition1D(pageNr);
}
- if (this.fluidbook.displayOnePage) {
+ if (transitionType === 'portrait') {
this.fluidbook.zoom.resetZoom();
return this.pageTransition2DPortrait(pageNr);
}
- if ((!this.fluidbook.support.transitions3d && !this.fluidbook.support.transitions3dacc) || this.fluidbook.datas.mobileTransitions === 'slide') {
+ if (transitionType === 'slide') {
this.fluidbook.zoom.resetZoom();
return this.pageTransition2D(pageNr);
}
- if (this.fluidbook.support.transitions3dacc && this.fluidbook.datas.mobileTransitions === 'flip3d') {
+ if (transitionType === 'flip3d') {
this.fluidbook.zoom.resetZoom(function () {
return $this.pageTransition3DFlip(pageNr);
});
return true;
- } else {
+ } else if (transitionType === 'flipcss') {
this.fluidbook.zoom.resetZoom();
return this.pageTransition3D(pageNr);
}
return;
}
-
var page = data.page;
if (page % 2 === 1) {
page--;
sound = 'page-flip-' + (Math.round(Math.random() + 1));
}
+ var transitionDuration = this.fluidbook.pagetransitions.getTransitionDuration(page);
+ if (transitionDuration === 0) {
+ return;
+ }
+
+ var seek = 0;
+ if (transitionDuration < 0.6) {
+ seek = 0.6 - transitionDuration;
+ }
+
try {
this.audios[sound].volume = 1;
if (this.audios[sound].fastSeek !== undefined) {
- this.audios[sound].fastSeek(0);
+ this.audios[sound].fastSeek(seek);
} else {
- this.audios[sound].currentTime = 0;
+ this.audios[sound].currentTime = seek;
}
this.audios[sound].play();
} catch (e) {