Pourquoi utiliser <canvas> au lieu d'un bon vieux Javascript?
Certains HTML5 canvas démos sont très impressionnants, mais je suis un peu confus. Ce qui peut la toile élément régulier, le vieux JS/jQuery et CSS3/HTML5 ne peut pas? Existe-il des avantages de performance?
- Je sais que, je suis juste curieux de voir comment
<canvas>
permet aux développeurs de faire plus que ce qu'ils ont pu faire auparavant avec les autres nouvelles balises HTML5, comme<audio>
.
Vous devez vous connecter pour publier un commentaire.
Toile besoins JavaScript pour faire quelque chose donc il n'est pas vraiment une question de choix ou avec "le bon vieux JavaScript" Voir l'exemple simple ici:
Vous pouvez ensuite utiliser code JS à tirer sur elle:
Avant cette dans le pré-toile JS jours vous avez été forcé lorsque le dessin sur l'écran pour l'utiliser une fois rempli, un div pour faire les formes. Un simple rectangle ou d'un carré est facile, mais le dessin d'une ligne diagonale aurait besoin d'un tas de pixel divs et un cercle, même le pire. Il y a des bibliothèques qui font cela comme Walter Zorn bibliothèque, ce qui est assez ancien et bien connu. Sauf si vous êtes l'appui d'un ancien navigateur, cela ne semble pas un moyen raisonnable d'y aller.
Que les gens sont en citant vous pouvez exécuter
<canvas>
dans la plupart des navigateurs enregistrer Internet Explorer qui vous avez besoin d'une traduction de la bibliothèque comme Explorer La Toile Ce sera de traduire la toile de code pour IE native VML. Cependant, ce est quelque peu problématique avec quoi que ce soit de toute la complexité de l'esp. étant donné que vous compter sur IE slowish JS mise en œuvre pour faire la traduction.Autres graphiques vectoriels alternatives sont actuellement détesté (soupir) Flash, c'est à dire de la VML codé directement à et SVG si le navigateur prend en charge. Il y a des rumeurs que IE9 va avoir SVG qui est un développement intéressant.
Ce qui est curieux à propos de cette dents nashing sur la Toile par rapport à d'autres choses (récemment Flash bien sûr) est l'absence de réel débat quant à son application pratique défis. La toile est une technologie vraiment cool, mais il a 3 principales préoccupations et défis (pas nécessairement dans l'ordre)
Son texte support est très
newish afin d'obtenir une police sur un
la toile ne fonctionne que dans le dernier
des trucs (dans d'autres cas, vous avez besoin
HTML/CSS superpositions) ou méchant hacks pour
dessiner la lettre formulaires sur le
toile.
L'interactivité est un hack et demi.
Si vous voulez faire une toile dessin
cliquable, vous êtes obligé d'utiliser un
superposition de l'image des cartes ou des balises div ou
faire quelques noix de pixel de la carte de capture
événements et découvrir ce que les pixels
ils ont frappé. Une toile de l'image est un
rendue peu la carte et vraiment pas
destiné à être en interaction avec combien d'
les gens veulent. Google l'année dernière
I/O conférence un peu de danses
autour de cette question montre:
http://www.youtube.com/watch?v=AusOPz8Ww80#t=48m54s&feature=player_embedded
Le mode immédiat API signifie pas
"la cueillette" - "toile ne poussent pas que
la capacité de" Leur mention de SVG étant
mieux saute au-dessus de la performance et
compat craintes
la technologie, bref, c'est un aveu
et de la non-réponse de la solution.
Aucun natif IE soutien. Désolé
que la traduction de la bibliothèque ne coupe pas la performance sage
il pour quelque chose de significatif, et
clairement c'est à dire est toujours un navigateur vigueur
si vous l'aimez ou pas.
Toutefois, si vous avez à choisir un non-plugin de dessin basé sur la technologie, toile de même avec le IE compat bibliothèque est clairement mieux que l'ancien rempli de divs, sauf si vous avez un besoin d'antique prise en charge du navigateur.
Avantages de Performance: si vous êtes juste de simuler quelque chose qui peut être fait avec HTML/JS/CSS... non, pas maintenant, et peut-être même le contraire. Je ne serais pas surpris si cela prend moins de temps à créer & offrir une image GD à partir du serveur à ce qu'il aurait à rendre le même dans certains navigateurs.
Que de la différence... c'est comme comparer le standard de Windows GUI formes de DirectX. Vous pouvez faire quelques trucs en étirant & abusant de l'habitude des éléments HTML, mais la toile est un contrôle absolu sur les pixels. Un couple d'exemples précis de la façon dont un gros problème qui est, une pratique et un rien mais:
Bespin - Un éditeur de code qui contourne les éléments HTML de prendre le contrôle complet de rendu, et le résultat final ressemble et se comporte exactement de la même manière sur tout (toile de l'environnement) système sans piqûres HTML misérable quirks & hacks contre le codeur du personnel quirks & hacks. Voir aussi: Bespin et Toile (bonne lecture!).
WebGL - Une implémentation d'OpenGL, la 3D API. Il dispose de toutes les mathtastic cadre de mise en mémoire tampon & le mapping de texture que vous attendez dans le haut de gamme du développement de jeux. Je ne peut certainement pas imaginer toute console HD devs se précipiter pour porter leurs jeux & outils de Javascript, mais la porte commence à s'ouvrir.
Il est encore trop jeune pour juger de trop près, comme la plupart de HTML 5. Donnez-lui un an ou deux, et nous allons mieux de savoir si elle est capable de prendre des Flash de la couronne ou si c'est juste de sortir comme VRML.
<canvas>
est une surface de dessin, il est donc utile lorsque vous voulez dessiner vos propres formes et autres joyeusetés.En tant que tel, il n'est pas strictement “au lieu de” JavaScript — JavaScript pour dessiner des trucs sur un
<canvas>
tag. Vous ne pouvez pas vraiment dessiner sur une page HTML à l'aide de JavaScript, au lieu de manipuler des éléments du DOM — mais c'est plus souvent utile de dessiner, comme votre question le reconnaît.Personnellement, je ne peux pas penser à quelque chose de pire que d'avoir à écrire un tas de code pour dessiner, par exemple, un cercle sur une page web (je préfère utiliser le logiciel d'interface graphique pour créer un fichier image), mais j'imagine que pour les jeux et les graphiques alors que le niveau de contrôle est utile. (Vous pouvez extraire des fichiers d'image et de les avoir rendus sur
<canvas>
, de sorte qu'il n'est pas comme si que vous auriez à tout dessiner.)Il y a un semblable, ce-que-la-toile-fait-pour la question ici:
Peut-être des logos de la société pourrait être tiré sur elle? Un peu de code JavaScript peut être plus rapide à télécharger qu'un fichier image.
Oui, la toile démos sont assez impressionnants. C'est exactement pourquoi vous utilisez de la toile. Vous pouvez faire beaucoup de choses avec de la toile que vous ne pourrait jamais faire avec html/css/js seul. Regardez à travers les MDC toile tutoriel et de voir quel est le pourcentage des exemples que vous pensez que vous pourriez accomplir avec le html seul. Tout non-trivial graphique qui doit être rendu à la volée (par exemple graphiques) ou de graphiques interactifs (par exemple,jeux) sont des occasions parfaites pour la toile.
Vous ne serez pas en mesure de faire un peu plus complexe des dessins ou des animations dans IE, mais avec excanvas vous pouvez rendre la plupart de votre travail dans tous les principaux navigateurs.
<canvas>
juste le rendre un peu plus facile, et plus rapide?<canvas>
pour dessiner ses cartes — de la page d'accueil mentionne une “toile d'émulateur pour IE”.<canvas>
est une alternative pour le SVG/VML/Flash?