<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      Text Particle Systems

      2011-11-25 08:41  【當(dāng)耐特】  閱讀(2965)  評論(4)    收藏  舉報

      一.簡介

      在一些企業(yè)廣告或者網(wǎng)站需要一些動態(tài)文字特效的時候,往往有下面這幾種選擇:

      1.Flash制作的文字特效

      2.制作一個動態(tài)的GIF

      3.Javascript+dom+css

      4.SVG

      image

      二.javascript+Canvas文字特效

      這篇我為大家介紹第五種,也是最強大的一種,上面四種都有局限性。

      我使用的是javascript+Canvas,當(dāng)然我們依然用Jscex,為什么Canvas制作文字特效最強大??

      因為Canvas支持像素級別操作,它不僅可以宏觀上制作一些文字特效,也可以深入實現(xiàn)文字粒子系統(tǒng)特效----Text Particle Systems。

      當(dāng)然Canvas的像素級別操作還廣泛用于圖片處理等更多領(lǐng)域,在HTML5實驗室http://www.rzrgm.cn/iamzhanglei/archive/2011/11/06/2237870.html里也有了好多案例··

       

      三.特效實現(xiàn)

      我們現(xiàn)在黑色背景下寫一個“心”字:

                         var tex = "心";
                         cxt.fillStyle = "rgba(0,0,0,1)";
                         cxt.fillRect(0, 0, 430, 400);
                         cxt.fillStyle = "rgba(255,255,255,1)"
                         cxt.font = "bolder 400px 宋體";
                         cxt.textBaseline = 'top';
                         cxt.fillText(tex, 20, 20);

      然后我們遍歷所有的像素點,并把畫上了字的像素點放進一個數(shù)組里面:

                         for (y = 1; y < 400; y += 10) {
                             for (x = 1; x < 400; x += 10) {
                                 imageData = cxt.getImageData(20 + x, 20 + y, 1, 1);
                                 if (imageData.data[0] > 170) {
                                     ps.push({ px: 20 + x, py: 20 + y });
                                 }
                             }
                         }

      然后我們,在每個點上畫一個小球,并隨機生成X和Y方向的速度:

                         for (i in ps) {
                             var ball = {
                                 x: ps[i].px,
                                 y: ps[i].py,
                                 r: 2,
                                 vx: getRandomNumber(-10, 10),
                                 vy: getRandomNumber(0, 100)
                             };
                             balls.push(ball);
      
                         }
                         cxt.fillStyle = "#fff";
                         for (i in balls) {
                             cxt.beginPath();
                             cxt.arc(balls[i].x, balls[i].y, balls[i].r, 0, Math.PI * 2, true);
                             cxt.closePath();
                             cxt.fill();
      
                         }

      我們再模擬一個重力場和非彈性碰撞,加上Jscex 制作動畫效果:

       

                     var dropAsync = eval(Jscex.compile("async", function () {
      
                         while (true) {
                             if (breakTag) {
                                 break;
                             }
                             cxt.fillStyle = "rgba(0, 0, 0, .3)";
                             cxt.fillRect(0, 0, canvas.width, canvas.height);
                             cxt.fillStyle = "#fff";
      
                             for (i in balls) {
                                 cxt.beginPath();
                                 cxt.arc(balls[i].x, balls[i].y, balls[i].r, 0, Math.PI * 2, true);
                                 cxt.closePath();
                                 cxt.fill();
                                 balls[i].y += balls[i].vy * cyc / 1000;
                                 balls[i].x += balls[i].vx * cyc / 1000;
                                 if (balls[i].r + balls[i].y >= canvas.height) {
                                     if (balls[i].vy > 0) {
                                         balls[i].vy *= -0.7;
                                     }
                                 }
                                 else {
                                     balls[i].vy += a;
                                 }
                             }
                             $await(Jscex.Async.sleep(cyc));
                         }
                     }))

       

      四.在線演示



      五.同步

      本文已同步更新至:

      HTML5實驗室【目錄】:   http://www.rzrgm.cn/iamzhanglei/archive/2011/11/06/2237870.html

      主站蜘蛛池模板: 日本高清视频网站www| 国产成人综合色就色综合| 黄网站色视频免费观看| 一区二区三区在线色视频| 国产高清自产拍av在线| 亚洲成AV人片在线观高清| 国产亚洲精品成人aa片新蒲金| 长岛县| 久热久热久热久热久热久热| 国产精品高清中文字幕| 亚洲爆乳精品无码一区二区| 国产午夜福利片在线观看| 亚洲综合精品第一页| 亚洲高清 一区二区三区| 人妻少妇偷人精品一区| 亚洲人妻系列中文字幕| 久久久精品94久久精品| 欧美日韩在线第一页免费观看| 无码人妻精品一区二区三区蜜桃| 中文字幕av无码一区二区三区| 国产自拍在线一区二区三区| 国产成人av电影在线观看第一页| 精品免费看国产一区二区| 国产精品中文字幕在线| 国产精品一二三区久久狼| 2021国产在线视频| 日韩国产精品无码一区二区三区| 你懂的一区二区福利视频| 樱花草在线社区www| 天天躁日日躁狠狠躁中文字幕| 亚洲禁精品一区二区三区| 国内自拍偷拍一区二区三区| 狠狠色丁香婷婷综合尤物 | 悠悠色成人综合在线观看| 亚洲一区久久蜜臀av| 亚洲国产中文字幕精品| AV最新高清无码专区| 久久精品日日躁夜夜躁| 资源在线观看视频一区二区| 粗大挺进朋友人妻淑娟| 亚洲人成小说网站色在线|