Qual è lo stato dell'arte delle librerie e dei framework JavaScript HTML canvas? [chiuso]


107

Attualmente sto esaminando le opzioni per lavorare con la tela in una nuova applicazione HTML 5 e mi chiedevo qual è lo stato attuale dell'arte nelle librerie e nei framework JavaScript della tela HTML?

In particolare, esistono framework che supportano il tipo di cose necessarie per lo sviluppo di giochi: animazioni complesse, gestione dei grafici delle scene, gestione degli eventi e interazioni dell'utente?

Anche disposto a considerare prodotti sia commerciali che open source.


Se utilizzi grafici di scene e gestisci eventi, SVG non è più adatto alle tue esigenze?
Joeri Sebrechts

Bene, questo è uno dei motivi per cui lo chiedo. La tela ha sicuramente l'atmosfera, quindi cerca di accertare cosa è fattibile e cosa no. SVG non scala particolarmente bene quando si tratta di animazioni complesse.
Toby Hede

Stai cercando specificamente grafica 3D, 2D o una delle due?
LarsH

Un'altra bella demo qui: kevs3d.co.uk/dev/asteroids . Non sono sicuro che la libreria che hanno creato sia disponibile per tutti da usare. Un bell'esempio di tela però.
Castrohenge,

jsfiddle.net/user/zlatnaspirala/fiddles prova questo framework visualJS.
Nikola Lukic

Risposte:


96

Screenshot di Fabric.js

Ho lavorato su fabric.js - una libreria di tele per aiutare esattamente in questo - manipolare oggetti su tela, gestendo eventi e interazioni dell'utente. Non è ancora stato rilasciato, ma dai un'occhiata a una semplice demo in anteprima .

Puoi anche vederlo in azione in questo editor di design , per il quale è stato originariamente creato.

Modifica: il progetto è ora disponibile su GitHub (open source con licenza MIT)

Per iniziare, controlla:

Come si confronta Fabric con altre librerie di canvas Javascript? Ecco una tabella di confronto .


Cosa fa su IE? ExplorerCanvas?
Sasha Chedygov

14
Questa è una demo fenomenale, un progetto estremamente impressionante
smontato il

3
@musicfreak Sì, ExplorerCanvas. A proposito, supera tutti i ~ 900 test in IE9 (4a anteprima), utilizzando il supporto nativo della tela.
kangax

4
C'è una pagina del progetto per fabric.js da qualche parte? Sono piuttosto interessato a saperne di più.
Arne Roomann-Kurrik

Whoa, proprio quello che mi serve ... In realtà ero frustrato da quanto fosse difficile gestire le funzioni che questa libreria gestisce così perfettamente!
Shouvik

17

Sono sorpreso che nessuno abbia menzionato WebGL e framework basati su di esso. Lo considero in cima alla lista per lo stato dell'arte per la grafica 3D accelerata dalla GPU e l'animazione complessa su tela HTML / javascript.

WebGL è uno standard web multipiattaforma, esente da royalty per un'API di grafica 3D di basso livello basata su OpenGL ES 2.0, esposto attraverso l'elemento HTML5 Canvas come interfacce Document Object Model. ...

WebGL porta il 3D senza plug-in sul Web, implementato direttamente nel browser. I principali fornitori di browser Apple (Safari), Google (Chrome), Mozilla (Firefox) e Opera (Opera) sono membri del gruppo di lavoro WebGL.

WebGL è molto solido nel suo supporto per la grafica accelerata dalla GPU. Dai un'occhiata a queste demo di shader GLSL . :-) E vedi ChemDoodle come esempio di interazione con l'utente.

Ho lavorato su un'app che utilizza il framework O3D di Google , che gestisce il grafico della scena e utilizza WebGL per il rendering (utilizzava il proprio plug-in). O3D è un work in progress e la sua documentazione non è completamente aggiornata, ma è in fase di sviluppo attivo e ci sono alcune buone demo là fuori . Piscina 3D potrebbe essere la cosa migliore per te. Gli sviluppatori di Google sono molto reattivi alle domande nel gruppo di discussione.

Esistono numerosi altri framework basati su WebGL; vedere qui . Quelli che menzionano lo sviluppo del gioco e i grafici delle scene includono Copperlicht, SceneJS, X3DOM.

WebGL viene eseguito nelle build di sviluppo recenti di diversi browser , ma non in IE. Ho utilizzato Firefox ("Minefield") e Chromium con buoni risultati. Avrai bisogno di uno di questi per eseguire le demo di cui sopra.

Tuttavia, se le tue esigenze sono che non deve avere dipendenze oltre a HTML 5 canvas / js, WebGL potrebbe non essere la scelta giusta. Non sembra che IE lo supporterà presto.

Aggiornamento: dopo aver opposto molta resistenza, MS ha deciso di supportare WebGL in IE 11 .


