2010-10-10 11 views
9

muszę HTML5 ram płótno robić:HTML5 canvas zaawansowany ramy

  • rysowania obiektów (np prostokąt)
  • na zdarzenia onmouseover w stylu zmiana koloru obiektu/granicznego
  • na kliknięcie zrobić jakąś akcję js

thx

EDIT: I w końcu zdecydował się na wykorzystanie raphaeljs (Alterna byłby dojo). Ta struktura jest niesamowita. (Nie potrzebuje płótna HTML5 i używa SVG)

Odpowiedz

8

Brzmi tak, jak naprawdę chcesz mieć interfejs graficzny retained mode, w którym można utworzyć obiekt, pobrać zdarzenia myszy, zmienić właściwości, przenieść itp. i niech przeglądarka poradzi sobie z przerysowaniem ekranu w razie potrzeby. W takim przypadku lepiej byłoby, gdybyś użył SVG zamiast <canvas>, który jako powierzchnia graficzna immediate mode jest po prostu pudełkiem pełnym pikseli.

+0

Tak, SVG, co byłoby najprostszym sposobem, aby przejść. O ile mi wiadomo, nie ma żadnych bibliotek canvas, które wspierałyby wykrywanie zdarzeń tak, jak chcesz. –

1

Spójrz na to pytanie:

What is the current state of the art in HTML canvas JavaScript libraries and frameworks?

Fabric.js jest mightly imponujące i ciasto jest również przyzwoity biblioteka.

+0

Thx, już wypróbowałem Fabric.js. To niesamowite, ale faceci nie rozwiązują problemu z animacją i wydarzeniami (przynajmniej nie jako zwykłą funkcjonalność). – ChRapO

+0

Czy próbowałeś CAKE? – Castrohenge

+2

Nie, jest problem z tym, że projekt to śmierć. Ale obecna funkcjonalność jest dobra. – ChRapO

0

bHive robi to naprawdę ładnie i pochodząc z tła Actionscript Znalazłem go całkiem łatwy w użyciu, musiałem spojrzeć na dema, ponieważ dokumentacja nie jest pomocna!

Aby pomóc ..

square = engine.createShape({ 
    shape: 'square', 
    style: 'filled', 
    backgroundColor: '#000', 
    width: 120, 
    height: 20, 
    x: 20, 
    y: 100 
}); 

wykonywać żadnych czynności myszy musisz dodać go do obiektu klipu.

clip = engine.createClip({ x: 20, y: 20 }); 

Następnie

clip.add(square); 

dodać detektor zdarzeń

clip.addEventListener('onmouseover',function(e) { some code ... }); 
clip.addEventListener('onclick',function(e) { some code ... }); 

W pętli trzeba następnie narysować kwadrat.

clip.draw(); 

używam źródło dema mi pomóc poprzez więc może sprawdzić http://www.bhivecanvas.com/demos/cargame.php jako że ma najazdów i onclicks w nim.

6

Nie zapomnij o KineticJS, który sprawuje się dużo lepiej niż te, które Pan wspomniał, plus to ma znacznie prostsze API