LordLost Napisano Maj 25, 2010 Zgłoś Share Napisano Maj 25, 2010 Witam Mam problem z komunikacją miedzy modułami w Delphi. Jeśli dołączam do modułu głównego ‘Unit1’ następny ‘Unit2’ z klasą(jeden unit jedna klasa), zmiennymi i procedurami do niej, to w module głównym mogę się odwoływać do procedur itd. które są w module pobocznym, ale czy da się na odwrót? Zmienne można dodać jako parametry w procedurach, ale jak w ‘Unit2’ odwołać się do procedury komponentu który jest w klasie w ‘Unit1'? Szukałem jak to można zrobić, ale wszystkie przykłady są tak zbudowane, że wszystko pięknie chodzi i nic ze sobą nie koliduje, a w rzeczywistości to …. Wybaczcie za pytanie, ale nie bardzo wiem jak to zrobić i jak widać jestem początkujący, liczę na pomoc i wyrozumiałość Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Maj 25, 2010 Zgłoś Share Napisano Maj 25, 2010 w rzeczywistosci to albo masz kod dobrze zaprojektowany albo masz 2 wyjscia: a) Łatanie i bluzganie B) refactor klas/modulow. Kilka dobrych lat zajelo mi ogarniecie tego do poziomu ktory mnie jako tako satysfakcjonuje, wiec pewnie tobie tez latwo nie pojdzie Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
LordLost Napisano Maj 25, 2010 Autor Zgłoś Share Napisano Maj 25, 2010 Wybieram wyjście a Czyli rozumiem że trzeba tak zrobić, żeby nie było potrzeby odwoływać się z innych modułów do modułu głównego? Mam OmegaImageList na formie w pierwszym unicie i jak chcę wyświetlić obrazek w procedurce(rysuj) w unicie2 to nie mogę Pomyślę jak to zrobić, ale nic nie obiecuje Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Maj 26, 2010 Zgłoś Share Napisano Maj 26, 2010 przekaz ten obiekt jako parametr metody. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
LordLost Napisano Maj 26, 2010 Autor Zgłoś Share Napisano Maj 26, 2010 Wieczorem spróbuje, muszę ogarnąć lepiej klasy, bo nie ogarniam, szczególnie jak tworzycie te mapki kafelkowe w omedze Ja zrobiłem dane mapy w tablicach i wczytywanie/rysowanie w pętlach to nawet działa, ale FPS mniejszy Edit: Musiałem spróbować już teraz w procedurze dałem parametr (Obj : TObject) przy wywoływaniu procedury dałem (OmegaImageList), ale i tak nie wiem jak się teraz odwołać do ImageOmegaList, Obj. nie wystarczy Chyba dam sobie spokój z tym na razie, wszystko zrobię w jednym unicie. Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Maj 26, 2010 Zgłoś Share Napisano Maj 26, 2010 a czemu to jako TObject ? Nie upcastuj tylko przeslij jako TImageOmageList albo w danej metodzie zrzutuj ponownie na wlasciwy typ. Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Maj 26, 2010 Zgłoś Share Napisano Maj 26, 2010 Ja zrobiłem dane mapy w tablicach i wczytywanie/rysowanie w pętlach to nawet działa, ale FPS mniejszy Bo zapewne rysujesz cały czas całą mapę nawet fragmenty nie widoczne na ekranie Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
LordLost Napisano Maj 26, 2010 Autor Zgłoś Share Napisano Maj 26, 2010 Nie, rysuje tylko kafle na ekranie. Oto pętelka, niby poza ekranem nie rysuje, ale 60FPSów średnio chodzi a na max obiektów i deszcz najgęstszy to nawet do 35 spada Procedure TMap.PDrawGround; var KafelOdleglosc, IndeX, IndeXX, IndeXY : Integer; begin IndeXX:= 0; IndeXY:= 0; Index := 0; While IndeXY < Height do begin While IndeXX < Width do begin // KafelOdleglosc:= Round(SQRT(((MapEditor.Screen.Width div 2)-* // GroundX[index]-(Size/2))*((MapEditor.Screen.Width div 2)- // GroundX[index]-(Size/2))+((MapEditor.Screen.Height div 2)- // GroundY[index]-(Size/2))*((MapEditor.Screen.Height div 2)- // GroundY[index]-(Size/2)))); GroundX[Index]:= IndexX* Size -VectorX; GroundY[Index]:= IndexY* Size -VectorY; //if not(GroundBmp[index] = 0)and(KafelOdleglosc <= Zasieg) then If not(GroundBmp[Index] = 0)and(GroundX[Index] >=75 )and (GroundX[Index] <= MapEditor.Screen.Width+Size)and (GroundY[Index] >=-Size)and (GroundY[Index] <= MapEditor.Screen.Height) then begin If GroundCol[Index] then MapEditor.ImList.ImageList.Items[GroundBmp[Index]].Draw (GroundX[Index], GroundY[Index], 0, 0, 0, 1, 1, Alpha1-25, Alpha1-100, Alpha1-100, 255, False, 1, 0) else MapEditor.ImList.ImageList.Items[GroundBmp[Index]].Draw (GroundX[Index], GroundY[Index], 0, 0, 0, 1, 1, Alpha1, Alpha1, Alpha1, 255,False, 1, 0); end; Inc(IndexX); Inc(Index); end; if Indexx = Width then begin Indexx:= 0; Inc(Indexy); end; end; end; Ale i tak pętla do bani Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Maj 26, 2010 Zgłoś Share Napisano Maj 26, 2010 Dawno nie kodziłem w ogóle ale to przypadkiem nie zwalnia tak z powodu kanału alpha ? Bo zwykle operacje takie są własnie dość zwalniające. Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
LordLost Napisano Maj 26, 2010 Autor Zgłoś Share Napisano Maj 26, 2010 Jak zrobiłem draw bez zmiany alpfy, fpsy zostały kompletnie bez zmian. MapEditor.ImList.ImageList.Items[GroundBmp[Index]].Draw(GroundX[Index], GroundY[Index], 0); Chyba o to Ci chodziło? Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Maj 26, 2010 Zgłoś Share Napisano Maj 26, 2010 To sprawdź czego rysowanie tak ci spowalnia. Wyświetlasz samą mapę czy co jeszcze i jak? Bo jak pamiętam bawiłem się w omedze to wyświetlałem mapę jakieś animację, postacie itp. może nie zbyt efekciarskie ale fps był w granicach 60 Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
LordLost Napisano Maj 26, 2010 Autor Zgłoś Share Napisano Maj 26, 2010 Żeby spadł poniżej 50 to deszcz/śnieg muszę włączyć deszcz/śnieg to od 1 do 1000 (1-60FPS 1000- 35FPS, fpsy spadają liniowo w dół wraz ze wzrostem kropel, liczone przy pełnym ekranie) kresek na ekranie(OmegaPrimitives1) i jest jeszcze jeden problem jeśli rysuje obiekty (ściany) to grunt pod nimi też się rysuje i zabiera fpsy, co prawda jak się robi mapkę najlepiej skasować grunt który jest zasłonięty obiektami, ale co to za wyjście Trochę nie na temat, ale co tam Link do komentarza Udostępnij na innych stronach More sharing options...
LordLost Napisano Maj 27, 2010 Autor Zgłoś Share Napisano Maj 27, 2010 a czemu to jako TObject ? Nie upcastuj tylko przeslij jako TImageOmageList albo w danej metodzie zrzutuj ponownie na wlasciwy typ. Działa Co prawda paru słów z twojego postu nie zrozumiałem, ale trzeba było zrobić tak jak napisałeś Dzięki za pomoc, w sumie to mój problem rozwiązany. Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Maj 27, 2010 Zgłoś Share Napisano Maj 27, 2010 A ja się zastanawiam nad tymi prymitywami (deszcz) szczerze mówiąc nigdy nie używalem tego komponentu ale zastanawiam się czy to normalne przy nim, że tak leci wydajność :/ i jest jeszcze jeden problem jeśli rysuje obiekty (ściany) to grunt pod nimi też się rysuje i zabiera fpsy, co prawda jak się robi mapkę najlepiej skasować grunt który jest zasłonięty obiektami, ale co to za wyjście Nie rozumiem? Zakładamy, ze masz widok jak w platformówce to jaki grunt jest zasłonięty ? Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl 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.