1. 程式人生 > >H5使用canvas實現星星閃爍效果

H5使用canvas實現星星閃爍效果

html

  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <metacharset="utf-8"/>
  5.         <title>star</title>
  6.     </head>
  7.     <body>
  8.         <div>
  9.             <canvasid="canvas"width = "800"height="600"></canvas>
  10.         </div>
  11.         <script
    src="js/main.js"></script>
  12.         <scripttype="text/javascript"src="js/commonFunctions.js"></script>
  13.         <scripttype="text/javascript"src="js/starts.js"></script>
  14.     </body>
  15. </html>

JS

main.js

[javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. var can;  
  2. var ctx;  
  3. var w,h;  
  4. var girlPic = new Image();  
  5. var starPic = new Image();  
  6. var num = 60;  
  7. var stars  = [];  
  8. var lastTime,deltaTime;  
  9. var switchy;  
  10. var life = 0;  
  11. function init(){  
  12.     can  = document.getElementById("canvas");  
  13.     ctx = can.getContext("2d");  
  14.     w = can.width;  
  15.     h = can.height;  
  16.     document.addEventListener("mousemove"
    ,mousemove,false);  
  17.     girlPic.src = "img/girl.jpg";  
  18.     starPic.src = "img/star.png";  
  19.     for(var i=0;i<num;i++){  
  20.         var obj = new starObj();  
  21.         stars.push(obj);  
  22.         stars[i].init();  
  23.     }  
  24.     lastTime = Date.now();  
  25.     gameloop();  
  26. }  
  27. document.body.onload = init;  
  28. function gameloop(){  
  29.     window.requestAnimationFrame(gameloop);  
  30.     var now = Date.now();  
  31.     deltaTime = now - lastTime;  
  32.     lastTime = now;  
  33.     drawBackground();  
  34.     drawGril();  
  35.     drawStars();  
  36.     aliveUpdate();  
  37. }  
  38. function drawBackground(){  
  39.     ctx.fillStyle ="#393550";  
  40.     ctx.fillRect(0,0,w,h);  
  41. }  
  42. function drawGril(){  
  43.     //drawImage(img,x,y,width,height)
  44.     ctx.drawImage(girlPic,100,150,600,300);  
  45. }  
  46. function  mousemove(e){  
  47.     if(e.offsetX||e.layerX){  
  48.         var px = e.offsetX == undefined?e.layerX:e.offsetX;  
  49.         var py = e.offsetY == undefined?e.layerY:e.offsetY;  
  50.         //判斷px py在範圍內
  51.         if(px>100&&px<700&&py>150&&py<450){  
  52.             switchy =true;  
  53.         }  
  54.         else{  
  55.             switchy =false;  
  56.         }  
  57. //      console.log(switchy);
  58.     }  
  59. }  
commonFunctions.js [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. window.requestAnimFrame = (function() {  
  2.     return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||  
  3.         function/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {  
  4.             return window.setTimeout(callback, 1000 / 60);  
  5.         };  
  6. })();  

stars.js [javascript] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片
  1. var starObj = function(){  
  2.     this.x;  
  3.     this.y;  
  4.     this.picNo;  
  5.     this.timer;  
  6.     this.xSpd;  
  7.     this.ySpd;  
  8. }  
  9. starObj.prototype.init = function(){  
  10.     this.x = Math.random()*600+100;  
  11.     this.y = Math.random()*300+150;  
  12.     this.picNo =Math.floor(Math.random()*7);  
  13.     this.timer = 0;  
  14.     this.xSpd = Math.random()*3-1.5;  
  15.     this.ySpd = Math.random()*3-1.5;  
  16. }  
  17. starObj.prototype.update = function(){  
  18.     this.x += this.xSpd*deltaTime*0.01;  
  19.     this.y += this.ySpd*deltaTime*0.01;  
  20.     //this.x 超過範圍
  21.     if(this.x<100||this.x>693){  
  22.         this.init();  
  23.         return;  
  24.     }  
  25.     //this.y超出範圍 重生
  26.     if(this.y<150||this.y>443){  
  27.         this.init();  
  28.         return;  
  29.     }  
  30.     this.timer +=deltaTime;  
  31.     if(this.timer>60){  
  32.         this.picNo += 1;  
  33.         this.picNo %= 7;  
  34.         this.timer = 0;  
  35.     }  
  36. }  
  37. starObj.prototype.draw = function(){  
  38. 相關推薦

    H5使用canvas實現星星閃爍效果

    html <!DOCTYPE html> <html>     <head>         <metacharset="utf-8"/>         <title>star</title>

    微信小程式實現星星評價效果

    程式碼實現 wxml檔案 ? 1 2 3

    微信小程序實現星星評價效果

    comm 入門到精通 string 1-1 osi 分享圖片 場景 ase yui 代碼實現 wxml文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <

    CSS3如何實現div閃爍效果

    效果:   Html: <h1 class="blink">花花世界</h1>   Css: 1 @keyframes fade { 2 from { 3 opacity:

    Unity-實現UGUI閃爍效果

    沒什麼特殊點,直接一套程式碼 using UnityEngine; using System.Collections; using UnityEngine.UI; public class ShanShuoAnim : MonoBehaviour { priv

    微信小程式實現星星評價效果-支援多個條目評價

    程式碼實現 wxml檔案 <!--pages/evaluatepage/evaluatepage.wxml--> <view class='container'>

    SVG animate實現呼吸閃爍效果

    <!DOCTYPE> <html> <head> <title>呼吸效果測試</title> <meta content="width=device-width;initial-scale

    animation blink 實現閃爍效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,

    CSS實現簡單動態漸變閃爍效果

    CSS練習用例: .event { border-radius:4px; -webkit-border-radius:4px; color:#FFFFFF; font-size:12px; margin:0px 30px; p

    echart3.0實現折線圖轉折點閃爍效果

    在echart2.0中可以很簡單的實現折線圖的轉折點閃爍效果,只要在series中資料新增markPoint:{symbol:'emptyCircle', effect:{show:true}}即可,

    android 使用LinearGradient實現手機開機文字閃爍效果

    LinearGradient:線性漸變意思,這個也是繼承了Shader類,先看下它的建構函式: public LinearGradient(float x0, float y0, float x1,

    html+JS刷圖實現視頻效果

    java scrip snap hive image com htm load() logs 網頁播放視頻須要載入播放器,可是通過刷圖也能實現視頻播放的效果 JS中用到Z-index屬性,記錄一篇解說Z-index屬性的博客的地址: http://www.cnblogs

    實現輪播效果

    fault num 設置圖 pro ren pos ont mouseout return HTML <div class="wrap"> <div id="slide"> <ul class="list"> &l

    Shine.js實現動態陰影效果

    b2c ava .net fun text 動態 cti element gravity Shine.js 是一個用於實現美麗陰影的 JS 庫。 特性 1、可動態旋轉光的位置,投影出不同的陰影效果   2、可定制的陰影,   3、沒有庫依賴關系,AMD兼容使

    easyui-numberspinner實現雙箭頭效果

    java tin div input pointer position textbox com value 效果圖: 實現了    [點擊左上角 輸入框的值加 0.5]   [ 左下角 值減0.5 ]   [ 右上角點擊 值加1]    [ 右下角點擊 值減1] 代碼:

    jQuery實現輪播效果(一) - 基礎

    時代 例如 自己 -1 fun 時間間隔 order .html 官方 前戲: XXXX年XX月XX日,經理交給我一個站點新聞資訊網頁開發的活兒。我一個java程序猿,怎麽完畢得了網頁設計這樣高端的活兒呢!之前盡管有學過一點HTML。CSS的知識。可

    RecyclerView實現終極畫廊效果 中間突出並且壓住兩側布局

    div -1 我認 with lis dsi style only his 先給大家上個gif 要不然下面很枯燥 忘記原來在哪裏看到了..... 這個效果我找了NNNNNN長時間,,,我認為憑我現在的能力 寫出來需要好久 所以 退而求其次找大神寫好的... 你們不

    JS實例之圖片輪播,實現圖片播放效果

    utf length pla get eight code func nsh java 1 <head> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&g

    Android使用GestureDetector實現手勢滑動效果

    void tco event else if rate method sta pro 手勢滑動 直接看實例: package com.example.gesturedetector; import android.os.Bundle; import

    js實現緩動效果-讓div運動起來

    rect() prop star this line ret rtti logs start var tween = { linear:function(t,b,c,d){ return c*t/d + b; }, eas