játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5471
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2525

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2194
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] > 4 < [5] [6] [7] [8] [9]
DMG - Szerkesztő | 3172 hsz       Online status #177482   2012.04.02 19:41 GMT+1 óra  
Azért kösz.
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177478   2012.04.02 19:11 GMT+1 óra  
Lehet oltári nagy baromság, de próbálj meg castolni. Sok problémám eredt már ebből, egy próbát megér.

Akkor tárgytalan.

   
DMG - Szerkesztő | 3172 hsz       Online status #177476   2012.04.02 18:56 GMT+1 óra  
Kikészülök, valaki vezessen már ki az erdőből legyen olyan kedves.

Szóval van egy Vector2 osztályom, amiben van x, y float változó.

Namos ehhez hozzá akarok adni eg ymásik Vector2-t amit mellesleg meg is szorzok egy számmal.

Kód:
position.x += velocity.x * dt;


A jelenség a következő.

Legyen mondjuk position.x = 7.5, velocity.x = 1.0 és a dt = 0.056;

Ha a fenti kódot futtatom, akkor kapok egy 86766.37 és ehhez hasonló borzalmat.

ha simán kiszámoltatom vele a

Kód:
position.x += 1.0f * 0.056f;


képletet akkor jó.



Kiiratom a változók értékeit, szóval biztos, hogy nem valami ordenáré nagy számot adok hozzá.

Felteszem valami memória címzés lehet nyomozok, de hátha van ötlet, hogy hol keressem.


Nem szóltam. dt az elején felugrik, csak a logbol meg kiszalad ezért nem láttam eddig.

Ezt a hozzászólást DMG módosította (2012.04.02 19:09 GMT+1 óra, ---)
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177330   2012.04.01 08:03 GMT+1 óra  
Ezt majd megnézem, köszönöm szépen! Bár egyenlőre szerintem maradok a sima Java Application-nál, aztán majd átírom appletté.

   
Matzi - Szerkesztő | 2525 hsz       Online status #177314   2012.03.31 22:48 GMT+1 óra  
Nekem van erre egy viszonylag jól működő megoldásom, megpróbálom bemásolni a releváns részét:

Kód:
public static Applet App;
static HashMap<String, MyImage> Images = new HashMap<String, MyImage>();
int ID = 0, IDCounter = 0;

...

void Load(string name){
  MediaTracker tracker = new MediaTracker(App);
  URL url = MainAppletClass.class.getResource("/Pictures/"+name);
  Image im = App.getToolkit().getImage(url);
  ID = IDCounter++;
  tracker.addImage(im, ID);
  Images.put(name, this);

  tracker.waitForAll();
}


Az App változó értelem szerűen az applet objektumod, a MainAppletClass meg ennek a típusának a neve. Ezt én is a netről vadásztam, és nekem működött, persze a teljes kód kicsit nagyobb, meg összeszedetlenebb, de elvben ennyi a lényeg belőle.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #177281   2012.03.31 17:57 GMT+1 óra  
Van egy kis problémám, amit nem teljesen értek. Szeretném az egyik programomat Appletté átalakítani. Az összes art egy statikus HashMap-ban van tárolva.

Kód:
public static HashMap<String, BufferedImage[]> assets = new HashMap<String, BufferedImage[]>();


Betöltésnél pedig a következő zajlik (ami lényeges):
Kód:
tImage = (BufferedImage)jApplet.getImage(jApplet.getCodeBase(), "/assets/snow.png");


Az a baj, hogy ez elvágódik egy Exception-al, de annak az üzenete null, így esélyem sincs meghatározni, hogy mégis mit cseszek el.

A betöltő függvény az Applet konstruktorában hívódik meg.

   
zeller - Törzstag | 486 hsz       Online status #176751   2012.03.24 08:05 GMT+1 óra  
Van itt valaki aki nagyon brutal-metal-durvan ert az eclipse RCP-hez? Mert akkor van egy kerdesem...

   
nab - Tag | 30 hsz       Online status #171616   2011.12.30 14:59 GMT+1 óra  
Megint tanultam valamit, kösz az infot.

   
zeller - Törzstag | 486 hsz       Online status #171602   2011.12.30 00:00 GMT+1 óra  
A java7 mersekelt fejlodes volt. De ha jovo ev vegen kijon a 8 es tenyleg lesz benne lambda, akkor meg nincs minden elveszve.

   
Parallax - Tag | 603 hsz       Online status #171584   2011.12.29 21:00 GMT+1 óra  
Dehogynem fejlesztik, nemrég jött ki a C++11 szabvány. C++ future. Kb mindenki ezt tekinti standarnek. Nekem a Java tűnik állóvíznek, nem nagyon halad semerre.

Az OpenGL azért nehezebb elsőre, mert mindent úgy kell összevadászni hozzá. Nincs benne textúra betöltés, input kezelés, kizárólag grafikai API.

   
nab - Tag | 30 hsz       Online status #171578   2011.12.29 19:45 GMT+1 óra  
Közben megnéztem a JMonkeyt ez nagyon frankó, inkább ezzel fogok próbálkozni

   
nab - Tag | 30 hsz       Online status #171573   2011.12.29 18:43 GMT+1 óra  
Azért OpenGL mert ha jól tudom egyszerűbb, java pedig azért mert ahhoz értek a legjobban, a c++ nem sértésnek szánom de elég halott dolognak tűnik számomra. Illetve több dolog nem tetszik benne,pl: már nem fejlesztik. A javat igen. Nem sokkal gyorsabb már a c++ a java -nál, és mivel nem akarok komolyabb játékot írni nem látom értelmét DirectX -nek nekifutni, valószínűleg elég nagyot is koppannék a nekifutáson

   
Parallax - Tag | 603 hsz       Online status #171572   2011.12.29 18:25 GMT+1 óra  
Miért OpenGL és miért Java? De, ha már ez a kettő, akár egy engine is lehet, nem? JMonkey

   
nab - Tag | 30 hsz       Online status #171568   2011.12.29 17:33 GMT+1 óra  
Sziasztok!

Java -ban szeretnék kipróbálni az OpenGL -es játékfejlesztést. Csak egyszerűbb dolgokat. Megvan Nyisztor Károly mind a két könyve belenézegetem van már róla némi fogalmam hogyan működik a 3dés alkalmazás fejlesztés. Z-Buffer, Mátrixok stb. Azonban a példák DirectX ben íródtak. Tudna valaki ajánlani egy könyvet? Nyelv lehet Magyar Angol vagy Olaszul.

A java -ban nem vagyok Profi de nem hiszem, hogy problémát okozna maga a programozás technika. Inkább maga az OpenGl okozza a problémát. Annyira már nem értek hozzá hogy tudjam az Lwjgl menyire követi az OpenGl sytaxisát. Tehát valami általános könyvre lenne szükségem , elég sok van fent az interneten nekem egy Beginner szintű kéne.

Lwjgl szeretnék használni, néztem a jogl -t is de lwjg kicsit összeszedetebnek tűnik.

Tud valaki egy jó könyvet? (C++ ban nem merem elkezdeni, meg a Java -t már jobban ismerem)

   
ddbwo - Tag | 1654 hsz       Online status #171235   2011.12.23 10:59 GMT+1 óra  
TY!
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
zeller - Törzstag | 486 hsz       Online status #171232   2011.12.23 10:41 GMT+1 óra  
A hivatalos sun(oracle) tutorialokban minden benne van, a legfrissebb verziohoz. http://docs.oracle.com/javase/tutorial/

   
ddbwo - Tag | 1654 hsz       Online status #171227   2011.12.23 09:55 GMT+1 óra  
"Noob to Pro" mi kell Java programozáshoz?
Itt leginkább a legegyszerűbb és legkevesebb helyet foglaló programra, meg tutorial linkekre gondolnék.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
borsi - Tag | 180 hsz       Online status #171125   2011.12.21 19:46 GMT+1 óra  
És valóban Valószínűleg 5x el fogok majd akadni közben de azért nem tűnik vészesnek ez a java.

   
zeller - Törzstag | 486 hsz       Online status #171123   2011.12.21 19:18 GMT+1 óra  
a windowbuilderrel nem csak gwt-t lehet, swinget es swt-t is.

   
borsi - Tag | 180 hsz       Online status #171122   2011.12.21 18:54 GMT+1 óra  
Közben rájöttem, hogy a linkelt plugin az webes java alkalmazásokhoz van, úgyhogy úgy döntöttem, inkább kódból rakom össze a swing guit.

   
zeller - Törzstag | 486 hsz       Online status #171120   2011.12.21 18:12 GMT+1 óra  
Sztem ez igy jo. Erdemes ezeket hasznalni.

   
borsi - Tag | 180 hsz       Online status #171117   2011.12.21 17:45 GMT+1 óra  
Javaban kéne összeraknom egy platformfüggetlen progit, amivel egy sqlite adatbázist lehet módosítgatni. A gui-nak képesnek kéne lennie png-t megjeleníteni és az sem ártana, ha a program képes lenne könyvátart létrehozni illetve fájlokat másolni.
Mivel a javaval még abszolút nem foglalkoztam, a kérdés, hogy milyen fejlesztőkörnyezetet használjak hozzá, mivel csináljam a gui-t, és mennyire lesz a végtermék így platformfüggetlen.
Amit összegúgliztam, hogy az eclipse WindowBuilder pluginel egy jó választás lehet a gui-hoz, és sqlite-hoz is találtam egy java drivert (SQLiteJDBC). Ezekkel tényleg érdemes foglalkozni, vagy tudtok jobbat?

   
Sharp - Tag | 130 hsz       Online status #169200   2011.11.22 10:24 GMT+1 óra  
Van egy Listener/Dispatcher(mindegy minek nevezzük, ez bind()-el és listen()-el egy portot, és accept()-eli a bejövő kérelmeket) osztályod, ami fogadja a bejövő kapcsolatokat, és mindegyiket átadja egy külön szálnak.
Ez az osztály nyugodtan használható arra, hogy beolvasson a konzolról, miután elvégezte a hálózati teendőit. De rakhatod külön szálra is, a te döntésed.
Arra figyelj, hogy ha külön szálra rakod, akkor bonyolultabb a közös erőforrások módosítása.
És természetesen a konzolról való olvasás nem lehet blokkoló.

Tegyük fel, hogy van egy parancsod:
Kód:
set maxUser 10

Ami beállítja a maximális kliens számot 10-re. Mivel a konzolod másik szálban fut, mint a Dispatcher, ezért nem állíthatja át közvetlenül a Dispatchered maxUser változóját, hanem szinkronizálni kell a hozzáférést.

Minden kapcsolódó kliensnek egy szálat kiosztani a feldolgozáshoz egy nagyon jó ujjgyakorlat, de javaslom, ha elkészültél vele, lépj tovább.
Kezdetben minden usernek te magad allokálj egy szálat. Azután használj ThreadPoolExecutor-t. Ez a már nem használt szálakat újrahasznosítja, így jelentős erőforrásokat spórol meg neked (egy szál létrehozása drága mulatság).

Azután dobd el a többszálasított verziót, és használd a java nonblocking IO-ban levő Selector osztályt. Itt egy nagyon jó leírás hozzá: link
A Selector segítségével 1 szálban foglalkozhatsz több ezer klienssel. Sokkal hatékonyabb.

Aztán ha ezzel is megvagy, ezt is lehet még többszálasítani

A fent leírtakat csak akkor járd végig, ha tanulni, gyakorolni és nagyon hasznos tapasztalatokat szerezni szeretnél.
Ha van egy konkrét feladatod, határidővel stb, akkor, ahogy zeller is említette, használj meglévő libet: Mina, Netty stb.

   
zeller - Törzstag | 486 hsz       Online status #169001   2011.11.19 16:37 GMT+1 óra  
Hazudnek, ha azt mondanam, hogy teljesen ertheto a kerdesed (szamomra). A kozos eroforrasokat nem szalasitani kell, hanem megvedeni a konkurrens hozzaferestol, szinkronizalassal. Ez egy eleg hosszu tema, aminek nem art utanamenned, ha tobbszalu kornyezetben akarsz fejleszteni.

De szerintem nem szukseges feltalalnod a spanyolviaszt, kismillio ingyenes java alkalmazasszerver van a piacon, es biztos naluk kevesebbet tudo http szerver implementaciok is akadnak.

   
robee00 - Tag | 90 hsz       Online status #168999   2011.11.19 16:07 GMT+1 óra  
Sziasztok!

Olyan kérdésem lenne, hogy egy multiklienses java szervert kezdtem írni, melynek van egy grafikus parancssora, oda lehet bepötyögni bár parancsot. Na most, ehhez a szerverhez szeretnék csatlakozni másik programmal, persze többel is egyszerre. Ugye ha sockettel csatlakozok, akkor szálasítani kell a szervert, hogy egyszerre több klienssel is tudjon dolgozni. A kérdésem, hogy a "parancssort" is külön szálra kell rakni, hogy ne zavarjon be a dologba? Még új ez a szálasítás

   
zeller - Törzstag | 486 hsz       Online status #168843   2011.11.17 17:46 GMT+1 óra  
De lehet, csak ez kicsit bonyolutabb. Az altalad definialt enum tipus a java Enum osztaly egy gyerekeve fordul, ami annyit jelent, hogy az enum is egy osztaly, tehat mezoket deklaralhatsz neki.
A szabalyok, hogy a ctora mindig privat (vagy package) kell legyen es az osszes mezojet szettelnie kell.
Pl:
Kód:
enum Kolbasz {
GYULAI(1000), CSABAI(2000);
  int ar;
  private Kolbasz(int ar) {
    this.ar=ar;
  }
}


Olvasnivalo: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

   
kompabt - Tag | 27 hsz       Online status #168836   2011.11.17 16:25 GMT+1 óra  
sziasztok!

Java-ban az enum típushoz nem lehet egész értéket társítani, mint c++-ban?

   
Joderida - Tag | 55 hsz       Online status #168122   2011.11.06 18:48 GMT+1 óra  
Köszönöm a segítséget.
A kódírás amúgy a fejlesztés egyik folyamata csak. Először ronda, de működik a kód, majd később szebb és tökéletesebb lesz.
De át fogom nézni a Java konvenciót, már találtam is hozzá egy pdf-et .

   
Sharp - Tag | 130 hsz       Online status #168001   2011.11.05 09:19 GMT+1 óra  
Bemásoltál két kódrészletet: az egyik egy konstruktor, a másik pedig annak meghívása. Szerintem a baki ezeken a kódrészeken kívül történik.
Nem lehet, hogy a
Kód:
modell_vector.add(new Modell_part(modell_part_name, My_buffers, points, _nrOfIndices));

után módosítod a points objektumot? Szerintem ez volt a gondod. Egyszerűen módosítod azt az objektumot, amire hivatkozik az összes Modell_part objektumod. A buffer meg azért nem változik, mert azt vagy nem módosítod, vagy abból újat példányosítasz, és okosan, azt adod át a konstruktornak.

Javaslom ezt a helyzetet a konstruktorban kezeld le, ne annak meghívásán kívül. A konstruktorban másold le azokat az objektumokat, amiket kívülről kapsz meg, így az objektumod nem fog függeni semmilyen külső implementációtól.

A kódod amúgy ritka ronda, nem irigyellek .
Kód:
this.normalBuffer = My_buffers._normalBuffer;

Bármelyik Java programozó ránéz erre a sorra, kontextustól függetlenül, és azt mondja, hogy a My_buffers egy osztály, aminek a _normalBuffer egy statikus tagja. Aztán megnézi az argumentum listát, és mégsem így van...
Használd a Java konvenciót magad és mások érdekében. Nézz utána mi az.

Én is ArrayListet használok minden esetben, Vector a múlté, zeller nagyon jól kifejtette a főbb indokokat.

   
zeller - Törzstag | 486 hsz       Online status #167975   2011.11.04 17:34 GMT+1 óra  
Margora:
Attol meg, hogy egy kontener szalbiztos, a muveleteidet is azza kell tenni.
Az, hogy hogyan noveli egy kontener a meretet, hacsak nincsen a JLS-ben kobe vesve, akkor JDK(/JVM) implementacio fuggo.

   
Joderida - Tag | 55 hsz       Online status #167971   2011.11.04 17:00 GMT+1 óra  
Köszi Zeller a választ, valóban kicsit ködösítetten fogalmaztam meg a kérdésem, mert nem volt időm rá, de nem akartam növelni a változóim értékét, hanem mindig a modelljeim középpontját, vertexek pontját stb. akartam hozzáadni az aktuális modell részéhez, s a gondom az volt, hogy a legutoljára hozzáadott értéket kapta meg az összes modell rész. lásd lejjebb:

vektor(i) [20.0,20.0,20.0]
vektor(i+1) [20.0,20.0,20.0]
vektor(i+2) [20.0,20.0,20.0] //Az utoljára hozzáadott értékét veszi át a feljebb levő értékek

Itt az arraylist és a vector közötti külömbség amúgy:
http://www.javaworld.com/javaworld/javaqa/2001-06/03-qa-0622-vector.html

Nekem a Synchronization eleje és a Data growth vége győzött meg, hogy a vektort válasszam, de ki tudja lehet áttérek az arraylist/linked list/lehet sima tömböt fogok használni . Meglátjuk, minden esetre mégegyszer köszönöm a válaszod.

   
zeller - Törzstag | 486 hsz       Online status #167966   2011.11.04 15:29 GMT+1 óra  
Nem egeszen ertelek, de talan a problemadra tudom a valaszt.
A
Kód:
points = null;

olcsobban nullazza a referenciat.
Akarhanyszor uj elemet adsz a vektornak, egy uj objektum peldanyt dobj be neki.
Javaban minden objektum valtozo referencia tipusu (csak a primitiv tipusok tartalmaznak kozvetlenul erteket). Amikor egy objektumot argumentumkent adsz at, akkor a cimet tartalmazo valtozo masolatat adod at igazabol. (A parameteratadas mindig pass-by-value.)
Szoval ha az elozohoz kepest akarod megnovelni az objektum valtozoinak ertekeit, akkor eloszor masold le, majd a masolathoz add hozza a dolgokat es ezt tedd be a vektorba.
Ja es Vector helyett hasznalt ArrayListet, ha nem kell szalbiztos legyen az alkalmazas, mar ha eddig a Vector classra utaltal.

   
Joderida - Tag | 55 hsz       Online status #167934   2011.11.04 11:03 GMT+1 óra  
Problem Solved.
Az utolsó részemen elgondolkodtam, és kipróbáltam ezt:
Kód:
points = new Modell_points();

"Tehát megszüntetem a hivatkozást." Viszont még mindig érthetetlen számomra, hogy a Bufferek miért nem változtak meg. Ötlet?

ui.: Vagy ezen sorok után is "elveszti a refferenciát"? Hiszen magához az objektumhoz nem érek.
Kód:
ByteBuffer vbb = ByteBuffer
.allocateDirect(My_arrays._vertex_array.length * 4);
vbb.order(ByteOrder.nativeOrder());
My_buffers._vertexBuffer = vbb.asFloatBuffer();


Ezt azért jó lenne kideríteni, remélem valaki ezt meg tudja magyarázni. Köszönöm.

Ezt a hozzászólást Joderida módosította (2011.11.04 11:51 GMT+1 óra, ---)

   
Joderida - Tag | 55 hsz       Online status #167933   2011.11.04 11:03 GMT+1 óra  
Sziasztok!
Megakadtam egy Androidos játék fejlesztése során, röviden egy vektorban tárolom az objektumom részeit-egy-két adatot róla.
Ezt hívom meg:
Kód:
modell_vector.add(new Modell_part(modell_part_name, My_buffers, points, _nrOfIndices));

