2011-12-29 2 views
3

У меня есть построить облако слова (вы можете проверить его на http://www.cybernetiksolutions.com/wordcloud)Проявление Слова из слова Облако Случайным

В настоящее время облако исчезает каждое слово во всех в одно время. Я хотел бы, чтобы слова постепенно исчезали сверху вниз. Идея была вдохновлена ​​www.vudu.com и http://wonderwall.msn.com. Я считаю, что в правильном направлении, как я могу это сделать, будем очень благодарны.

ответ

1

Я хотел бы предложить алгоритм, который выбирает случайное слово из оставшихся скрытых слов, так что каждый цикл гарантировано, чтобы показать новое слово, пока все не будут показаны. Это начинается со списка всех слов, затем выбирает один случайным образом, удаляет его из списка, оживляет его, а затем повторяет цикл, выбирающий следующий из оставшихся в списке и т. Д. Вместо таймера, он использует функцию завершения из анимации, чтобы начать следующее слово.

function fadeInRandom() { 
    var words = $('#wordcloud a'); 
    function fadeNext() { 
     if (words.length) { 
      var index = Math.floor(Math.random() * words.length); 
      var item = words.eq(index); 
      words = words.not(item); 
      item.animate({color: "#89171a"}, 800, fadeNext); 
     } 
    } 
    fadeNext(); 
} 
fadeInRandom(); 

Если у вас так много слов, которые вы хотели бы выцветания несколько слов одновременно, вы можете просто делать это (что будет делать четыре одновременно):

function fadeInRandom() { 
    var words = $('#wordcloud a'); 
    function fadeNext() { 
     if (words.length) { 
      var index = Math.floor(Math.random() * words.length); 
      var item = words.eq(index); 
      words = words.not(item); 
      item.animate({color: "#89171a"}, 800, fadeNext); 
     } 
    } 
    fadeNext(); 
    fadeNext(); 
    fadeNext(); 
    fadeNext(); 
} 
fadeInRandom(); 

Или, если вы хотите, четыре одновременно и равномерно, вы можете сделать это:

function fadeInRandom() { 
    var words = $('#wordcloud a'); 
    function fadeNext() { 
     if (words.length) { 
      var index = Math.floor(Math.random() * words.length); 
      var item = words.eq(index); 
      words = words.not(item); 
      item.animate({color: "#89171a"}, 800, fadeNext); 
     } 
    } 
    fadeNext(); 
    setTimeout(fadeNext, 50); 
    setTimeout(fadeNext, 100); 
    setTimeout(fadeNext, 150); 
    setTimeout(fadeNext, 200); 
    setTimeout(fadeNext, 250); 
    setTimeout(fadeNext, 300); 
    setTimeout(fadeNext, 350); 
    setTimeout(fadeNext, 400); 
    setTimeout(fadeNext, 450); 
    setTimeout(fadeNext, 500); 
    setTimeout(fadeNext, 550); 
    setTimeout(fadeNext, 600); 
    setTimeout(fadeNext, 650); 
    setTimeout(fadeNext, 700); 
    setTimeout(fadeNext, 750); 
} 
fadeInRandom(); 

Изменить всю document.ready() код для этого:

$(document).ready(function(){ 

    var count = 0; 

    for(count=0;count<words.length;count++){ 
     $('#wordcloud').append('<a href="'+words[count].url+'">'+words[count].text+'</a>') 
    } 

    for(count=0;count<6;count++){ 
     $('#wordcloud').append($('#wordcloud').html()); 
    } 

    for(count = 0 ; count < $('#wordcloud a').length ; count++){ 
     $('#wordcloud a').eq(count).css('font-size', $.randomBetween(10, 20)+'px'); 
    } 

    // Random Fade In 

    function fadeInRandom() { 
     var words = $('#wordcloud a'); 

     function fadeNext() { 
      if (words.length) { 
       var index = Math.floor(Math.random() * words.length); 
       var item = words.eq(index); 
       words = words.not(item); 
       item.animate({color: "#89171a"}, 800, fadeNext); 
      } 
     } 
     fadeNext(); 
    setTimeout(fadeNext, 50); 
    setTimeout(fadeNext, 100); 
    setTimeout(fadeNext, 150); 
    setTimeout(fadeNext, 200); 
    setTimeout(fadeNext, 250); 
    setTimeout(fadeNext, 300); 
    setTimeout(fadeNext, 350); 
    setTimeout(fadeNext, 400); 
    setTimeout(fadeNext, 450); 
    setTimeout(fadeNext, 500); 
    setTimeout(fadeNext, 550); 
    setTimeout(fadeNext, 600); 
    setTimeout(fadeNext, 650); 
    setTimeout(fadeNext, 700); 
    setTimeout(fadeNext, 750); 
    } 
    fadeInRandom(); 

    // Fade In and Fade Out on Hover 

    $("#wordcloud a").hover(function() { 
     $(this).stop().animate({ color: "#89171a"}, 800); 
    },function() { 
     $(this).stop().animate({ color: "#2f2f2f" }, 800); 
    }); 
}); 
+0

Я пытался получить вариант три на работу, и я не был успешным. Я уверен, что это что-то тривиальное, но я не могу понять это. Я загрузил все на один и тот же сайт http://www.cybernetiksolutions.com/wordcloud – thebradnet

+0

@thebradnet - вы никогда не вызывали 'fadeInRandom()', чтобы инициировать его. Положите вызов 'fadeInRandom()' сразу после определения функции. – jfriend00

+0

Я считаю, что я просто сделал это и все еще ничего. Первоначально в моем скрипте я имел следующую строку кода, чтобы все сразу исчезало «$ (« # wordcloud »). Delay (1000) .fadeIn (1000); Если я удалю и ничего не загрузится, даже если ваш код не присутствует. Я прошел, чтобы убедиться, что все закрывается, и все от того, что я могу сказать. Я загрузил исправленную копию в ранее предоставленную ссылку. Спасибо за ваше время и терпение. Я довольно новичок в JQuery и Javascript, и я стараюсь учиться по пробным версиям и ошибкам. Так что еще раз спасибо. – thebradnet

0

Вы имеете в виду что-то вроде этого?

var i = 2; 
setInterval(function(){ 
$('#wordcloud a').eq(Math.floor(Math.random()*i)).animate({ color: "#89171a"}, 800); 
i*= 4 
}, 800) 
0

Одним простым способом было бы прокрутить каждое слово и назначить случайно выбранное затухание по скорости каждому отдельному слову. Например ...

$('.words').each(function(index, value) { // Using the class assigned to each word 
    rn = $.randomBetween(200, 5000); // Or whatever random call you're using 
    $(this).fadeIn(rn); 
}); 
Смежные вопросы