Multimedia
- 8. »æÖƾØÐÎ
¾ØÐÎÊÇΨһһÖÖ¿ÉÒÔÖ±½ÓÔÚ2DÉÏÏÂÎÄÖлæÖƵÄÐÎ×´¡£Óë¾ØÐÎÓйصķ½·¨°ü
À¨£ºfillRect(), strokeRect()ºÍclearRect()
ÕâÈý¸ö·½·¨¶¼Äܹ»½ÓÊÕËĸö²ÎÊý£º¾ØÐεÄx×ø±ê£¬¾ØÐεÄy×ø±ê£¬¾ØÐοí¶ÈºÍ¾ØÐθß
¶È¡£µ¥Î»¶¼ÊÇÏñËØ¡£
°²²©ÖгÌÔÚÏß
varcontext=document.getElementById("canvas-area").getContext("2d");
context.fillRect(x,y,width,height);
context.strokeRect(x,y,width,height);
context.clearRect(x,y,width,height);
JAVASCRIPT
8/45
- 11. clearRect()
clearRect() ·½·¨ÓÃÓÚÇå³ý»²¼ÉϵľØÐÎÇøÓò¡£Í¨¹ý»æÖÆÐÎ×´È»ºóÔÙÇå³ýÖ¸¶¨µÄÇøÓò£¬
¾Í¿ÉÒÔÉú³ÉÓÐÒâ˼µÄЧ¹û£¬±ÈÈç°Ñij¸öÐÎ×´ÇеôÒ»¿é¡£
°²²©ÖгÌÔÚÏß
//»æÖƺìÉ«¾ØÐÎ
clearrect_context.fillStyle="#ff0000";
clearrect_context.fillRect(50,25,200,100);
//»æÖÆ°ë͸Ã÷µÄÀ¶É«¾ØÐÎ
clearrect_context.fillStyle="rgba(0,0,255,0.5)";
clearrect_context.fillRect(150,75,200,100);
//ÔÚÁ½¸ö¾ØÐÎÖصþµÄÇøÓòÇå³ýµôÒ»¸öС¾ØÐÎ
clearrect_context.clearRect(170,95,20,20)£»
JAVASCRIPT
11/45
- 12. »æÖÆ·¾¶
2D»æÖÆÉÏÏÂÎÄÖ§³ÖºÜ¶àÔÚ»²¼ÉÏ»æÖÆ·¾¶µÄ·½·¨£¬Í¨¹ý·¾¶¿ÉÒÔ´´Ôì³ö¸´ÔÓµÄÐÎ×´ºÍ
ÏßÌõ¡£
Òª»æÖÆ·¾¶Ê×ÏȱØÐëµ÷ÓÃbeginPath() ·½·¨£¬ ±íʾҪ¿ªÊ¼»æÖÆз¾¶£¬È»ºóÔÙµ÷ÓÃÏà
Ó¦µÄ»æÖÆ·¾¶·½·¨¡£
°²²©ÖгÌÔÚÏß
moveTo(x, y): ½«»æͼÓαêÒƶ¯µ½(x,y), ²»»Ïß¡£
lineTo(x, y): ´ÓÉÏÒ»µã»æÖÆÒ»ÌõÖ±Ïߣ¬µ½(x,y)Ϊֹ¡£
arc(x, y, radius, startAngle, endAngle, counterlockwise): ÒÔ(x, y)ΪԲÐÄ»æÖÆÒ»Ìõ
»¡Ïߣ¬»¡Ï߰뾶Ϊradius, ÆðʼºÍ½áÊøµÄ½Ç¶È·Ö±ðΪstartAngleºÍendAngle¡£×îºó
Ò»¸ö²ÎÊý±íʾstartAngleºÍendAngleÊÇ·ñ°´ÄæʱÕë¼ÆË㣬ֵΪfalse±íʾ°´Ë³Ê±Õë·½
Ïò¼ÆËã¡£
arcTo(x1, y1, x2, y2, radius): ±íʾ´ÓÉÏÒ»µã¿ªÊ¼»æÖÆ»¡Ïߣ¬µ½(x2,y2)Ϊֹ£¬²¢ÇÒÒÔ
¸ø¶¨µÄ°ë¾¶´©¹ý(x1,y1)¡£
¡¤
¡¤
¡¤
¡¤
12/45
- 13. °²²©ÖгÌÔÚÏß
//¿ªÊ¼Â·¾¶
pathcanvas_context.beginPath();
//»æÖÆÍâÔ²
pathcanvas_context.arc(100,100,75,0,2*Math.PI,false);
//»æÖÆÄÚÔ²
pathcanvas_context.moveTo(170,100);
pathcanvas_context.arc(100,100,70,0,2*Math.PI,false);
//»æÖÆ·ÖÕë
pathcanvas_context.moveTo(100,100);
pathcanvas_context.lineTo(100,35);
//»æÖÆʱÕë
pathcanvas_context.moveTo(100,100);
pathcanvas_context.lineTo(55,100);
//Ãè±ß·¾¶
pathcanvas_context.stroke();
JAVASCRIPT
13/45
- 15. »æÖÆÎı¾
Ä£ÄâÁËÔÚÍøÒ³ÖÐÕý³£ÏÔʾÎı¾£¬fillText()·½·¨µÄÈý¸öÖ÷Òª²ÎÊý£ºÒª»æÖƵÄ×Ö·û´®£¬x×ø
±êºÍy×ø±ê¡£
fillTextÒÔÏÂÃæÈý¸öÊôÐÔΪ»ù´¡£º
°²²©ÖгÌÔÚÏß
context.font="bold12pxsans-serif";
context.textAlign="right";
context.textBaseline="bottom";
context.fillText("x",248,43);
context.fillText("y",58,165);
JAVASCRIPT
font: ¿ÉÒÔÊÇCSS×ÖÌå¹æÔòÖеÄÈκÎÖµ¡£
textAlign£º¿ØÖÆÎı¾µÄ¶ÔÆ뷽ʽ£¨ºÍCSSµÄtext-align²»ÍêÈ«Ïàͬ£©¡£start, end,
left, rightºÍcenter¡£
textBaseline: ¿ØÖÆÎı¾Ïà¶ÔÓÚÆðµãµÄλÖ᣿ÉÒÔÈ¡Öµ£ºtop, hanging, middle,
alphabetic, ideographicºÍbottom¡£
¡¤
¡¤
¡¤
15/45
- 18. 񄯯 - translate
ÔÚÇ°Ãæ»æÖÆÃëÕëµÄÀý×ÓÖУ¬Èç¹ûÎÒÃÇ°ÑÔµã±ä»»³É±íÅ̵ÄÖÐÐÄ£¬ÄÇôÔÙ»æÖƱíÕë¾ÍÈÝ
Ò׶àÁË¡£
°²²©ÖгÌÔÚÏß
context.beginPath();
context.arc(100,100,75,0,2*Math.PI,false);
context.moveTo(170,100);
context.arc(100,100,70,0,2*Math.PI,false);
//±ä»»Ôµã
context.translate(100,100);
context.moveTo(0,0);
context.lineTo(0,-65);
context.moveTo(0,0);
context.lineTo(-40,0);
context.stroke();
JAVASCRIPT
18/45
- 20. ÑÕÉ«½¥±ä
½¥±äÊÇÁ½ÖÖ»òÕ߸ü¶àÑÕÉ«µÄƽ»¬¹ý¶É¡£canvasµÄ»æͼÉÏÏÂÎÄÖ§³ÖÁ½ÖÖÀàÐ͵Ľ¥±ä£º
°²²©ÖгÌÔÚÏß
createLinearGradient(x0, y0, x1, y1)ÑØ×ÅÖ±Ïß´Ó(x0, y0)ÖÁ(x1, y1)»æÖƽ¥±ä¡£
createRadiaGradient(x0, y0, r0, x1, y1, r1)ÑØ×ÅÁ½¸öÔ²Ö®¼äµÄ׶Ãæ»æÖƽ¥±ä¡£Ç°Èý
¸ö²ÎÊý´ú±í¿ªÊ¼µÄÔ²£¬Ô²ÐÄÊÇ(x0, y0)£¬°ë¾¶ÊÇr0; ×îºóÈý¸ö²ÎÊý´ú±í½áÊøµÄÔ²¡£
¡¤
¡¤
varmy_gradient=context.createLinearGradient(0,0,500,0);
my_gradient.addColorStop(0,"black");
my_gradient.addColorStop(1,"white");
context.fillStyle=my_gradient;
context.fillRect(0,0,500,300);
JAVASCRIPT
20/45
- 23. »æÖÆͼÏñ
ʹÓÃdrawImage()¿ÉÒÔ°ÑÒ»·ùͼÏñ»æÖƵ½»²¼ÉÏ£¬¸ù¾ÝÆÚÍûµÄ×îÖÕ½á¹ûµÄ²»Í¬£¬
drawImage()ÌṩÁËÈýÖÖ»æÖÆͼƬµÄ·½·¨£º
°²²©ÖгÌÔÚÏß
drawImage( image, dx, dy )½ÓÊÜÒ»¸öͼƬ£¬²¢½«Ö®»µ½canvasÖС£¸ø³öµÄ×ø±ê(dx,
dy)´ú±íͼƬµÄ×óÉϽǡ£
drawImage( image, dx, dy, dw, dh )½ÓÊÜÒ»¸öͼƬ£¬½«ÆäËõ·ÅΪ¿í¶Èdw£¬¸ß¶È
dh£¬È»ºó°ÑËü»µ½canvasÉϵÄ(dx, dy)λÖᣲ¢½«Ö®»µ½canvasÖС£
drawImage( image, sx, sy, sw, sh, dx, dy, dw, dh )½ÓÊÜÒ»¸öͼƬ£¬Í¨¹ý²ÎÊý( sx,
sy, sw, sh )Ö¸¶¨Í¼Æ¬µÄ¼ô²ÃµÄ·¶Î§£¬Ëõ·Åµ½(dw, dh)µÄ´óС£¬ ×îºó°ÑËü»µ½canvas
ÉϵÄ(dx, dy)λÖá£
¡¤
¡¤
¡¤
varandroid=newImage();
android.src=/slideshow/multimedia-22164861/22164861/"images/android.png";
android.onload=function(){
for(varx=0,y=0;x<800&y<500;x+=50,y+=30){
context.drawImage(android,x,y,100,117);
}
}
JAVASCRIPT
23/45
- 35. Ö÷ÒªÊôÐÔ
ÊôÐÔ ÊýÖµÀàÐÍ ËµÃ÷
autoplay ²¼¶ûÖµ È¡µÃ»òÉèÖÃautoplay±êÖ¾
controls ²¼¶ûÖµ È¡µÃ»òÕßÉèÖÃcontrolsÊôÐÔ£¬ÓÃÓÚÒþ²Ø»òÕßÏÔʾä¯ÀÀÆ÷ÄÚÖõĿؼþ
duration ¸¡µãÊý ýÌåµÄ×ܲ¥·Åʱ¼ä£¨ÃëÊý£©
ended ²¼¶ûÖµ ±íʾýÌåÊÇ·ñ²¥·ÅÍê³É
muted ²¼¶ûÖµ È¡µÃ»òÉèÖÃýÌåÎļþÊÇ·ñ¾²Òô
paused ²¼¶ûÖµ ±íʾ²¥·ÅÆ÷ÊÇ·ñÔÝÍ£
readyState ²¼¶ûÖµ ±íʾýÌåÎļþÊÇ·ñÒѾ¾ÍÐ÷
volume ¸¡µãÊý È¡µÃ»òÉèÖõ±Ç°ÒôÁ¿
°²²©ÖгÌÔÚÏß 35/45
- 37. ¼òµ¥ÏÔʾºÍ¿ØÖÆ
°²²©ÖгÌÔÚÏß
window.onload = function(){
var player = document.getElementById("player");
var btn = document.getElementById("video-btn");
var curtime = document.getElementById("curtime");
var duration = document.getElementById("duration");
duration.innerHTML = player.duration;
EventUtil.addHandler(btn, "click", function(event){
if (player.paused){
player.play();
btn.value = "Pause";
} else {
player.pause();
btn.value = "Play";
}
});
setInterval(function(){
curtime.innerHTML = player.currentTime;
}, 250);
};
HTML
37/45
- 43. RGraph¼òµ¥Ò×ÓÃ
°²²©ÖгÌÔÚÏß
<scripttype="text/javascript"src=/slideshow/multimedia-22164861/22164861/"../libraries/RGraph.common.core.js"></script>
<scripttype="text/javascript"src="../libraries/RGraph.bar.js"></script>
...
<canvasid="cvs"width="600"height="250">[Nocanvassupport]</canvas>
<script>
window .onload=function()
{
varbar=newRGraph.Bar('cvs',[5,4,1,6,8,5,3]);
bar .Set('chart.labels',['Monday','Tuesday','Wednesday','Thursda
bar .Draw();
}
</script>
JAVASCRIPT
43/45
- 44. À©Õ¹ÔĶÁ
°²²©ÖгÌÔÚÏß
RGraph ͼ±í¿â
W3C: HTML Canvas 2D Context
Wikipedia: Canvas element
W3C Spec: Audio Element
W3C Spec: Video Element
W3C Spec: Media Elements
WhatWG: Timed Track API
Mozilla Wiki: Audio Data API
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
¡¤
44/45
- 45. <Thank you!>
Feel free to contact me if you have any question.
΢²© @·¶Ê¥¸Õ
²©¿Í www.tfan.org
github github.com/princetoad