És itt a kód amivel gondom van:
Kód:
public Modell_part(String modell_part_name,
Loader_buffer_class My_buffers, Modell_points points,
int _nrOfIndices) {
this.modell_part_name = modell_part_name;
this.indexBuffer = My_buffers._indexBuffer;
this.normalBuffer = My_buffers._normalBuffer;
this.texturBuffer = My_buffers._texturBuffer;
this.vertexBuffer = My_buffers._vertexBuffer;
this.mshiarray = My_buffers._mshiarray;
this.mambarray = My_buffers._mambarray;
this.mdiffarray = My_buffers._mdiffarray;
this.mspecarray = My_buffers._mspecarray;
this._modell_part_center_point = points._modell_center_point;
this._modell_part_left_point = points._modell_left_point;
this._modell_part_right_point = points._modell_right_point;
this._modell_part_top_point = points._modell_top_point;
this._modell_part_bottom_point = points._modell_bottom_point;
this._modell_part_front_point = points._modell_front_point;
this._modell_part_back_point = points._modell_back_point;
this.nrOfIndices = _nrOfIndices;


(A points,My_buffers azok objektumok)
Mint lehet látni tárolom a vertexeket, indexeket, normálokat, textúra koordinátákat, a nevét a modellnek, és amivel gondom van a "nevezetes pontjait", amit egy algoritmussal számolok ki.

A problémám az az lenne, hogy, ha a modellem több részből áll, akkor fellülíródnak ezek a pontok, de a bufferek azok megmaradnak. Számomra érthetetlen módon, mivel mindegyiket egyformán kezelem, csak az a külömbség, hogy az egyik Buffer típusú a másik meg (egy dimenziós) tömb.
pl.:
Tehát, ha a vektor(i) modell résznek [0.0,0.0,0.0]-k voltak középpontjának a koordinátái, akkor a következő modell rész betöltése a vetkorba felülírja azt(vektor)(i+1)-nek adom a [10.0,10.0,10.0]-t:
vektor(i+1) modell rész [10.0,10.0,10.0]
(vissza nézve az i. elemet)
vektor(i) modell rész [10.0,10.0,10.0]

Ha ismét hozzáadok egy elemet pl.: [20.0,20.0,20.0]
akkor így alakulnak:
vektor(i) [20.0,20.0,20.0]
vektor(i+1) [20.0,20.0,20.0]
vektor(i+2) [20.0,20.0,20.0]
és így tovább...

Viszont a Buffereket nem írja fellül.
Lehet már én nem látom a fát az erdő miatt, remélem tudtok segíteni, köszönöm előre is.

/*ui.: Szerintem a gondom az lenne, hogy mivel elviekben objektumot adok át a tárolásra, így hát refferencia szerinti átadás történik valamiért ez nem hat ki a Bufferekre, annál inkább kihat a tömbökre, hogy lehetne megoldani, hogy ne egyesével adjam át a tömböket, de mégis a konstruktor tárolni tudja azokat. */

Ezt a hozzászólást Joderida módosította (2011.11.04 11:23 GMT+1 óra, ---)

   
zeller - Törzstag | 486 hsz       Online status #167396   2011.10.25 11:43 GMT+1 óra  
Ok, igazad van, csak szorszalat akarok hasogatni. Vegulis a Method is egy osztaly, amely rendelkezik a szukseges fuggvennyel...

----
Ja, par hettel ezelott hulyeseget irtam a szerializacioval kapcsolatban. Nem a defaultRead/WriteObjectet kell implementalni, hanem a read/writeObjectet...

----

Update:
java7ben van fp:
http://www.baptiste-wicht.com/2010/04/java-7-more-dynamics

Ezt a hozzászólást zeller módosította (2011.10.26 10:12 GMT+1 óra, ---)

   
Sharp - Tag | 130 hsz       Online status #167395   2011.10.25 11:27 GMT+1 óra  
Akkor hagyd el a finalt Amióta Scalazom, mindenhova odateszem, ha nincs ok az ellenkezőjére.

A függvénypointer egy ptr, ami függvényre mutat. Ilyen explicite nincs Javaban. De van referenciád, ami mutathat egy objektumra, ami rendelkezik a neked szükséges függvénnyel. Nem látok különbséget.

   
zeller - Törzstag | 486 hsz       Online status #167393   2011.10.25 10:26 GMT+1 óra  
Hat azert en erre nem mondanam, hogy fp. Ez a strategia minta.
Egyebkent ha finalra deklaraltad a referenciat, akkor nem veszik el a dinamikussag? (Azaz nem lehet a referenciat egy masik osztalyra allitani).

Ha szigoruan nezve a nyelvi lehetosegeket nezzuk a Methoddal jarsz a legkozelebb, csak a reflection miatt a sebesseg csokken, a tipusbiztossag bukik es egy csomo exceptiont le kell kezelni.

   
Sharp - Tag | 130 hsz       Online status #167389   2011.10.25 08:31 GMT+1 óra  
Nem tudom biztosra mit szeretnél, de vannak Javaban "függvénypointerek".

Kód:
interface Func {
  void apply();
}

class MenuPoint {
   private final Func myFuncPointer;
   MenuPoint( Func func ) { myFuncPointer = func; }
}

class Valami implements Func {
@Override public void apply() {/**valami implementáció*/}
}
..
MenuPoint mp = ....
mp.myFuncPointer.apply();


Tömörebb kódot kapsz, ha anonymous inner classokat használsz.

Kód:
MenuPoint  mp = new MenuPoint( new Func() {
  @Override public void apply() {/**valami*/}
});

   
zeller - Törzstag | 486 hsz       Online status #167388   2011.10.25 07:04 GMT+1 óra  
Szinte semmi, ez sztem az egyik legnagyobb hianyossaga a nyelvnek. A Reflection API Method osztalyat nezd meg.
A vezerelt menut esetleg command patternnel is megoldhatod delegate nelkul is.

   
kompabt - Tag | 27 hsz       Online status #167384   2011.10.25 00:28 GMT+1 óra  
sziasztok!

Java-ban mi a függvénypointer (c++) megfelelője? (Ilyen vezérelt menüt akarok írni.)

   
Sharp - Tag | 130 hsz       Online status #165985   2011.10.03 08:29 GMT+1 óra  
Egy objektum tudja magát serializálni.
Az lesz a gond szerintem, hogy az adott osztály tartalmaz olyan fieldet, ami nem implementálja a Serializable-t.

Kód:
class A implements Serializable {
   B b;
   C c;
}


Ebben az esetben NotSerializableException-t kapsz, ha B vagy C osztályok nem Serializálhatóak. A transient módosító megoldja a problémát, de akkor deserializációkor a te felelősséged lesz az adott fieldnek megfelelő érték megadása.

   
zeller - Törzstag | 486 hsz       Online status #165855   2011.10.02 06:49 GMT+1 óra  
Nem egeszen ertelek...
Ha felul akarod irni a default szerializalast, akkor a defaultWriteObject() ill a defaultReadObject() metodusokat kell megirnod az osztalyon. (Ezen felul adj meg egy serialversion UID-t, hogy a kompatibilitassal ne legyen majd bajod). A Serializable interface-t implementaltad? Mi a pontos stacktrace es a cause?
A szerializalas vezenylesere mindenkeppen hasznalj egy kulso osztalyt, bar elvileg nem lehetne gond, hogy sajat magan legyen az objektum kiirasa.

   
kompabt - Tag | 27 hsz       Online status #165843   2011.10.01 21:38 GMT+1 óra  
Sziasztok!

Megint lenne egy rövid kérdésem:

Egy objektum tudja önmagát szerializálni?

Tehát az osztályban lehet egy save() metódus, ami önmagát (this) leszerializálja, vagy ez hülyeség? (Én így implementálva a dolgokat java.io.NotSerializableException hibát kapok, és azt sejtem, hogy ezen okból.)
Ha ez így nem jó, akkor csináljak az adott osztályhoz egy serializer osztályt, és ott implementáljam a save metódust?

   
kompabt - Tag | 27 hsz       Online status #165261   2011.09.25 14:10 GMT+1 óra  
kösz srácok!

   
zeller - Törzstag | 486 hsz       Online status #165234   2011.09.25 11:45 GMT+1 óra  
Valoban...
Kód:
fr.value = new File();

kell.
Vagy set kellett volna az f = new file utan. Mindig ezek az lvaluek...

   
M4 - Tag | 187 hsz       Online status #165231   2011.09.25 11:26 GMT+1 óra  
Ez nem csinál semmit, először nullra állítod valuet, aztán létrehozol egy lokális File-t, amire nem lesz a setFile után hivatkozás.

Szerintem erre gondolt
Kód:
public class FileWrapper{
  File file;
}

setFile(FileWrapper fw){
  fw.file = new File(..);
}

   
zeller - Törzstag | 486 hsz       Online status #165209   2011.09.25 07:11 GMT+1 óra  
Javaban csak ertek szerint lehet parametert megadni.
Annyit csinalhatsz, hogy csinalsz egy refarg osztalyt es azt passzolgatod. Igy:
Kód:
class RefArg<T> {
       T value;
       RefArg(T val) {value = val;}
       T get() { return value;}
}
public void setFile(RefArg<File> fr ){
   File f = fr.get(); //jabvaban ugye metodushivas nem lehet lvalue...
   f = new File("newFile");
}

Es ekkor
Kód:
File f = null;
RefArg<File> fr = new RefArg<File>(f);
setFile(fr);


Vagy csak egyszeruen a metodus visszaadja a file-t. Egyebkent, ha a setFile metodusod tenyleg csak ennyit takar, akkor elgondolkozhatnal rajta, hogy nem sok ertelme van, inlinekent jobb megirni. (Persza, ha mas is van benne, akkor nyilvan nem feltetlenul)

Ezt a hozzászólást zeller módosította (2011.09.25 07:31 GMT+1 óra, ---)

   
kompabt - Tag | 27 hsz       Online status #165199   2011.09.24 23:54 GMT+1 óra  
Sziasztok!

Bocs a nagyon kezdő kérdésért, de fontos lenne.
Szóval hogy lehet java-ban referencia szerint átadni referenciát?
Azt akarom, hogy ha kívülről meghívom a setFile függvényt, akkor változtassa meg a File értékét.

Kód:
public void setFile( File f ){
   f = new File("newFile");
}


Ez így ugye rossz, mert az eredeti referencia lemásolódik, és a másolat fog megváltozni, nem az eredeti.

   
zeller - Törzstag | 486 hsz       Online status #164668   2011.09.20 20:17 GMT+1 óra  
Nested static osztalyok?
Elvileg semmi kulonos. Kulon class fileba fordulnak es direktben elerhetoek a nevukkel.

pl
Kód:
class Feri {
static class Lorant {}
}
...
//egyenertekuek
Lorant l = new Lorant();
Feri.Lorant fl = new Feri.Lorant();


Ez volt a kerdes?

   
DMG - Szerkesztő | 3172 hsz       Online status #164660   2011.09.20 19:59 GMT+1 óra  
Idézet
LugaidVandroiy :
Idézet
DMG :
Köszi!


Sikerült?



Majd fog. Egyenlőre nem tartok ott, mert bele kell tolnom a 1.x-es támogatás, elvben ma megvagyok vele, aztán küldök egy csomagot.

Csak azt nem tudom, hogy ha JAR file-ba tolom az egész engine-t akkor a static osztályokkal hogy boldogul utána az ezt felhasználó project?
-----------------------------------------
Dont Listen to the Naysayers
   
Frissebbek | Korábbi postok
[1] [2] [3] > 4 < [5] [6] [7] [8] [9]