![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 3 Dołączył: 3.04.2011 Ostrzeżenie: (10%) ![]() ![]() |
witam
zacząłem interesować się ostatnio tworzeniem gier w javascript przy użyciu canvas no i w ramach ćwiczeń postanowiłem stworzyć jakąś tam gierkę, gdzie jakiś obiekt poruszałby działkiem, jak czołg za pomocą metody lineTo() potrafię narysować linię w zależności od położenia myszki (z pomocą przychodzi jQuery), ale problem leży w tym że wraz z położeniem myszki zmienia się długość działa po prostu metoda lineTo przyjmuje wartości x,y więc gdy chcę odchylić działo bardziej w którąś stronę po prostu się wydłuża mam nadzieję ze kazdy zrozumiał o co chodzi myślałem nad pitagorasem ale chyba nie bardzo, bo będą aż dwie niewiadome (jedynie żądana długość działa będzie znana) a może rozwiązanie jest jakieś banalne tylko po prostu o czymś zapomniałem albo po prostu jeszcze czegoś nie umiem? pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chyba nie ten dział. Po prostu narysuj linię którą ma określoną długość, a później ją obracaj względem położenia kursora na obiekcie. Pokaż kod.
Ten post edytował !*! 9.05.2012, 19:01:19 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 87 Pomógł: 3 Dołączył: 3.04.2011 Ostrzeżenie: (10%) ![]() ![]() |
no rzeczywiście się pomyliłem
no w każdym razie, zrobiłbym jak piszesz, gdybym tylko wiedział jak przecież lineTo przyjmuje tylko dwa argumenty, x i y, więc jak określić długość rysowanej linii? Kod $(document).ready(function() { var canvas = document.getElementById("plotno"); var context = canvas.getContext("2d"); context.strokeStyle = 'black'; context.lineWidth = 5; context.lineCap = "round"; $("#plotno").mousemove(function(e) { context.beginPath(); context.moveTo(300,50); context.lineTo(e.pageX,20); context.stroke(); context.clearRect(e.pageX,e.pageY); }); }) no jest i kod, mam też póki co problem z clearRect, nie wiem jakie wartości podstawiać by po zmianie umiejscowienia kursora stara linia się kasowała, nowa rysowała bo w tym momencie clearRect w ogóle nie działa i pole canvas po prostu jest zamalowywane liniami pozdro |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 8 Dołączył: 5.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat problem leży w tym że wraz z położeniem myszki zmienia się długość działa Rysujesz myszką to działko? Może zrób jakiś rysunek bo nie wiem o co ci chodzi. IMHO dobrze by było jakbyś rozdzielił prezentację działka od jego sterowania. PS. clearRect ma 4 argumenty, musisz dodać szerokość i wysokość prostokąta. Ten post edytował Theqos 10.05.2012, 13:26:45 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Ustawiasz się na środku wieżyczki czołgu (moveTo(x, y)).
2. Rysujesz prostą, pionową linię, tak jakbyś wskazywał myszką dokładnie nad czołgiem (lineTo(x, y - 25), jeżeli lufa ma mieć 25 pikseli długości). 3. Obracasz lufę o kąt pomiędzy środkiem wieżyczki, a aktualną pozycją myszki (rotate(a)), względem środka wieżyczki (obracanie względem punktu). |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:15 |