jquery实现水面水泡波动动画效果代码

代码语言:html

所属分类:动画

代码描述:jquery实现水面水泡波动动画效果代码

代码标签: jquery 水面 波动 水泡

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>
   
<meta charset="utf-8">
   
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script>




</head>

<body>

   
<canvas id="world"><p class="noCanvas">You need a <a href="https://www.google.com/chrome">modern browser</a> to view this.</p></canvas>
   
<script>
        /**
                 *
                 */
                function Wave() {
                       
                        /** The current dimensions of the screen (updated on resize) */
                        var WIDTH = window.innerWidth;
                        var HEIGHT = window.innerHeight;
                       
                        /** Wave settings */
                        var DENSITY = .75;
                        var FRICTION = 1.14;
                        var MOUSE_PULL = 0.09; // The strength at which the mouse pulls particles within the AOE
                        var AOE = 200; // Area of effect for mouse pull
                        var DETAIL = Math.round( WIDTH / 60 ); // The number of particles used to build up the wave
                        var WATER_DENSITY = 1.07;
                        var AIR_DENSITY = 1.02;
                        var TWITCH_INTERVAL = 2000; // The interval between random impulses being inserted into the wave to keep it moving
                       
                        /** Twitter interaction settings */
                        var TWITTER_QUERY = 'water'; // The search term for tweets
                        var TWEETS_PER_PAGE = 20; // The number of tweets that will be fetched per server call
                        var TWEETS_FREQUENCY = 400; // Milliseconds between tweet bubbles being added to the wave
                       
                        /** Bubble settings */
                        var MAX_BUBBLES = 60; // The maximum number of bubbles visible before FIFO is applied
                        var BIG_BUBBLE_DISSOLVE = 20; // How many particles a bubble dissolves into when being clicked
                        var SMALL_BUBBLE_DISSOLVE = 6;
                       
                        /** Couple of counters to keep track of the Twitter interaction */
                        var twitterPolls = 1; // Counts how many times data has been fetched from twitter
                        var twitterRetries = 0; // Counts how many times we fail to retrieve results from twitter
                        var twitterMaxId = 0; // The ID of the oldest tweet that's been downloaded
                       
                        var mouseIsDown, isDownloadingTweets = false;
                        var ms = {x:0, y:0}; // Mouse speed
                        var mp = {x:0, y:0}; // Mouse position
                       
                        var canvas, context, particles, bubbles, tweets;
                       
                        var timeUpdateInterval, tweetUpdateInterval, twitchInterval;
                       
                        /**
                         * Constructor.
                         */
                        this.Initialize = function( canvasID ) {
                                canvas = document.getElementById( canvasID );
                               
                                if (canvas && canvas.getContext) {
                                        context = canvas.getContext('2d');
                                       
                                        particles = [];
                                        tweets = [];
                                        bubbles = [];
                                       
                                        $("body").append('
<div id="tweet"></div>');
                                       
                                        // Generate our wave particles
                                        for( var i = 0; i < DETAIL+1; i++ ) {
                                                particles.push( {
                                                        x: WIDTH / (DETAIL-4) * (i-2), // Pad by two particles on each side
                                                        y: HEIGHT*.5,
                                                        original: {x: 0, y: HEIGHT * .5},
                                                        velocity: {x: 0, y: Math.random()*3}, // Random for some initial movement in the wave
                                                        force: {x: 0, y: 0},
                                                        mass: 10
                                                } );
                                        }
                                       
                                        $(canvas).mousemove(MouseMove);
                                        $(canvas).mousedown(MouseDown);
                                        $(canvas).mouseup(MouseUp);
                                        $(window).resize(ResizeCanvas);
                                       
                                        timeUpdateInterval = setInterval( TimeUpdate, 40 );
                                        tweetUpdateInterval = setInterval( CreateBubble, TWEETS_FREQUENCY );
                                        twitchInterval = setInterval( Twitch, TWITCH_INTERVAL );
                                       
                                        DownloadTweets();
                                        CreateBubble();
                                        ResizeCanvas();
                                       
                                }
                        };
                       
                        /**
                         * Stops downloading and showing tweets.
                         */
                        function Terminate( message ) {
                                clearInterval( tweetUpdateInterval );
                                isDownloadingTweets = true;
                               
                                alert( message );
                        }
                       
                        /**
                         * Gets the next tweet in queue. If there are
                         * less than five tweets remaining, download a
                         * new batch.
                         */
                        function GetTweet() {
                                if( tweets.length < 5 && !isDownloadingTweets ) {
                                        DownloadTweets();
                                }
                               
                                if (tweets.length > 0) {
                                        return tweets.shift();
                                }
                        }
                       
                        /**
                         *
                         */
                        function DownloadTweets() {
                                isDownloadingTweets = true;
                               
                                if( twitterPolls ++ > 20 ) {
                                        Terminate( "That's it. No more tweets for you." );
                                }
                               
                                $.post("search.php", {query: TWITTER_QUERY, max_id: twitterMaxId, rpp: TWEETS_PER_PAGE}, function(xml){
                                       
                                        if( !$('entry',xml) || $('entry',xml).length == 0 ) {
                                                if (twitterRetries++ > 3) {
                                                        Terminate("Oops, Twitter doesn't want to serve us at the moment.");
                                                }
                                        }
                                       
                                        $('entry',xml).each(function(i){
                                                var tweet = {};
                                                tweet.title = $(this).find("title&q.........完整代码请登录后点击上方下载按钮下载查看

网友评论0