Greensand Napisano Styczeń 22, 2006 Zgłoś Share Napisano Styczeń 22, 2006 Mam problem ze scrollowaniem mapy w DelphiX, która złożona jest ze spritów. Otóż pojawił się następujący problem z dziwnym zachowaniem krawędzi mapy. Efekt da się zaobserwować na obrazku (te trójkątne czarne dziury na brzegach, które zaznaczyłem strzałkami).Dodam też, że scrollwanie odbywa się przez zmianę położenia wszystkich spritów w pętli. Np w dół sprite[x, y].y:=sprite[x, y].y+1 itd...Z góry dziękuje za odpowiedzi... Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Styczeń 22, 2006 Zgłoś Share Napisano Styczeń 22, 2006 Nie używałem nigdy DelphiXa, ale może to byc związane z tym, że po prostu nie są rysowane te Sprite'y, które nie są w pełni widoczne na ekranie, może trzeba przestawić wartości któryś właściwości. Link do komentarza Udostępnij na innych stronach More sharing options...
Kezard Napisano Styczeń 22, 2006 Zgłoś Share Napisano Styczeń 22, 2006 Dodaj po porstu po jednym sprajcie z każdej strony tak aby część znajnowała sie poza ekranem. Link do komentarza Udostępnij na innych stronach More sharing options...
Greensand Napisano Styczeń 22, 2006 Autor Zgłoś Share Napisano Styczeń 22, 2006 Pomysł Drazeka wydaje się dobry tyle że trudny w realizacji. Ponieważ sprity za nic nie chcą (przynajmniej w pętli) się narysować jeśli wychodząza brzegi DXDraw. Potrzebna pewnie jest jakaś opcja do włączenia tylko jaka ?Niemniej dziękuje za zainteresowanie tematem i zachęcam do dalszych prób rozwiązania problemu Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Styczeń 22, 2006 Zgłoś Share Napisano Styczeń 22, 2006 Rysujesz poprostu za mało kafli jeśli to rysujesz na zasadzie jakiegoś zakresu to z przedziału od dołu daj o -1 a z przedziału górnego daj + 1 i problem z głowy. Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Greensand Napisano Styczeń 22, 2006 Autor Zgłoś Share Napisano Styczeń 22, 2006 A mógłbyś wskazać miejsce w kodzie w którym wedle ciebie muszą być zmiany?? Bo mi nie wychodzi [code=Delphi] procedure Maluj_Mape(Xs, Ys: integer); var x,y:integer; Y[BLHX^BNLHX^HBY[BBŚ7V&UŁŚ7V&U36ŚMmtd%Mmtdeź4(4) hN)Ś4(%UŃ4(1a%MŃŃŃĄa if isRight in DXInput.States then Xs:=-5; if isUp in DXK]][MNBYŃ[[]][_ŁÓS3ŁÓ3ŁÓEWBWFFSb4'WGF!a%MŃŃŃĄąŃQŃ4(5}`;10 then Xs:=5; if Mouse_X>DXDraw.SurfaceWidth-10 then\"KMNBY[WIL[MNBY[WIŃ^7W& amp;f6TVvBÓ#FV3ŁÓSVR22eaą4(M 4(`raw.flip; [/code] Link do komentarza Udostępnij na innych stronach More sharing options...
Kezard Napisano Styczeń 22, 2006 Zgłoś Share Napisano Styczeń 22, 2006 [code=Delphi] procedure TForm1.FormCreate(Sender: TObject); var x,y:inteBY[BBHHYm[^Ź[KXlHXŚWG'7ŚćVGG&rF3ŁGG&rF2śFfĆÓ=Ń=ŃŹm]ŃY ąt4(4) to max_x+3 do for y:=1 to max_y+3 do begin IzoSquare[xWNU[XYT]KX]JLKŃ[[K[[JNB^]XŁ7F'EŁSŁSÓS6ŚŚ7V&mtdĄMŃŃdŹĄź4(%M[x, y].Image := Form1.DXImageList.Items.Items[random(2)] enBBB[ [/code]Spróbuj tak. Link do komentarza Udostępnij na innych stronach More sharing options...
Greensand Napisano Styczeń 23, 2006 Autor Zgłoś Share Napisano Styczeń 23, 2006 Dziękuje, ale nie pomogło, to chyba wina jakieś nieaktywnej opcji, sprity Na brzegach nadal są niewyświetlane. I nie mam pojęcia co to za opcja Link do komentarza Udostępnij na innych stronach More sharing options...
wachu Napisano Styczeń 23, 2006 Zgłoś Share Napisano Styczeń 23, 2006 Panowie, przeciez tutaj nie jest blad w tej petli... poprostu DirectDraw nie rysuje spritow ktore sa czesciowo poza ekranem, no a przynajmniej standardowo, bo BltFast zawsze nie bedzie ich rysowal i tutaj sie nic nie poradzi, ale jest tez funkcja do rysowania, BitBlt czy cos takiego ktora rysuje sprajty mimo ze sa poza ekranem, co prawda z tego co pamietam trzeba do tego jeszcze ustawic jakis obiekt clippera, ale po tylu wskazowkach juz na pewno sam znajdziesz info w sieci. Link do komentarza Udostępnij na innych stronach More sharing options...
Kezard Napisano Styczeń 23, 2006 Zgłoś Share Napisano Styczeń 23, 2006 Tu masz kod źródłowy edytora napisanego w DelphiX w którym jest poprawnie wyświetlana mapa izometryczna. Nie jestem pewien czy jest mojego autorstwa, ale trzymam go razem z moimi projektami Może Ci się przyda.http://rapidshare.de/files/11634778/Edytor...SO_1.0.rar.html Link do komentarza Udostępnij na innych stronach More sharing options...
Greensand Napisano Styczeń 23, 2006 Autor Zgłoś Share Napisano Styczeń 23, 2006 Co do posta Wachu. Chodzi ci o http://bimbus.org/index.php?strona=64&go=5...=DirectX&to=316 ???Tam jest to w czystym direct...i mam problemy z przeniesieniem samej funkcji do DelphiX (chociaż masz racja istnieje tam taka funkcja BitBltale ma wiele parametrów których nie rozumiem do końca o co chodzi z tym HDC???Odnośnie posta Drazka w tym programie też występuje ten problem tyle że nie rzuca się tak bardzo w oczy sam to sprawdź A może ma ktoś inny pomysł jak zrobić mapę izometryczną dla której da się zrobić edytor. Trzeba opracować funkcje klikania na poszczególnekwadraty prawie sobie z tym poradziłem, przez podzielenie kwadracika na trójkąty. Ale czekam w nadziei że ktoś może mieć lepszy czyt. szybszy pomysł. Link do komentarza Udostępnij na innych stronach More sharing options...
wachu Napisano Styczeń 24, 2006 Zgłoś Share Napisano Styczeń 24, 2006 Z tym BitBlt to byla pomylka, chodzilo mi o funkcje Blt obiektu powierzchni, poszukaj na googlach. Link do komentarza Udostępnij na innych stronach More sharing options...
oksal Napisano Styczeń 24, 2006 Zgłoś Share Napisano Styczeń 24, 2006 Co do rysowanie obiektow TSprite, TImageSprite (rozumiem ze na tych klasach oparles swoja mapę, najlepiej wybierz TImageSprite- możesz sobie potem opracowac animacje w petli jakiegos wybranego pola swiata, masz dostępne zmienne AnimLoop i inne) to sa one rysowane dopoki jakis ich fragment jest na powierzchni TDXDraw.Surface.Canvas. Mozna sie o tym latwo przekonac tworzac duszka i przesuwajac go poza obszar zdefiniowanej rozdzielczosci... Wracając do Twojego problemu szukaj "błedu" w warunku wyswietlania pol widocznych na ekranie lub postaraj się stworzyc własną procedurę OnDraw I tak jak podsuwa Ci pomysł Drazek dodaj odpowiednio wiecej wyswietlanych wierszy i kolumn pozdrawiam oksal Link do komentarza Udostępnij na innych stronach More sharing options...
oksal Napisano Styczeń 24, 2006 Zgłoś Share Napisano Styczeń 24, 2006 [quote] ...A może ma ktoś inny pomysł jak zrobić mapę izometryczną dla której da się zrobić edytor. Trzeba opracować funkcje klikania na poszczególnekwadraty prawie sobie z tym poradziłem, przez podzielenie kwadracika na trójkąty. Ale czekam w nadziei że ktoś może mieć lepszy czyt. szybszy pomysł. [/quote]Spojrz na świat inaczej:-)[IMG]http://upload2.postimage.org/54753/izometryczna.jpg\" border=\"0\" alt=\"\" />Powyzszy obrazek przedstawia kolejno wyswietlane pola w dowolnej petli... Skoro Twoj projekt oparty jest na duszkach to wystarczy obsluzyc zdarzenie klikniecia w takim duszku (na rysunku widac ze istnieje 1/2 obszaru dla kazdej kosci mapy swiata, ktora jest nie przykryta :-)).A jak obsłuzyc takie zdarzenie to znajdziesz na starej lokalizacji forum.. bajo.... Tak wiec masz proste i duzo szybsze rozwiazanie niz podział na trojkaty. Swego czasu na to wpadłem i zastosowałem w swoim edytorze swiatow 2Dwww.delphi.ilion.pl w którym mogę budowac swiat prostokatny jak i izometryczny pozdrawiam oksal Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.