- A nagy Triple Channel Tesz: Hogyan lett egy hibás 24GB-os Kitből 1 "Tökéletes"
- XIAOMI Smart Air Purifier 4 Compact EU - légtisztító újabb okoseszköz a lakásban
- Optikai szál nem kell félnetek jó lesz, avagy a damil alapú hálózat
- A PC-m több mint 1 évtizedes története - AMD FX OC, 64GB RAM, ipari SSD - 1.rész
- Agglegénykonyha 15 – Néhány tavaszias recept
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- MasterDeeJay: Legolcsóbb "x99" gép építése. (folyamatban)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- gban: Ingyen kellene, de tegnapra
- Luck Dragon: MárkaLánc
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- MasterDeeJay: Low budget (50.000 forint) light gémer gép összerakása
- lezso6: Szekunder szarkazmus
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-02-25 10:20 Téma összefoglaló
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
disy68
aktív tag
mindegy honnan használod, adj meg relatív útvonalat (a font-face-ben megadott útvonal az adott css fájlhoz képest lesz relatív)
-
sztanozs
veterán
mivel fogalmam sincs, hogy a javascriptes programod mit csinál, vagy mit hogyan jelenít meg, így sok fogalmam nincs arról, hogy mit tud csinálni a saját gépeden.
-
sztanozs
veterán
-
sztanozs
veterán
Sziasztok!
Az volna a kérdésem, hogy ha JS programomban használok egy betűkészletet ily módon:rv.font = "30px Comic Sans MS";rv.fillStyle = "yellow";rv.textAlign = "center";rv.fillText("Betöltés... "+betoltve,vaszon.width/2,vaszon.height-30);
akkor ez az operációs rendszer (esetemben Windows 10) betűkészleteiből meríti azt a bizonyos Comic Sans MS-t? Tehát ha valahol nincs telepítve, akkor nem ír ki semmit?
Ha mellékelném ezt a betűkészletet a programom mellé, akkor hogyan, milyen JS utasítással lehetne ezt beépíteni, a fentebbi rv.font-ot kiváltva vagy kiegészítve? Van valami utasítás erre, ami elérési útból használ betűkészletet?
Illetve a 2. kérdésem, hogy a játék sebességét hogyan vezérelhetem a legpraktikusabban? Mert lehet egyszerűen így is 60 fps-sel:function jatek(60)...
vagy kicsit bonyolultabban:var fps, jateksebessege, most, akkor, eltelt;startAnimating(20);function startAnimating(fps) {jateksebessege = 1000 / fps;akkor = Date.now();jatek();};function jatek() {requestAnimationFrame(jatek);most = Date.now();eltelt = most - akkor;if (eltelt > jateksebessege) {akkor = most - (eltelt % jateksebessege);//
De melyik az üzembiztosabb megoldás?Ha beállítanál fontfamily-t akkor legalább keresne valami hasonlót (illetve be is lehet állítani, hogy töltse le a fontot, ha felrakod a szerverre).
https://www.w3schools.com/cssref/css3_pr_font-face_rule.asp -
martonx
veterán
Sziasztok!
Az volna a kérdésem, hogy ha JS programomban használok egy betűkészletet ily módon:rv.font = "30px Comic Sans MS";rv.fillStyle = "yellow";rv.textAlign = "center";rv.fillText("Betöltés... "+betoltve,vaszon.width/2,vaszon.height-30);
akkor ez az operációs rendszer (esetemben Windows 10) betűkészleteiből meríti azt a bizonyos Comic Sans MS-t? Tehát ha valahol nincs telepítve, akkor nem ír ki semmit?
Ha mellékelném ezt a betűkészletet a programom mellé, akkor hogyan, milyen JS utasítással lehetne ezt beépíteni, a fentebbi rv.font-ot kiváltva vagy kiegészítve? Van valami utasítás erre, ami elérési útból használ betűkészletet?
Illetve a 2. kérdésem, hogy a játék sebességét hogyan vezérelhetem a legpraktikusabban? Mert lehet egyszerűen így is 60 fps-sel:function jatek(60)...
vagy kicsit bonyolultabban:var fps, jateksebessege, most, akkor, eltelt;startAnimating(20);function startAnimating(fps) {jateksebessege = 1000 / fps;akkor = Date.now();jatek();};function jatek() {requestAnimationFrame(jatek);most = Date.now();eltelt = most - akkor;if (eltelt > jateksebessege) {akkor = most - (eltelt % jateksebessege);//
De melyik az üzembiztosabb megoldás?"Tehát ha valahol nincs telepítve, akkor nem ír ki semmit" - ilyenkor fallback-elni szokott a böngésző valami default betűtípusra.
Többi kérdésedhez semmi kontextust nem küldtél, szóval a válaszom: 42

-
martonx
veterán
Szia!
1. Ahogy én tudom (nem régóta és meglehet, rosszul), a különbség a let és a var között (e kettő alapján néztem utána) az, hogy a var egy blokkon belül érvényes, tehát ugyanolyan változó már nem lehet azon belül, míg a let esetében ilyen megkötés nincsen.
2. Megcsináltam most az általad ajánlott megoldás alapján; az én gépemen jól működik, tehát remélem, mindenhol így lesz. Csak azt nem értem, hogy a startTime változóra mi szükség van, hiszen azon kívül, hogy egyszer értéket kap, nem használatos?
Tehát itt a kód a játékomból:var fps, jateksebessege, startTime, most, akkor, eltelt;// initialize the timer variables and start the animationstartAnimating(120);function startAnimating(fps) {jateksebessege = 1000 / fps;akkor = Date.now();startTime = akkor;jatekciklus();};function jatekciklus() {requestAnimationFrame(jatekciklus);most = Date.now();eltelt = most - akkor;if (eltelt > jateksebessege) {akkor = most - (eltelt % jateksebessege);//...a program többi, rajzoló része...Ki beszélt var-ról? Starttime akkor lehet, hogy nem is kell. 120 fps felejtős. Jó lenne a magyar változó neveket elfelejteni.
-
Silεncε
őstag
Szia!
1. Ahogy én tudom (nem régóta és meglehet, rosszul), a különbség a let és a var között (e kettő alapján néztem utána) az, hogy a var egy blokkon belül érvényes, tehát ugyanolyan változó már nem lehet azon belül, míg a let esetében ilyen megkötés nincsen.
2. Megcsináltam most az általad ajánlott megoldás alapján; az én gépemen jól működik, tehát remélem, mindenhol így lesz. Csak azt nem értem, hogy a startTime változóra mi szükség van, hiszen azon kívül, hogy egyszer értéket kap, nem használatos?
Tehát itt a kód a játékomból:var fps, jateksebessege, startTime, most, akkor, eltelt;// initialize the timer variables and start the animationstartAnimating(120);function startAnimating(fps) {jateksebessege = 1000 / fps;akkor = Date.now();startTime = akkor;jatekciklus();};function jatekciklus() {requestAnimationFrame(jatekciklus);most = Date.now();eltelt = most - akkor;if (eltelt > jateksebessege) {akkor = most - (eltelt % jateksebessege);//...a program többi, rajzoló része...Csakhogy ő nem a var vs let-ről beszélt, hanem a let vs const-ról
-
martonx
veterán
Sziasztok ismét!
Módosítottam a játékom kódján egy kicsit, hogy - elvileg - minden számítógépen azonos sebességgel fusson, bár ezt még most nem tudom leellenőrizni, mivel pillanatnyilag nem vagyok ama "gyorsabb de a játékot lassabban futtató" gép közelében.
Ezért közzétenném itt a kódom ezt végző részét, hogy megnézhessétek és meg tudjátok mondani, hogy jó-e , ahogy csináltam.
Szóval szerintetek jó ez így? Az én gépemen simán fut. Akkor elvileg minden képfrissítési frekvencián jól működne?let jateksebessege = 100;function jatekciklus() {setTimeout(function() {requestAnimationFrame(jatekciklus);//a játékom fő kódja a rajzolással, stb.}, 1000 / jateksebessege);};requestAnimationFrame(jatekciklus);Egyébként innen puskáztam ki:https://www.kirupa.com/html5/animating_with_requestAnimationFrame.htmés annyit kellett átalakítanom rajta, hogy fentebb az utolsó sorba is be kellett szúrnom a requestAnimationFrame()-et, mert különben csak nagy fehérséget mutatott valamiért.Két dolog:
1. tanuljuk már meg végre, hogy mi a különbség a let és const között
ez a halálom, amikor valaki a legalapabb dolgot is fogalmatlanul használja.
2. nekem ez a megoldás sokkal szimpatikusabb: https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe minden olyan megoldástól a hideg kiráz, ami animációval kapcsolatos és settimeout / setinterval van benne. Ezt a megoldás még kombinálnám annyival, hogy magát az animációt kiszervezném egy külön worker thread-be, mert ezekben az esetekben az a gond, hogy ha komplex az animáció / nagyon gyenge a futtató vas, akkor lehet, hogy több frame-et is át fogsz lépni, mint eredetileg tervezted. -
Rickeffe
aktív tag
https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
The number of callbacks is usually 60 times per second, but will generally match the display refresh rate in most web browsers as per W3C recommendation.Böngészőtöl függ.
Először végeznék egy mérést ami megadja az aktuális kb fps-t. Aztán ahhoz viszonyítanék. -
martonx
veterán
Sziasztok!
Korábban már kérdezősködtem itt párszor, pl. a játékok sebességét illetően, és ajánlották itt nekem a SetInterval() helyett a requestAnimationFrame() függvény használatát.
Azóta használom is ezt, hiszen az én 4 GB RAM-mal és kb. 3 GHz-es CPU-val rendelkező számítógépemen jól és simán futnak a javascriptes játékaim.
Viszont most kipróbáltam egyiket egy, az enyémnél lényegesen erősebb és gyorsabb számítógépen (pl. 8 GB RAM van benne, tehát kétszerese az enyémnek) és elhűlve tapasztaltam, hogy a játékom lassabban fut, mint a saját gépemen. Pedig egy gagyi kis Pong-szerű, labdapattogtatós játékról van szó.
Miért van ilyen sebességbeli különbség, ráadásul a gyengébb gép javára? És hogyan lehetne megoldani, hogy mindenütt egyforma sebességgel fusson?a requestAnimation frame a képernyőfrissítéshez igazodik, nem a gép sebességéhez. Simán lehet, hogy a te gyengébb gépednek 120Hz-es kijelzője van, a másik erősebb gépnek meg 60Hz-es. Ebben az esetben nálad 120fps-t fog eredményezni a requestAnimationFrame, a másik gépen meg 60fps-t.
A SetInterval felejtős, teljesen megbízhatatlan.
requestAnimationframe-nél így tudod fixálni az fps-t, hogy mindenhol azonos sebességet adjon: https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe
Nyilván fixálni csak lefelé tudod, azaz 60fps-től lefelé. -
sztanozs
veterán
Sziasztok!
Korábban már kérdezősködtem itt párszor, pl. a játékok sebességét illetően, és ajánlották itt nekem a SetInterval() helyett a requestAnimationFrame() függvény használatát.
Azóta használom is ezt, hiszen az én 4 GB RAM-mal és kb. 3 GHz-es CPU-val rendelkező számítógépemen jól és simán futnak a javascriptes játékaim.
Viszont most kipróbáltam egyiket egy, az enyémnél lényegesen erősebb és gyorsabb számítógépen (pl. 8 GB RAM van benne, tehát kétszerese az enyémnek) és elhűlve tapasztaltam, hogy a játékom lassabban fut, mint a saját gépemen. Pedig egy gagyi kis Pong-szerű, labdapattogtatós játékról van szó.
Miért van ilyen sebességbeli különbség, ráadásul a gyengébb gép javára? És hogyan lehetne megoldani, hogy mindenütt egyforma sebességgel fusson?Szia!
A requestAnimationFrame lényege, hogy mindenhol ugyanolyan sebességgel fusson. Az, hogy ott lassabban futott vsz csak valami lokális ok miatt lehetett (pl sok tab, máshol is használta valami aktívan a grafikus drivert, vagy valami egyéb). Az is lehet, hogy nem volt lassabb, csak voltak olyan dolgok, ami miatt más volt a limitáló és amiatt tűnt lassabbnak.
írasd ki a képernyő szélére az fps-t, és látni fogod, hogy tényleg lassabb-e. -
instantwater
addikt
-
instantwater
addikt
-
sztanozs
veterán
-
Csepe
aktív tag
Sziasztok újra!
Készítettem nemrég egy kis JS-es játékocskát, és amikor futtattam egy másik gépen, ráadásul Edge böngészőben Chrome helyett, szomorúan tapasztaltam, hogy az ékezetes betűket nem jelenítette meg. Ez miért van? A programhoz kell csomagolni a fontot (betűkészletet)? Ezt hogyan kell csinálni?
Ha egyedi fontról van szó, akkor külön font-face-t kell csinálni, máskülönben használhatsz Google Fonts-ot a font beágyazására.
-
instantwater
addikt
Sziasztok újra!
Készítettem nemrég egy kis JS-es játékocskát, és amikor futtattam egy másik gépen, ráadásul Edge böngészőben Chrome helyett, szomorúan tapasztaltam, hogy az ékezetes betűket nem jelenítette meg. Ez miért van? A programhoz kell csomagolni a fontot (betűkészletet)? Ezt hogyan kell csinálni?
Screenshotot, github linket esetleg tudsz csatolni?
-
sztanozs
veterán
Nem ez nagyjából
setInterval(17)-tel egyenlő, de
- ha a szkripted futása több, mint 16 ms, akkor összetorlódnak az eseményeksetInterval-nál, míg arequestAnimationFramethrotlingol
- ha háttérben van a canvas, asetIntervalakkor is triggerel, míg arequestAnimationFramenem (nem eszi feleslegesen az erőforrásokat). Ezzel ellentétben a háttérben futósetIntervalszépen torlódik, és Ph-reklámokban is látható "rohanással" éri utol magát, amikor újra előtérbe kerül.
- arequestAnimationFramevisszaad egyrequestID-t, amivel könnyebb szüneteltetni az animációt, mint asetInterval-lal.
- arequestAnimationFrame-ben regisztrált callback megkapja az aktuális időt (ha van a callback függvénynek argumentuma), így nem kell a függvényben szenvedni az előállításával -
sztanozs
veterán
Köszönöm szépen! Ki is fogom próbálni.
Most utána is néztem ennek az utasításnak; úgy látom, valamelyest bonyolultabb a setInterval-nál, aminél csak meg kellett adni egy számot és kész.
Ez viszont egy kis magyarázatra szorul számomra:function repeatOften() {// Do whateverrequestAnimationFrame(repeatOften);}requestAnimationFrame(repeatOften);Akkor ez paraméterként nem egy képfrissítési számot, hanem egy másik függvényt vár, amiben az ismétlődő dolgok vannak?
Ez egy rekurzívan hívott függvény, amit a JS grafikus motorja szabályoz (legnagyobb sebesség 60 FPS - ha 16 ms alatt be tudja fejezni a függvény a számolást).
Az első requestAnimationFrame visszaad egy azonosítot, ami alapján el is lehet cancel-elni az egészet. -
martonx
veterán
Köszönöm szépen! Ki is fogom próbálni.
Most utána is néztem ennek az utasításnak; úgy látom, valamelyest bonyolultabb a setInterval-nál, aminél csak meg kellett adni egy számot és kész.
Ez viszont egy kis magyarázatra szorul számomra:function repeatOften() {// Do whateverrequestAnimationFrame(repeatOften);}requestAnimationFrame(repeatOften);Akkor ez paraméterként nem egy képfrissítési számot, hanem egy másik függvényt vár, amiben az ismétlődő dolgok vannak?
Ez olyan gyorsan frissít, ahogy csak bírja az adott gép, nem pedig amilyen gyakoriságot megadtál a SetInterval-ban. Ezért sokkal jobb az animációkhoz.
-
Rickeffe
aktív tag
Sziasztok!
Az miért van, hogy kicsinyke játékomban villognak a mozgó objektumok?
Ezek egy tömbben vannak és egy for ciklussal végigmegyek rajtuk, miközben a drawImage-dzsel kirajzolom őket a setInterval függvényben, aminek 60 az értéke.
Lehet, hogy kellene még valami külön képernyőújrarajzolási utasítás bele? Van ilyen a JS-ben?#7584
-
Rickeffe
aktív tag
Nem vagyok egy js guru de szerintem teljesen feleslegesen kettőzted.
-
Rickeffe
aktív tag
Sziasztok ismét!
Tehát, a zenék már mennek, de az az egyetlen bajom ezekkel, hogy a hatterzene.mp3 csak egyszer játszódik le, márpedig ismétlődnie kellene, mivel a játékprogram háttérzenéjéről van szó.
Így kódoltam, de nem működik:
hatterzene = new sound("zenek/hatterzene.mp3");
hatterzene.loop = true;
Hogyan lehetne ezt a problémát megoldani?U.I.: a 7525. hozzászólásban van a kódom a zenék inicializálásáról.
...
-
cattus
addikt
Sziasztok ismét!
Tehát, a zenék már mennek, de az az egyetlen bajom ezekkel, hogy a hatterzene.mp3 csak egyszer játszódik le, márpedig ismétlődnie kellene, mivel a játékprogram háttérzenéjéről van szó.
Így kódoltam, de nem működik:
hatterzene = new sound("zenek/hatterzene.mp3");
hatterzene.loop = true;
Hogyan lehetne ezt a problémát megoldani?U.I.: a 7525. hozzászólásban van a kódom a zenék inicializálásáról.
Első tippre ne létrehozás után állítsd be, hogy loopoljon, hanem a sound függvényben.
-
martonx
veterán
-
Rickeffe
aktív tag
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-
martonx
veterán
Sziasztok ismét!
Visszakanyarodnék a JS-es hanglejátszáshoz. Ezzel a kóddal inicializálnám a zenét:function sound(src) {
this.sound = document.createElement("audio");
this.sound.src = src;
this.sound.setAttribute("preload", "auto");
this.sound.setAttribute("controls", "none");
this.sound.style.display = "none";
document.body.appendChild(this.sound);
this.play = function(){
this.sound.play();
};
this.stop = function(){
this.sound.pause();
};
Ez pedig a zeném (kb. 1,7 MB méretű):var cimzene;
cimzene = new sound("zenek/cimzene.mp3");És az a gondom, hogy ez a zene csak akkor indul el, ha bekövetkezik valami menüben a kattintás esemény, egyébként meg nem. Hogyan indíthatnám el a zenét már akkor, amikor elindul a játék?
Teljesen jó, hogy csak user interakcióra indul a zene, évekig szívtunk a zenélő köcsög weboldalakkal. A megoldás, hogy kiraksz egy gombot, amire rányomva elindul a játék, egyúttal elindul a zene is.
-
instantwater
addikt
Sziasztok ismét!
Visszakanyarodnék a JS-es hanglejátszáshoz. Ezzel a kóddal inicializálnám a zenét:function sound(src) {
this.sound = document.createElement("audio");
this.sound.src = src;
this.sound.setAttribute("preload", "auto");
this.sound.setAttribute("controls", "none");
this.sound.style.display = "none";
document.body.appendChild(this.sound);
this.play = function(){
this.sound.play();
};
this.stop = function(){
this.sound.pause();
};
Ez pedig a zeném (kb. 1,7 MB méretű):var cimzene;
cimzene = new sound("zenek/cimzene.mp3");És az a gondom, hogy ez a zene csak akkor indul el, ha bekövetkezik valami menüben a kattintás esemény, egyébként meg nem. Hogyan indíthatnám el a zenét már akkor, amikor elindul a játék?
Body onload?
Vagy használj egyéni eventeket és adj ki egyet amikor betöltött a játék, és egy event handler elindítaná a zenédet.
-
instantwater
addikt
Sajnos nem működik még, pedig adtam az if előtt kezdőértéket a $num-nak, meg függvényt is létrehoztam. Most a JS függvényen belüli PHP-zés nem tetszik valamiért a programnak. Így néz ki most a kódom:
<html>
<head>
<title>Fájlkezelő</title>
</head>
<body>
<script type="text/javascript">
function szamlal() {
<?php
$File = 'adat.txt'; // A számláló file neve
$num=0;
if (file_exists($File)) // Létezik a file?
{
$fp = fopen($File,"r"); // Megnyitjuk olvasásra
$num = fread($fp, filesize($File)); // Beolvassuk a tartalmát a $num változóba.
fclose($fp); // Zárjuk a filet.
$num=$num+1; // A változó értékét megnöveljük
$fp = fopen($File,"w"); // Megnyitjuk ugyanazt a filet, de most írásra
fwrite($fp, $num, 10); // Kiírjuk a változó értékét.
fclose($fp); // Zárjuk a fájlt
return $num;
}
?>
};
//<script type="text/javascript">
valami = szamlal();//'<?php echo $num ?>'; //Ha elhagyom az idézőjeleket, UNEXPECTED TOKEN hiba lesz a konzolban, ha nem, akkor meg kiír mindent közte!!!
alert(valami);
</script>
</body>
</html>Kevered a szezont a fazonnal.
Az egész szamlal() függvény legyen benne a PHP tagékben, és kiiíratéskor is php tagen belül echozd a függvény hívást, hiszen nincs többé $num változód a függvényen kívül.
A függvény fogja visszaadni a kívánt számot. -
hiperFizikus
senior tag
-
Rickeffe
aktív tag
Sajnos nem működik még, pedig adtam az if előtt kezdőértéket a $num-nak, meg függvényt is létrehoztam. Most a JS függvényen belüli PHP-zés nem tetszik valamiért a programnak. Így néz ki most a kódom:
<html>
<head>
<title>Fájlkezelő</title>
</head>
<body>
<script type="text/javascript">
function szamlal() {
<?php
$File = 'adat.txt'; // A számláló file neve
$num=0;
if (file_exists($File)) // Létezik a file?
{
$fp = fopen($File,"r"); // Megnyitjuk olvasásra
$num = fread($fp, filesize($File)); // Beolvassuk a tartalmát a $num változóba.
fclose($fp); // Zárjuk a filet.
$num=$num+1; // A változó értékét megnöveljük
$fp = fopen($File,"w"); // Megnyitjuk ugyanazt a filet, de most írásra
fwrite($fp, $num, 10); // Kiírjuk a változó értékét.
fclose($fp); // Zárjuk a fájlt
return $num;
}
?>
};
//<script type="text/javascript">
valami = szamlal();//'<?php echo $num ?>'; //Ha elhagyom az idézőjeleket, UNEXPECTED TOKEN hiba lesz a konzolban, ha nem, akkor meg kiír mindent közte!!!
alert(valami);
</script>
</body>
</html>-
-
gary89
csendes tag
Sajnos nem működik még, pedig adtam az if előtt kezdőértéket a $num-nak, meg függvényt is létrehoztam. Most a JS függvényen belüli PHP-zés nem tetszik valamiért a programnak. Így néz ki most a kódom:
<html>
<head>
<title>Fájlkezelő</title>
</head>
<body>
<script type="text/javascript">
function szamlal() {
<?php
$File = 'adat.txt'; // A számláló file neve
$num=0;
if (file_exists($File)) // Létezik a file?
{
$fp = fopen($File,"r"); // Megnyitjuk olvasásra
$num = fread($fp, filesize($File)); // Beolvassuk a tartalmát a $num változóba.
fclose($fp); // Zárjuk a filet.
$num=$num+1; // A változó értékét megnöveljük
$fp = fopen($File,"w"); // Megnyitjuk ugyanazt a filet, de most írásra
fwrite($fp, $num, 10); // Kiírjuk a változó értékét.
fclose($fp); // Zárjuk a fájlt
return $num;
}
?>
};
//<script type="text/javascript">
valami = szamlal();//'<?php echo $num ?>'; //Ha elhagyom az idézőjeleket, UNEXPECTED TOKEN hiba lesz a konzolban, ha nem, akkor meg kiír mindent közte!!!
alert(valami);
</script>
</body>
</html>- a szamlal function üres, nem csinál semmit sem, így undefined lesz JS oldalon a valami.
- az extra // bezavarhat html parseoláskor (bár a modern böngészők tudnak vele együtt élni)
- a return $num; okozhatja a furcsa viselkedést, ott egy ilyen kellene, hogy helyes legyen:echo 'return '. $num . ';' ;így a szamol helyes értékkel térne vissza és később nem kellene az echo $num -
instantwater
addikt
Értem.
Azért nem írja ki, mert a $num változót az if szkópján belül deklarálod.
Tegyél egy $num=0 értékadást az if elé, így elérhető lesz az ifen kívülről is.De ha rám hallgatsz, becsomagolod az egészet egy szamlal() függvénybe, ami elvégzi a kívánt műveletet, majd a végén visszaadja a $num értékét.
Ezután csak meg kell hívnod a.függvényed ahol számlálni akarsz, esetedben a javascript tagon belül, és így nem kell aggódnod a változó szkópok miatt, és a globális névteret sem szennyezed be.
Tényleg el kellene döntened, hogy user szintű vagy globális számlálót akarsz, mert a jelenlegi megvalósítás az egy globális számlálót valósít meg, és az összes usered ugyanazt a számlálót fogja növelni.
Persze, ha ez egy látogató számláló akkor ez a kívánt viselkedés.
Miért van szükséged javascriptre?
Ezt az értéket simán kiírhatnád a bodyba is PHPvel.Bocsi a hiányzó formázásért, telefonról vagyok.
-
cattus
addikt
Te mixelni szeretnéd a JavaScriptet meg a PHP-t, ami nem fog működni. Ahogy fentebb is írták, nézz utána, hogy működik a localStorage és csináld meg azzal, ne fájlműveletekkel.
-
instantwater
addikt
Sziasztok!
Azt szeretném megcsinálni egy honlappal, hogy bizonyos dolgokat lehessen a Tetszik/Nem tetszik gombokkal értékelni. Ezek képek lennének, amikre kattintva a tetszik vagy a nemtetszik változók értéke növelődik.
Ezt JS-ben nem nehéz beállítani, de valahogy tárolni is kéne ezen adatokat, hogy ne vesszenek el, és a következő látogatáskor is láthatók legyenek a legutóbbi állapotok.
Ehhez egy .txt állományba menteném le a változók értékeit, tehát csupán két számot.
Ezt viszont úgy tűnik, a sima JS nem tudja megoldani, kell tehát némi PHP-s kiegészítés is hozzá.
igen ám, de akkor meg tudnom kellene, hogy a változókat hogyan lehet ide-oda "dobálni" JS és PHP között. Na, ez az, ami sajnos nem megy.
Írtam, pontosabban összeollóztam egy kis példaprogramot a világhálóról kipuskázott példák alapján, de ez sem működik.
Íme a kód:<html><head><title>Fájlkezelő</title></head><body><?php$File = 'adat.txt'; // A számláló file neveif (file_exists($File)) // Létezik a file?{$fp = fopen($File,"r"); // Megnyitjuk olvasásra$num = fread($fp, filesize($File)); // Beolvassuk a tartalmát a $num változóba.fclose($fp); // Zárjuk a filet.$num=$num+1; // A változó értékét megnöveljük$fp = fopen($File,"w"); // Megnyitjuk ugyanazt a filet, de most írásrafwrite($fp, $num, 10); // Kiírjuk a változó értékét.fclose($fp); // Zárjuk a fájlt}?><script type="text/javascript">var valami = <?php echo $num ?>; //Ha elhagyom az idézőjeleket, UNEXPECTED TOKEN hiba lesz a konzolban, ha nem, akkor meg kiír mindent közte!!!//alert(valami);</script></body></html>Mit jelent az, hogy nem működik?
Nem ír fájlba, nem számol, hibát ad, nem írja ki a JS amit szeretnél?Ha csak a kliensnek a saját számlálóját kell kezelni akkor JSsel cookieba vagy local storagebe el tudod menteni.
Ha kell a szerveren is az adat akkor marad amit csináltál, bár célszerű lenne MySQLbe tenni az adatot, illetve ez nem a PHP topik.
-
Rickeffe
aktív tag
Sziasztok!
Zenét szeretnék lejátszani egy JS-es játékomban, amely zene OGG vagy MP3 formátumban van. Úgy tapasztaltam, hogy a JS alapban ezeket nem, csak WAV-okat képes lejátszani, így kénytelen vagyok letölteni valami audió bővítést.
Elsőre a howler.js-re esett a választásom, de nem boldogulok vele:
a howler.js állományt bemásoltam a játékom mellé, majd - ahogy a howler dokumentációjában is olvasható - beírtam a játékomba ezen sorokat:
<script src="/howler.js"></script>
<script> var zene = new Howl({ src: ['cimzene.mp3'] }); </script>
De hiába futtatom, mert nem érti a progi, hogy mi az a Howl. Beírtam utána még ezeket is:
import {Howl, Howler} from 'howler';
const {Howl, Howler} = require('howler');
de így sem működött.
Valaki ért ehhez, hogy leírhassa a megoldást nekem? Előre is köszönöm!Webaudio.
Nem kell semmilyen library meg hasonló mostrumok. -
cSuwwi
senior tag
Sziasztok!
Zenét szeretnék lejátszani egy JS-es játékomban, amely zene OGG vagy MP3 formátumban van. Úgy tapasztaltam, hogy a JS alapban ezeket nem, csak WAV-okat képes lejátszani, így kénytelen vagyok letölteni valami audió bővítést.
Elsőre a howler.js-re esett a választásom, de nem boldogulok vele:
a howler.js állományt bemásoltam a játékom mellé, majd - ahogy a howler dokumentációjában is olvasható - beírtam a játékomba ezen sorokat:
<script src="/howler.js"></script>
<script> var zene = new Howl({ src: ['cimzene.mp3'] }); </script>
De hiába futtatom, mert nem érti a progi, hogy mi az a Howl. Beírtam utána még ezeket is:
import {Howl, Howler} from 'howler';
const {Howl, Howler} = require('howler');
de így sem működött.
Valaki ért ehhez, hogy leírhassa a megoldást nekem? Előre is köszönöm!Ha "nem erti" akkor nem huzza be a js filet (undefined lesz), eleresi ut helyes?
Ha bongeszos a cucc, akkor chromeban nyitsz egy console-t, es megnezed a net fulon egyaltalan betolti-e es 200-as valasszal, majd ha beirod a consolra hogy Howl() nem undefinedet kene adnia.
Ha react/react native vagy hasonlo alapu akkor a debuggerben latod mi a gondja.1 perc alatt osszedobhato vele egy js player: https://jsfiddle.net/h2y0zsg6/
-
sztanozs
veterán
Persze, hiszen a változóid úgyis JS-ben leszenek, nem a canvason (az csak egy rajzfelület).
-
sztanozs
veterán
Sziasztok!
Egy olyan JS progit készítek, amelyben a vászon nagyobb a kijelzőnél, tehát a képernyő görgethető. Az lenne a kérdésem, hogy milyen utasítással lehet szöveget és képet elhelyezni úgy, hogy az görgetéstől függetlenül mindig látszódjon pl. az ablak bal felső sarkában?
Eddig így:var vaszon = document.getElementById('rajzvaszon');
var rv = vaszon.getContext('2d');
(...)
rv.font = "30px Comic Sans MS";
rv.fillStyle = "yellow";
rv.textAlign = "left";
rv.textBaseline = "top";
rv.fillText("<ESC>: kilépés",vaszon.pageX+10,vaszon.pageY+10);
próbáltam, de nem vezetett eredményre (sem a vaszon.pageX, sem rv-vel sem canvas-sal).Úgy, hogy nem a váaszonra rakod, hanem a vászon fölé (külön html elembe, és ahogy előttem is írták CSS-el rögzíted).
-
Doink
aktív tag
Sziasztok!
Egy olyan JS progit készítek, amelyben a vászon nagyobb a kijelzőnél, tehát a képernyő görgethető. Az lenne a kérdésem, hogy milyen utasítással lehet szöveget és képet elhelyezni úgy, hogy az görgetéstől függetlenül mindig látszódjon pl. az ablak bal felső sarkában?
Eddig így:var vaszon = document.getElementById('rajzvaszon');
var rv = vaszon.getContext('2d');
(...)
rv.font = "30px Comic Sans MS";
rv.fillStyle = "yellow";
rv.textAlign = "left";
rv.textBaseline = "top";
rv.fillText("<ESC>: kilépés",vaszon.pageX+10,vaszon.pageY+10);
próbáltam, de nem vezetett eredményre (sem a vaszon.pageX, sem rv-vel sem canvas-sal).CSS-el.
position: fixed;
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Új, bontatlan - Apple MacBook Air 13 M4 16/256GB - Sky Blue
- Új Dobozos ASUS VivoBook Go 15 Laptop 15,6" -20% Ryzen 5 7520U 16/512 Radeon Graphics FHD OLED
- Új HP ZBook Firefly 16 G10 Profi Tervező Vágó Laptop -50% i7-1355U 16/1TB FHD+ RTX A500 4GB
- Macbook Pro 16" A2485 2021 M1 MAX 32/1TB 32 GPU Astro (2) (39 ciklus 97% akku)
- Intel Core ULTRA 9 285K +32GB 7600MHz Patriot Viper XTREME 5 DDR5 kit! (Bolti ár: kb 600ezer Ft!)
Állásajánlatok
Cég: aiMotive Kft.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest




