- Bemutatkozott a Moto G32 4G
- Nothing Phone 2a - semmi nem drága
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Poco X6 Pro - ötös alá
- Véroxigénszintet is mér a Honor Band 5
- Vodafone-ra áttért Digi Mobilosok
- Google szolgáltatás (GMS) Huawei telefonokra
- Alcor e-Pad - van még remény
- Ennyibe kerülnek a Huawei Pura modellek Európában
- Telekom mobilszolgáltatások
Hirdetés
-
Mindent megtudtunk az új Nokia 3210-ről
ma Részletes képek, specifikációk és euróban megadott ár is van a legendás modell újraélesztett verziójához.
-
A franciáknak elege van abból, hogy minden gyerek mobilozik
it Vissza akarják szorítani a gyerekek és tinédzserek közösségi média- és okostelefon-használatát.
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
Új hozzászólás Aktív témák
-
negyedes
addikt
Nem tudok rajonni hogy ez a kod miert nem torli az adott record-ot:
mDb.delete(SQLITE_TABLE_PROFILE, KEY_PROFILE_NAME + " = ? ", new String[] {profileName});
Három dolog biztos az életben: az adó, a halál és az adatvesztés. - Baráth Gábor
-
WonderCSabo
félisten
válasz negyedes #1051 üzenetére
Hmm, lehet, hogy fáradt vagyok, de nekem ez most korrektnek tűnik. Ellenőrizd le, hogy jó táblából jó kulcsal akarsz-e törölni, és helyes értéket adsz-e át. A fv. visszatérési értékét nézted? Visszaadja, hogy hány sort törölt ki.
Az is megkönnyítené, ha egy SQLite manager progival megnyitod a db-det, és úgy ellenőrized le, hogy biztos az van-e benne, amit Te gondolsz. Ha internal storageban van a db, akkor ehhez persze először ki kell másolni externalra.[ Szerkesztve ]
-
trisztan94
őstag
Hogy tudom azt nézni inputhandler-ben, hogy a textúrára érkezett-e a drag event?
public boolean touchDragged(int screenX, int screenY, int pointer) {
if(Gdx.input.isTouched()){
Vector3 touchPos = new Vector3();
touchPos.set(Gdx.input.getX(), Gdx.input.getY()*(-1), 0);
karika.setPosition(new Vector2(touchPos.x - 106 / 2, touchPos.y + 238*2));
}
}
return true;
}Így ugye mindig a drag helyére ugrik a textúrám, de én azt szeretném, hogy csak akkor történjen meg a drag, ha a textúrát húzza.. értitek
https://heureka-kreativ.hu
-
PandaMonium
őstag
válasz trisztan94 #1053 üzenetére
Mondjuk leellenőrzöd, hogy a touchPos a textúrád koordinátáin belül van-e.
Így ni:
Vector3 touchPos = new Vector3();
touchPos.set(Gdx.input.getX(), Gdx.input.getY()*(-1), 0);
if(touchPos.x > karika.x && touchPos.x < (karika.x+karika.width) && touchPos.y < karika.y && touchPos.y > (karika.y-karika.height)){
karika.setPosition(new Vector2(touchPos.x - 106 / 2, touchPos.y + 238*2));
}
Amit az if-en belül írtam ott nem vagyok benne biztos, hogy léteznek azok a paraméterek olyan formában ahogy írtam őket, de elég logikus a dolog: A karika.x a karika x koordinátája, a karika.y az y koordinátája a karika.width a karika textúrájának szélessége, a karika.height a karika textúrájának magassága.
Elsőre bonyolultnak tűnhet ez a sor de rajzold le magadnak otthon a feltételeket egy papírra, (vizuálisan mindent sokkal könnyebb megérteni) és te is rájössz, hogy pofon egyszerű az egész.
Ja és igen, a feltételben a "touchPos.y < karika.y && touchPos.y > (karika.y-karika.height)" rész csak akkor működik ha felfelé növekvő, lefelé csökkenő koordináta rendszert használsz, máskülönben: "touchPos.y > karika.y && touchPos.y < (karika.y+karika.height)" a nyerő (ugyan az, csak fordítva).
Elég reggel van még, de ha nem írtam el semmit akkor működnie kell így.[ Szerkesztve ]
What I cannot create, I do not understand
-
negyedes
addikt
egy simpleadapteres listat hogy tudok frissiteni ha pl kitoroltem egy elemet?
Három dolog biztos az életben: az adó, a halál és az adatvesztés. - Baráth Gábor
-
-
negyedes
addikt
Nem dehogy, most atirtam normalisan es nem ker cast-ot de most sem frissiti fel a listat.
igy hasznalom:
public void onDelete(String sender, String Date, String subject) {
dbHelper.deleteOutbox(sender, Date, subject);
adapter.notifyDataSetChanged();
}[ Szerkesztve ]
Három dolog biztos az életben: az adó, a halál és az adatvesztés. - Baráth Gábor
-
Karma
félisten
válasz negyedes #1062 üzenetére
A SimpleAdapternek van egy List<Map<...,...>>-je, amibe az adatokat rakod. Ez a lista magától nem fog frissülni, a DB mellett abból is ki kéne venni a sort a notify hívás előtt.
És átgondolni, hogy miért fából csinálsz vaskarikát.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz negyedes #1064 üzenetére
Hát, ennyi kód ismeretében csak általánosan megy...
Amikor az adaptert létrehoztad, egy listát adtál neki data gyanánt. Ezt a listát tedd el tagváltozóba, és használd a remove metódusainak egyikét a törlendő elemmel vagy annak indexével.
Mivel ilyen naivan sikerült az adaptert megcsinálni, először meg kell keresned egy ciklussal a helyes indexet...
Erősen javaslom, hogy nézd meg a SimpleCursorAdaptert a kézzel varázslás helyett. Csak több munkát keversz magadnak...
[ Szerkesztve ]
“All nothings are not equal.”
-
WonderCSabo
félisten
válasz negyedes #1055 üzenetére
Attol, hogy egy parameter null, egyaltalan nem kovetkezik az, hogy a meghivott fv nullpointert is fog dobni miatta. Nezd meg a javadocot es/vagy forrast, es meglatod mi tortenik a fv-ben.
Az Adapteres temara: nem rossz a SimpleCursorAdapter, en is arra szavazok. Egyebkent azert nem a kedvencem. Ha nem nagyon sok vagy nagyon nagy objektumaiad vannak, sztem nyugodtan huzd be memoriaba, es egy ArrayAdaptert csinalj. mivel ugyis listat kezelsz.
-
trisztan94
őstag
válasz PandaMonium #1054 üzenetére
Elfelejtettem válaszolni, bocsi
Köszönöm szépen, pont erre volt szükségem, meg is oldottam vele.
https://heureka-kreativ.hu
-
WonderCSabo
félisten
Valaki járt már el hasonlóan? Vagy valami mást használt ORM-hez?
Hogy rögzítve legyen a válasz erre a kérdésre:
Kettő libet próbáltam ki. Az egyik az ActiveAndroid. Ez lightweight, egyszerű, csak 16KB, és egyszerű, letisztult API-ja van. Hátránya az, hogy customizálni szinte egyáltalán nem lehet, csak a saját magának létrehozott táblákkal képes dolgozni, és viszonylag egyszerű lekérdezésekkel, amit a query builderével lehet írni.
A másik lib az ORMLite. Ez picit bonyolultabb, és picit többet kódot kell ahhoz írni, hogy az egyszerű példákat is megcsináld. Cserébe teljesen customizálható, azt a db-t használja amit Te megadsz neki, bármilyen queryt lehet írni, és sokkal több funkciója van, mint az előzőnek. Sajnos mindennek ára van, majdnem 300KB a lib. Illetve van még egy nagy előnye is, nem csak Android SQLite backendje van, hanem MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB, és sima Sqlite. Így a megírt adatbázisos kód könnyen portolható más platformra.
-
trisztan94
őstag
Mennyire lehetséges jó minőségű, gyors alkalmazásokat készíteni Cordovával és /vagy PhoneGap-pel? Mivel én alapból webes területen dolgozom, nagyon megkönnyítené a dolgom a html-css-js használata mobil alkalmazásokban, csak az a kérdés, hogy mennyire életszerű a dolog... van valakinek tapasztalata velük? Esetleg egy pro-con összefoglalás ez és a natív (java) alkalmazások között?
Mennyire jó szempont a cross-platform ?
https://heureka-kreativ.hu
-
sutszi
veterán
válasz trisztan94 #1070 üzenetére
Én csak így a partvonalról...
Firefox OS most elvileg pont a webes világgal próbálkozik...annyira nem eredményes...eddig.
Nemrég webes platformról natívra tettek át appokat...most csak a facebook jut eszembe...de volt más is.
Az a pletyka, hogy annyira nem gyors mint kéne...és annyira nem tudnak nagy dolgokat csinálni mint natíva...Ezt csak hallottam...
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
Deck
titán
Sziasztok!
Szeretném a SystemUI-t úgy módosítani, hogy ne legyen áttetsző alapból a statusbar és a navigation bar hanem fekete legyen. Mivel a gyári launchernél mindig áttetsző lesz. Vagy inkább a launchert szerkesszem? Mivel másik launchernél marad fekete.
Tehát mit keressek a kibontott SystemUI.apk-ban?
PS5
-
negyedes
addikt
megitn egy adatbazisos kerdesem lenne:
felkapcsolodok imap-al a google szervere, println-el kiiratom az uzeneteket, de mikor be szeretnem tenni az adatbazisba nullpointerexception dob.
ez az insert:
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_SENDER, sender);
initialValues.put(KEY_RECEIVER, receiver);
initialValues.put(KEY_SUBJECT, subject);
initialValues.put(KEY_DATE, date);
initialValues.put(KEY_TEXT, text);
initialValues.put(KEY_ATTACH, attach);
initialValues.put(KEY_IMPORT, ipm);
mDb.insert(SQLITE_TABLE_INBOX, null, initialValues);es ez amit meghivok miutan kiolvastam a leveleket az inboxbol:
dbHelper.newEmail(senderAddress, "nincs", subject, date, textMessage, "nincs", "nincs" );ha en manualisan, idezojelekben adom meg akkor mukodik, de csak a main activityben, ha a fogadas classban adom meg mar nem megy.
kiirattam minden valtozot meg az insert elott es atadja hivaskor az ertekeke, szoval nem tesz null-t sehova
[ Szerkesztve ]
Három dolog biztos az életben: az adó, a halál és az adatvesztés. - Baráth Gábor
-
caindwan
tag
akkor ha 3D-vel szeretnék dolgozni már csak az Unity maradt?
-
PandaMonium
őstag
válasz caindwan #1077 üzenetére
A libgdx miért nem jó? Nyilvánvalóan egyszerűbb Unity-vel grafikus felületen dolgozni de abból kb. annyit is tanulsz (semennyit). Ha szereted a kihívásokat írj magadnak engine-t, nem olyan bonyolult és legalább tutira tudod mi van benne.
What I cannot create, I do not understand
-
Karma
félisten
válasz PandaMonium #1078 üzenetére
Azért ez a "semmit se tanul" kijelentés igen erős, tekintve hogy a Unity milyen népszerű és erős. Programozni azzal is kell .
Ha pénz van a dologban, és be van tervezve a licencköltség, akkor mindenképp a Unity. Ilyen esetben saját engine-t írni öngyilkosság; de legalábbis nagyon sötét megrendelőre utal ha belemegy.
Hobbiismerkedésnél persze más a helyzet.
“All nothings are not equal.”
-
trisztan94
őstag
Sziasztok!
libgdx-el és box2d-val kapcsolatban lenne egy kérdésem.
Hogy tudok egy Body-nak adni egy saját "nevet"?
Jelenleg így van beállítva egy body nekem:
groundDef = new BodyDef();
groundDef.type = BodyType.StaticBody;
groundDef.position.set(new Vector2(0, 0));
groundBody = world.createBody(groundDef);
groundShape = new PolygonShape();
groundShape.setAsBox(800, 10);
groundFixture = new FixtureDef();
groundFixture.shape = groundShape;
groundFixture.density = 1f;
groundFixture.friction = 1f;
groundFixture.restitution = 0f;
groundFixture.filter.categoryBits = CATEGORY_GROUND;
groundFixture.filter.maskBits = MASK_GROUND;
groundBody.createFixture(groundFixture);
groundBody.setUserData("ground");A legutolsó sorban hozzáadtam a userData-hoz a "ground" nevet, de mintha nem is lenne ott.
Ilyen a contact listenerem:
@Override
public void beginContact(Contact contact) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
Gdx.app.log("beginContact", "between " + fixtureA.toString() + " and " + fixtureB.toString());
}
...Amikor két body ütközik, akkor kiír egy baromi hosszú kódot arra, hogy melyik két body ütközött:
beginContact: between com.badlogic.gdx.physics.box2d.Fixture@69dbb4d1 and com.badlogic.gdx.physics.box2d.Fixture@573c3ba2
[ Szerkesztve ]
https://heureka-kreativ.hu
-
PandaMonium
őstag
Persze, hogy kell, csak nem "android módon", de még csak nem is Java-ban (nem is elérhető benne csak Javascript, C# meg mittudoménmicsoda). Én is csak ismerkedés céljából javasoltam a saját engine-t, ha határidős meló van és még nincs motor az app alá akkor nehogy most kezdj el írni hozzá. Egyébként nem olyan óriási dolog saját engine-t írni, én is épp azon vagyok (bár én desktopra, de szintén OpenGL-el és Java-val) de az tény, hogy kell hozzá kitartás és sokat kell olvasni szakmai könyveket. Akárhogy is, szerintem ha csak magának csinálja akkor ha összerak egy bármilyen alap enginet ami már képes meghajtani egy szimpla játékot abból sokkal többet tanul mint ha Unity-vel C#-ban firkál egy előre írt, agyonegyszerűsített API-ban.
What I cannot create, I do not understand
-
fatal`
titán
válasz trisztan94 #1080 üzenetére
(String)fixtureA.getBody().getUserData()
és
(String)fixtureB.getBody().getUserData()A fixture.toString() egész mást ad vissza
[ Szerkesztve ]
-
trisztan94
őstag
Nagyon szépen köszönöm!
Arra esetleg valami egyszerű megoldás, hogy két specifikus body között történt-e ütközés?
Most úgy csinálnám, hogy:
if(fixtureA == "valami" && fixtureB == "masik" || fixtureA == "masik" && fixtureB == "valami"){
//do
}Tehát ugye fordítva is meg kell néznem. Mondjuk ez nem olyan nagy dolog, de ha mégis van rá valami egyszerű megoldás, akkor azt használnám (libgdx box2d dokumentációja sajnos nagyon sok helyen "coming soon" )
https://heureka-kreativ.hu
-
fatal`
titán
válasz trisztan94 #1083 üzenetére
Nézz körül az andengine fórumon, a box2d ugyanaz.
Ne fixturet hasonlíts, hanem bodyt (fixture.getBody()) és/vagy userDatat.
-
trisztan94
őstag
válasz trisztan94 #1083 üzenetére
Szerk: (#1084) hunfatal: Köszönöm, megnézem majd
Még egy dolgot kérdeznék
A collision detection eddig így volt megoldva:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
if (raindrop.y + 64 < 0) {
dropped++;
iter.remove();
}
if (raindrop.overlaps(bucket)) {
dropSound.play();
catched++;
iter.remove();
}
}Amikor összeér a vödör és a csepp, akkor nagyon szépen eltűnt a csepp és lejátszotta a hangot.
Ez amúgy a libgdx "Simple app" tutorialján alapszik, csak átalakítanám box2d-re (gravitáció, "szél" [x tengelyen gravitáció], box2dlight, stbstb miatt)Tehát beraktam ez helyett a box2d-s collision detection-t. így:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
world.setContactListener(new ContactListener() {
@Override
public void beginContact(Contact contact) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
if ((String) fixtureA.getBody().getUserData() == "bucket" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "bucket") {
//csepp és vödör ütközik
dropSound.play();
catched++;
iter.remove();
}
if ((String) fixtureA.getBody().getUserData() == "ground" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "ground") {
//csepp és föld ütközik
dropped++;
iter.remove();
}
}
@Override
public void endContact(Contact contact) {}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {
// TODO Auto-generated method stub
}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}
});
}Viszont az iter.remove()-ra ezt a hibát dobja:
"Cannot refer to a non-final variable iter inside an inner class defined in a different method"
Ráraktam az iterátorra a "final" modifikációt, akkor nem hibázik, de amikor valami ütközik (csepp - talaj, csepp - vödör), akkor nem az tűnik el amelyik ütközött, hanem egy tök random.
Értitek, hogy mit magyarázok? Tudok készíteni egy videót a dologról, ha kell.
Köszönöm szépen előre is a segítséget!
[ Szerkesztve ]
https://heureka-kreativ.hu
-
fatal`
titán
válasz trisztan94 #1085 üzenetére
Ilyen esetben példányszintű változót használj és osztálynév.this.változónévként hivatkozz rá.
Viszont nem itt. Contactlistenerben ne törölj physicsworld elemet, mert több, egyszeri ütközés elején crashelni fog az app.
Egy másik osztályban állítsd be valamilyen flaggel, hogy melyik bodyt akarod törölni és a következő libgdx update ciklusban töröld ki a bodyt és állítsd vissza a flaget (hogy a következő updatenél ne próbálja meg törölni megint).
-
trisztan94
őstag
Van egy sprite-om ami 300px széles, és ki kellene tölteni egy 800px széles window-t. Hogy lehet ezt a legkönnyebben megoldani?
Én így oldottam meg, de szerintem ez így baromi teljesítmény zabáló (folyton változtatgatni a sprite helyzetét..)
Render() metódus [libgdx]: (A create() metódusban van megadva az alap pozíciója, ami 0,-5)
batch.begin();
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(280, -5);
grassSprite2.setPosition(280, -5);
grassSprite3.setPosition(280, -5);
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(570, -5);
grassSprite2.setPosition(570, -5);
grassSprite3.setPosition(570, -5);
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(0, -5);
grassSprite2.setPosition(0, -5);
grassSprite3.setPosition(0, -5);
batch.end();Azért van 3 grassSprite, mert három különböző "layer"-en vannak. Innen csórtam.
Szerk: ha széthúzom a sprite-okat 800px szélesre akkor sajna nagyon romlik a minőségük, ezért kell ez a "duplikálás" (mi erre a helyes magyar szó? )
Más (hunfatal) :
Úgy oldottam meg végül az ütközés utáni body törlést, hogy létre hoztam egy array-t (deleteBodies), oda hozzáadtam a contactlistenerben a body-t amit törölni kell (A fixture-ökből szedtem ki a getBody() fgv-el), majd a render metódus elején (tehát a contactlisteneren kívül) töröltem. Így nincs külön osztályban, de működik.
Mit gondol(tok)sz? jó lesz így?
kaud:
ContactListenerben:dropDeletionList.add(fixtureA.getBody());
A render metódus elején:
if(dropDeletionList.size > 0){
Iterator<Body> iter2 = dropDeletionList.iterator();
Iterator<Body> iter = raindrops.iterator();
while (iter2.hasNext()){
Body dropToDel = iter2.next();
while(iter.hasNext()){
Body drop = iter.next();
if(drop.equals(dropToDel)){
iter.remove();
world.destroyBody(dropToDel);
}
}
}
dropDeletionList.clear();
}A raindrops array iterátora azért kell, hogy ne csak a body-t törölje ki, hanem a hozzá tartozó textúrát is.
[ Szerkesztve ]
https://heureka-kreativ.hu
-
szabi__memo
nagyúr
Sziasztok!
Van valami lehetőség fizetős appot feltölteni marketre (akár más is lehet, nem csak a play)?
Válaszokat akár magánba is küldhetitek.
Köszönöm -
trisztan94
őstag
válasz szabi__memo #1089 üzenetére
Szia!
Hogy érted azt, hogy van-e rá lehetőség?Befizeted a $25-ös developer költséget a Google-nek és onnantól kezdve fel tudsz rakni akármit: fizetőset, micro fizetéseset, reklámosat.. (Persze előbb elbírálják az appod, de mostanában kb. mindent engednek )
https://heureka-kreativ.hu
-
fatal`
titán
válasz trisztan94 #1090 üzenetére
Nem éppen. Magyarországról nem lehet fizetős appot feltenni, mert nem tudsz merchant accot regisztrálni.
-
fatal`
titán
válasz trisztan94 #1093 üzenetére
Ha kifizeted neki az adót, akkor biztos működhet. Mert adószámot kér.
-
szabi__memo
nagyúr
Komolyan mondom hihetetlen, hogy nincs semmi legális korrekt lehetőség. Döbbenet.
-
WonderCSabo
félisten
válasz szabi__memo #1095 üzenetére
Magyarország kis ország, kevés fejlesztővel, így rohadtul nem érdekli a Googlet.
-
szabi__memo
nagyúr
válasz WonderCSabo #1096 üzenetére
Nem a google-t nem erdekli, hanem senkit. Es nem csak nalunk van ez hanem orszagok tucatjaiban. Es nincs fizetos ceg aki piacot nyujtana. Ne ez a dobbenet.
-
fatal`
titán
válasz szabi__memo #1092 üzenetére
Amazont nézd meg esetleg, de szerintem ott sem lehet.
-
Neck
veterán
Mennyire "kezdő" ez a topic? Mert - habár programozó vagyok - most szeretnék nekiállni az Androiddal bohóckodni, azaz én eléggé kezdő leszek. Jöhetek ide a hülyeségeimmel?
[ Szerkesztve ]
An α beta user... "A pokol szerintem egy végtelen IKEA áruház, az örökkévalóságig bolyonganak a kárhozott lelkek a Boysenbar alátétek és az Almaröd tükrök közt"
Új hozzászólás Aktív témák
- World of Tanks - MMO
- Otthoni hálózat és internet megosztás
- Ukrajnai háború
- Stellar Blade
- AMD off topik: VGA, CPU, APU és minden, ami AMD
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Így építsd a billentyűzeted!
- Linux felhasználók OFF topikja
- Bemutatkozott a Moto G32 4G
- Luck Dragon: MárkaLánc
- További aktív témák...
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen