ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

表白必备神器

2022-01-28 09:59:33  阅读:209  来源: 互联网

标签:canvas Jscex 表白 必备 await tree 神器 width var


文案:喜欢就去表白 大不了连朋友都做不成 做朋友有什么用 我又不缺朋友 我缺你。
线上预览地址:http://www.prosys.club/love/index.html 复制浏览器直接访问即可

效果图:

HTML:

<!doctype html>
<html>
<head>
	<meta charset="utf-8">
	<title>爱心树表白动画</title>	    
    <link type="text/css" rel="stylesheet" href="css/default.css">
		
	<script type="text/javascript" src="js/jquery.min.js"></script>
	<script type="text/javascript" src="js/jscex.min.js"></script>
	<script type="text/javascript" src="js/jscex-parser.js"></script>
	<script type="text/javascript" src="js/jscex-jit.js"></script>
	<script type="text/javascript" src="js/jscex-builderbase.min.js"></script>
	<script type="text/javascript" src="js/jscex-async.min.js"></script>
	<script type="text/javascript" src="js/jscex-async-powerpack.min.js"></script>
	<script type="text/javascript" src="js/functions.js" charset="utf-8"></script>
	<script type="text/javascript" src="js/love.js" charset="utf-8"></script>

</head>
<body>
	<!--===音乐:原谅——刘瑞琦======================================-->
	<audio autoplay>
			<source src="music/forgive.mp3"/>
	</audio>  
	
	<!--==============================================================-->
	<div id="main">
        <div id="error">
        	抱歉!目前您的浏览器无法显示,请更新至最新版本或使用其他主流浏览器,谢谢合作。
        </div>
        <div id="wrap">
            <div id="text">
		        <div id="code">
		      		<font color="#FF0000">  	<!-- 文字可自定义编辑 -->
		      			<span class="say">亲爱的小幸运,我爱你,虽然你看不见我对你的告白</span><br>
						<span class="say"></span><br>
						<span class="say">我知道我不会甜言蜜语,但是我会用行动证明一切</span><br>
						<span class="say"></span><br>
			        	<span class="say">你说我啰嗦,有些东西因为越在乎所以越失去</span><br>
						<span class="say">因为我太爱你了,所以我失去你了</span><br>
						<span class="say">因为我太啰嗦了,所以你离开了我</span><br>
						<span class="say">虽然你看不见我的告白,但是我还是要把这些心里话说出来</span><br>
						<span class="say"></span><br>
                        <span class="say"><span class="space"></span> -- 爱你的人--</span>
			  		</font>
			  		</p>
      			</div>
            </div>
		    <div id="clock-box">
		        <span class="STYLE1"></span>
		        <font color="#33CC00">亲爱的小幸运,我喜欢你</font>
				<span class="STYLE1">已经是……</span>
		        <div id="clock"></div>
		    </div>
		    <canvas id="canvas" width="1100" height="680"></canvas>
	    </div>
            
    </div>
    

	<!--==========================================================-->
    <script>
	    (function(){
	        var canvas = $('#canvas');
	        if (!canvas[0].getContext) {
	            $("#error").show();
	            return false;       
	        }
	
	        var width = canvas.width();
	        var height = canvas.height();        
	        canvas.attr("width", width);
	        canvas.attr("height", height);
	        var opts = {
	            seed: {
	                x: width / 2 - 20,
	                color: "rgb(190, 26, 37)",
	                scale: 2
	            },
	            branch: [
	                [535, 680, 570, 250, 500, 200, 30, 100, [
	                    [540, 500, 455, 417, 340, 400, 13, 100, [
	                        [450, 435, 434, 430, 394, 395, 2, 40]
	                    ]],
	                    [550, 445, 600, 356, 680, 345, 12, 100, [
	                        [578, 400, 648, 409, 661, 426, 3, 80]
	                    ]],
	                    [539, 281, 537, 248, 534, 217, 3, 40],
	                    [546, 397, 413, 247, 328, 244, 9, 80, [
	                        [427, 286, 383, 253, 371, 205, 2, 40],
	                        [498, 345, 435, 315, 395, 330, 4, 60]
	                    ]],
	                    [546, 357, 608, 252, 678, 221, 6, 100, [
	                        [590, 293, 646, 277, 648, 271, 2, 80]
	                    ]]
	                ]] 
	            ],
	            bloom: {
	                num: 700,
	                width: 1080,
	                height: 650,
	            },
	            footer: {
	                width: 1200,
	                height: 5,
	                speed: 10,
	            }
	        }
	
	        var tree = new Tree(canvas[0], width, height, opts);
	        var seed = tree.seed;
	        var foot = tree.footer;
	        var hold = 1;
	
	        canvas.click(function(e) {
	            var offset = canvas.offset(), x, y;
	            x = e.pageX - offset.left;
	            y = e.pageY - offset.top;
	            if (seed.hover(x, y)) {
	                hold = 0; 
	                canvas.unbind("click");
	                canvas.unbind("mousemove");
	                canvas.removeClass('hand');
	            }
	        }).mousemove(function(e){
	            var offset = canvas.offset(), x, y;
	            x = e.pageX - offset.left;
	            y = e.pageY - offset.top;
	            canvas.toggleClass('hand', seed.hover(x, y));
	        });
	
	        var seedAnimate = eval(Jscex.compile("async", function () {
	            seed.draw();
	            while (hold) {
	                $await(Jscex.Async.sleep(10));
	            }
	            while (seed.canScale()) {
	                seed.scale(0.95);
	                $await(Jscex.Async.sleep(10));
	            }
	            while (seed.canMove()) {
	                seed.move(0, 2);
	                foot.draw();
	                $await(Jscex.Async.sleep(10));
	            }
	        }));
	
	        var growAnimate = eval(Jscex.compile("async", function () {
	            do {
	    	        tree.grow();
	                $await(Jscex.Async.sleep(10));
	            } while (tree.canGrow());
	        }));
	
	        var flowAnimate = eval(Jscex.compile("async", function () {
	            do {
	    	        tree.flower(2);
	                $await(Jscex.Async.sleep(10));
	            } while (tree.canFlower());
	        }));
	
	        var moveAnimate = eval(Jscex.compile("async", function () {
	            tree.snapshot("p1", 240, 0, 610, 680);
	            while (tree.move("p1", 500, 0)) {
	                foot.draw();
	                $await(Jscex.Async.sleep(10));
	            }
	            foot.draw();
	            tree.snapshot("p2", 500, 0, 610, 680);
	
	            // 会有闪烁不得意这样做
	            canvas.parent().css("background", "url(" + tree.toDataURL('image/png') + ")");
	            canvas.css("background", "#ffe");
	            $await(Jscex.Async.sleep(300));
	            canvas.css("background", "none");
	        }));
	
	        var jumpAnimate = eval(Jscex.compile("async", function () {
	            var ctx = tree.ctx;
	            while (true) {
	                tree.ctx.clearRect(0, 0, width, height);
	                tree.jump();
	                foot.draw();
	                $await(Jscex.Async.sleep(25));
	            }
	        }));
	
	        var textAnimate = eval(Jscex.compile("async", function () {
			    var together = new Date();
			    together.setFullYear(2010,1 , 15); 			//时间年月日
			    together.setHours(16);						//小时	
			    together.setMinutes(53);					//分钟
			    together.setSeconds(0);					//秒前一位
			    together.setMilliseconds(2);				//秒第二位
	
			    $("#code").show().typewriter();
	            $("#clock-box").fadeIn(500);
	            while (true) {
	                timeElapse(together);
	                $await(Jscex.Async.sleep(1000));
	            }
	        }));
	
	        var runAsync = eval(Jscex.compile("async", function () {
	            $await(seedAnimate());
	            $await(growAnimate());
	            $await(flowAnimate());
	            $await(moveAnimate());
	
	            textAnimate().start();
	
	            $await(jumpAnimate());
	        }));
	
	        runAsync().start();
	    })();
	    
    </script>
	<!--=======附属说明====================================================-->
	<div style="text-align:center;margin:50px 0; font:normal 14px/24px 'MicroSoft YaHei';">
		<p>
			适用浏览器:360、FireFox、Chrome、Safari、Opera、傲游、搜狗, 不支持IE8及以下浏览器。
		</p>
	</div>
</body>
</html>

CSS:

body{margin:0;padding:0;background:#ffe;font-size:14px;font-family:'微软雅黑','宋体',sans-serif;color:#231F20;overflow:auto}
a {color:#000;font-size:14px;}
#main{width:100%;}
#wrap{position:relative;margin:0 auto;width:1100px;height:680px;margin-top:10px;}
#text{width:400px;height:425px;left:60px;top:80px;position:absolute;}
#code{display:none;font-size:16px;}
#clock-box {position:absolute;left:60px;top:550px;font-size:28px;display:none;}
#clock-box a {font-size:28px;text-decoration:none;}
#clock{margin-left:48px;}
#clock .digit {font-size:64px;}
#canvas{margin:0 auto;width:1100px;height:680px;}
#error{margin:0 auto;text-align:center;margin-top:60px;display:none;}
.hand{cursor:pointer;}
.say{margin-left:5px;}
.space{margin-right:150px;}

由于JS文件较多,全部代码我就放网盘里了,大家可以微信搜搜 木易学长 微信公众号,回复:表白,即可获取完整源码哟~

 

标签:canvas,Jscex,表白,必备,await,tree,神器,width,var
来源: https://blog.csdn.net/qq_39985125/article/details/122726902

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有