Hola:
Lo que necesito saber es cómo pausar cada vuelta que da, o sea, en pseudocódigo sería:
Primera vuelta: ejecute instrucciones y pause por X tiempo.
Segunda vuelta: ejecute las mismas instrucciones y se detenga por X tiempo.
N vuelta: ejecute las instrucciones y se pause al finalizar por X tiempo.
Ya he intentado con setTimeout de Javascript pero no me funciona XD.
yaigplugin-1.0.js:
collect.php:
Esto es un plugin de jQuery. La idea (como puse en los comentarios) es que se muestren X fotos de una carpeta X bajo la carpeta gallery, luego se pause por X segundos y comience la nueva vuelta pero con otra carpeta (por ahora la carpeta no se elige al azar) y otras fotos al azar.
Bueno, si alguien me puede ayudar, le doy las gracias de antemano (al igual que a quién se de el tiempo de leer hasta aquí XD).
Saludos :D.
Lo que necesito saber es cómo pausar cada vuelta que da, o sea, en pseudocódigo sería:
Primera vuelta: ejecute instrucciones y pause por X tiempo.
Segunda vuelta: ejecute las mismas instrucciones y se detenga por X tiempo.
N vuelta: ejecute las instrucciones y se pause al finalizar por X tiempo.
Ya he intentado con setTimeout de Javascript pero no me funciona XD.
yaigplugin-1.0.js:
(function($) {
var settings = {
pause: 5000,
fadeOut: 2500,
galleryFolder: 'gallery',
getFilesURL: 'yaigplugin-1.0/collect.php',
css: {
width: '100px',
height: '100px',
display: 'inline-block',
paddingLeft: '3px'
},
cantImgs: 3,
random: true
}
var util = {
base: function() {
var root = 'http';
if(window.location.href.match(/^(https)/))
root += 's';
root += '://' + location.host + '/';
return root;
},
rndm: function(repeat, minVal, maxVal) {
repeat = repeat == undefined ? 5: repeat;
minVal = minVal == undefined ? 0: minVal;
maxVal = maxVal == undefined ? 10: maxVal;
var generated = new Array();
var i = 0;
while(i < repeat) {
try {
var rndm = Math.floor(Math.random() * (maxVal - minVal + 1) + minVal);
}
catch(e) {
console.log('Error generating random number: ' + e);
alert('Error generating random number: ' + e)
}
if(generated.length == 0) {
generated[i] = rndm;
i++;
}
else {
var x = 0;
var eq = false;
while(x < generated.length && eq == false) {
if(rndm == generated[x])
eq = true;
x++;
}
if(eq == false) {
generated[i] = rndm;
i++;
}
}
}
return generated;
},
processAnswer: function(string) {
var folder = new Array();
folder = string.split(/[|,]/);
return folder;
},
display: function(img, _this, index) {
$('<img />')
.attr({
src: img,
alt: 'Nombre de la imágen: ' + img,
title: 'Nombre de la imágen: ' + img
})
.appendTo(_this)
.hide()
.load(function() {
$(this)
.delay(index)
.fadeIn('slow')
.css(settings.css);
})
.delay(settings.fadeOut)
.fadeOut('slow', function() {
$(this).remove();
});
},
load: function(_this, url) {
$.ajax({
type: 'post',
url: settings.getFilesURL,
data: {folder: '../' + settings.galleryFolder},
success: function(data) {
var arr = util.processAnswer(data);
var arrLen = arr.length;
var index = 0;
begin();
function begin() {
if(settings.cantImgs > arrLen)
settings.cantImgs = arrLen;
var rndmIndx = util.rndm(settings.cantImgs, 0, arrLen - 1);
for(i = 0; i < settings.cantImgs; i++) {
if(settings.random)
util.display(url + arr[rndmIndx[i]], _this, i * 1000);
else {
util.display(url + arr[index], _this, i * 1000);
index++;
if(index >= arrLen)
index = 0;
}
}
setTimeout(function() {
begin();
}, settings.pause);
}
}
});
}
}
var methods = {
init: function(options) {
return this.each(function() {
if(options) {
$.extend(settings, options);
}
var _this = $(this);
var url = util.base();
url += settings.galleryFolder + '/';
util.load(_this, url);
});
}
}
$.fn.yaig = function(method) {
if(methods[method])
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
else if(typeof method === 'object' || !method)
return methods.init.apply(this, arguments);
else
$.error('The method [' + method + '] does not exists.');
return this;
}
})(jQuery);collect.php:
<?php
$gallery_folder = empty($_POST['folder']) ? '../gallery': $_POST['folder'];
$gallery_folder = trim($gallery_folder, '/');
$main_folder = opendir($gallery_folder);
$gallery = '';
$i = 0;
while(false !== ($folder = readdir($main_folder))) {
if($folder != '.' && $folder != '..' && is_dir($gallery_folder. '/' .$folder)) {
$gallery .= files($gallery_folder.'/'.$folder, $folder.'/');
$gallery .= '|';
$i++;
}
}
closedir($main_folder);
print trim($gallery, '|');
function files($folder, $f) {
$img_folder = opendir($folder);
$str = '';
while(false !== ($img = readdir($img_folder))) {
if($img != '.' && $img != '..' && is_file($folder. '/' .$img)) {
$str .= $f.$img. ',';
}
}
closedir($img_folder);
return trim($str, ',');
}
?>Esto es un plugin de jQuery. La idea (como puse en los comentarios) es que se muestren X fotos de una carpeta X bajo la carpeta gallery, luego se pause por X segundos y comience la nueva vuelta pero con otra carpeta (por ahora la carpeta no se elige al azar) y otras fotos al azar.
Bueno, si alguien me puede ayudar, le doy las gracias de antemano (al igual que a quién se de el tiempo de leer hasta aquí XD).
Saludos :D.