Three.js viene eseguito su webgl
JqueryToAddNumbers

@nube: buon punto. Three.js può eseguire il rendering su WebGL, SVG o canvas semplice (2D).
LarsH

15

three.js , di mr. doob , è un fantastico motore 3D per javascript che include scenegraph (versioni accelerate sia software che WebGL / hardware), ombreggiatura, particelle, animazione con skin (credo) ed effetti di luce. Dai un'occhiata, è un tipo super talentuoso.

Devo aggiungere che avrai bisogno del più recente Google Chrome o equivalente per visualizzare la maggior parte delle demo, uno dei miei preferiti è: http://mrdoob.github.com/three.js/examples/webgl_materials_cars.html


1
Questa demo è in realtà ancora migliore: carvisualizer.plus360degrees.com/threejs
Pierre Henry



6

Dai un'occhiata al framework processingjs . Anche l'imminente versione 2.0 di mootools ha il progetto artistico di lavorare con la tela


3
ProcessingJS è un approccio interessante al problema, ma è essenzialmente un DSL procedurale implementato in JavaScript, non sono sicuro che possa scalare ad applicazioni non banali. Controllerà l'opzione MooTools.
Toby Hede

Sì, Processing è un linguaggio di prototipazione della visualizzazione dei dati. Il fatto che ci sia una porta Javascript è pulito, ma questo difficilmente lo rende un framework HTML 5.
Peter Bailey

La domanda riguardava un framework canvas non html5, e questo è processingJS.
Andreas Köberle

Perdonate il mio errore semantico. Il quadro della tela è quello che stavo arrivando.
Peter Bailey

6

Raphael sembra una biblioteca di tele piuttosto buona; è basato su SVG (o su VML in Internet Explorer) e quindi supporta molti eventi di input dell'utente. È abbastanza piccolo (60kb gzip), quindi non è una dipendenza troppo grande.
Sembra avere anche un bel tweener: http://raphaeljs.com/reference.html#animate (vedi qui e qui per esempi).

Per un esempio di cosa può fare, dai un'occhiata a questa piccola demo intelligente .

Spero che questo ti aiuti!


10
SVG non è la stessa cosa della tela però
Toby Hede

4

Ho trovato due librerie estremamente competitive e molto migliori di Fabric.

Kinetic.js e easel.js hanno entrambi un'ottima gestione degli eventi, raggruppamento e astrazione generale della forma. Troverai molto da amare in entrambi; il cavalletto sembra avere più orientamento all'immagine e filtraggio.

Il gestore degli eventi di Fabric è MOLTO peggiore di uno di questi - fondamentalmente tratta l'intera tela come un grande contenitore di eventi e ti dice quando è stato fatto clic su "Qualcosa". Non associa eventi a singole forme o gruppi di forme.


2
FWIW, Fabric ora ti consente di allegare eventi direttamente agli oggetti e dispone di funzionalità di gruppo generiche.
kangax


3

Inoltre, il framework Javascript giovane, ma non male, e (animazione complessa, gestione dei grafici delle scene, gestione degli eventi e interazioni dell'utente) tutto su di esso - jCanvaScript . Può essere, tranne "gestione dei grafici delle scene".




2

Se vuoi usare Javascript, Dojo è un ottimo modo per farlo. Ha un'API di grafica vettoriale compatta e multipiattaforma (SVG, VML, Canvas, Silverlight) molto potente. Puoi trovarlo in dojo.gfx e dojox.gfx.

Lo abbiamo utilizzato per creare un tutor interattivo di fisica che consente agli studenti di disegnare vettori, ellissi, ecc. (Persino aggiungere immagini) ed eseguire ogni tipo di trasformazione su di essi. Puoi vedere cosa abbiamo fatto su http://gideon.eas.asu.edu/web-UI/login.html - effettua il login con qualsiasi nome utente.

Ho dato un'occhiata a fabric.js e dojox.drawing fa molte delle stesse cose. Se guardi i test nel toolkit (una volta ottenuto il suo dojox / drawing / tests /) trovi esempi di tutto, dalla grafica vettoriale alle immagini alle ombre create a livello di programmazione.


1

Sono impressionato da Akihabara come motore di gioco. Ha una fantastica documentazione sotto forma di tutorial e API. Ho persino visto su alcune bacheche parlare di una versione di akihabara 2. Sfortunatamente, tutto questo discorso riguarda un anno o più. Spero davvero che questo motore sia ancora in fase di sviluppo.


1

Ho appena rilasciato la prima iterazione di una nuova libreria di disegno e interpolazione orientata a persone con un background di sviluppo AS3 / Flash. Anche se la mia libreria non supporta ancora percorsi di disegno o grafici complessi, spero che aiuti le persone a disegnare e animare rapidamente le primitive di base in modo familiare.

Feedback e commenti sono i benvenuti. http://www.quietless.com/kitchen/introducing-js3/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.