Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JavaScript] Geluid 'toggle' & andere probleem(pjes)

Pagina: 1
Acties:

  • Tijmen007
  • Registratie: Februari 2009
  • Laatst online: 23-11 01:19
Dag devvers (of prutsers zoals ik),

Ik ben een simpel spelletje aan het opzetten middels HTML > Canvas> Javascript. Nou gaat dit me op zich wel goed af dankzij de enorme hoeveelheid informatie op het internet, maar specifieke vragen blijven toch lastig te vinden. Zohier enkele problemen die ik heb waar ik niet zo snel een passende oplossing voor kan vinden:

-Geluid afspelen middels een boolean, makkelijk toch? Ja, maar het blijft dus maar loopen, hoe stop ik dit ?
Voorbeeldje:
var geluidje = true;
var snd_putdown = new Audio("sfx/put_down.wav");

function playsound();{
_if (geluidje){
__snd_putdown.play();
__geluidje=false;
};

Probleem is dat er dus een constante loop loopt (30 keer per seconde) om te kijken of er iets verandert. Geluidje is in dit geval een boolean die kijkt of de muisknop is ingedrukt. Dit wordt dus over de "false" van de playsound geupdate, en veroorzaakt een hoop herrie. Ik zat er al aan te denken om een if/else labryhint hier omheen te bouwen, maar het kan misschien makkelijker.

-Probleem 2: Dit is nog wat veder weg, maar dat wil ik uiteindelijk wel implementeren; een gebied van oppakken van een afbeelding. Alles loopt strict in JS, geen grappen met HTML. Als dit niet gebruikt wordt zal de gebruiker dus precies op de juister coordinaat (linkerhoek boven) van de afbeelding moeten klikken, en dat is natuurlijk niet zo gebruikers vriendelijk.

Ik zal proberen de boel binnenkort eens op de server te gooien, dan kan iedereen mijn amateuristische werk bewonderen :+. Dat is misschien ook wat duidelijker.

  • Stukfruit
  • Registratie: Oktober 2007
  • Niet online
  1. Een boolean waarde is alleen maar dat: een waarde. Het zal op zichzelf niets doen. Als je het geluid wil stoppen dan zal je dat op dezelfde manier moeten doen als het starten (via een functie - welke? Dat mag je zelf uitzoeken, dit is geen huiswerkafhaalbalie). Die loop ga je niet nodig hebben om geluid af te spelen, dus begin eerst eens met het verwijderen daarvan. Extra tip: probeer gebruik te maken van de events van je muis.
  2. Je kan detecteren of een punt binnen of buiten een rechthoek valt. Zit het punt binnen de rechthoek, dan kan je de afbeelding oppakken en verslepen.
En ik denk dat het leven voor iedereen wat simpeler wordt als je de code-tags gebruikt ipv underscores om in te springen in je voorbeeldcode ;)

Dat zit wel Schnorr.


  • Tijmen007
  • Registratie: Februari 2009
  • Laatst online: 23-11 01:19
[b][message=39736828,noline]En ik denk dat het leven voor iedereen wat simpeler wordt als je de code-tags gebruikt ipv underscores om in te springen in je voorbeeldcode ;)
Ah ja, eerste keer dat ik hier voor hulp moet komen ;). Dat kan wel werken ja, maar dat hele events wordt echt nergens uitgelegd. Wat ik zover begrijp is dat ik de boel moet loopen om beweging te krijgen (logisch). Maar het geluid valt daar dan weer buiten? Dat vind ik wel vaag, want dan moet het er dus los van lopen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
function inputinterval() {
    window.onmousemove = handleMouseMove;
    //mouse
    function handleMouseMove(event) {
        event = event || window.event; 
        mousepos = {
            x: event.clientX,
            y: event.clientY
        };
    };  
    //keyboard
};


Dit stukje mouse tracking bijvoorbeeld, handig voor universeel objecten te kunnen verplaatsen. Hier had ik dus bij gezet:

code:
1
2
3
4
5
6
7
8
9
10
11
function onMouseDown(event) {
    mousedrag=true;
};

function onMouseDrag(event) {
    mousedrag=true;
};

function onMouseUp(event) {
    mousedrag=false;
};


Wat dus in de sound engine wordt gebruikt als het volgende:

code:
1
2
3
4
5
function soundplay(){
    if (!(mousedrag)){
        snd_putdown.play();
    };
};


EDIT: voor de handigheid:
Wat dus resulteerd in een geheel van:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//Sound engine
function soundplay(){
    if (!(mousedrag)){
        snd_putdown.play();
    };
};  

//Mouse input controller BETA
var mousepos;
mousepos={x:0,y:0};

var mousedrag = true;

function inputinterval() {
    window.onmousemove = handleMouseMove;
    //mouse
    function handleMouseMove(event) {
        event = event || window.event; 
        mousepos = {
            x: event.clientX,
            y: event.clientY
        };
        function onMouseDown(event) {
            mousedrag=true;
        };

        function onMouseDrag(event) {
            mousedrag=true;
        };

        function onMouseUp(event) {
            mousedrag=false;
        };  
    };
};


EDIT2: Oké, dat heeft dus m'n controls gesloopt. mousedrag Wordt niet geupdate. Ik gebruikte deze uitleg hierbij: http://paperjs.org/tutori...ion/creating-mouse-tools/

[ Voor 25% gewijzigd door Tijmen007 op 10-02-2013 13:22 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Tijmen007
  • Registratie: Februari 2009
  • Laatst online: 23-11 01:19
Oké, ik dacht dat dit wel onder programming viel sinds het puur om methodiek gaat.

Afijn, al weer een heel stuk veder, maar het geluid flipt loopt nog steeds keihard, dus ik heb het maar even tijdelijk in de koelkast gezet. Nu bezig met het oppakken van spullen en in een doos gooien (jaja, zo simpel is dit spelletje).

Als mensen nog ervaringen hebben of advies over die geluidskwestie dan hoor ik het graag. (zoals, hoort het wel in een interval te zitten, of moet het daarbuitenom, en hoe roep ik hem dan op zonder weer een loop te krijgen...).

EDIT:
Nou, here we go! Het is mijn eerste creatie met JS, eerste spelletje that is. Heb wel scriptjes hiervoor geschreven, maar dat was allemaal achtergrond werk. http://koewaffle.koding.com/game1/index.html
De site is een beetje langzaam, maar het is wel een grappig experimentje. Controls die valide zijn als volgt:
1,2,3,4,5,R. De nummers selecteren onderdelen (zoals rechts aangegeven) en de
R reset het spel. Met de muis verplaats je onderdelen! Je hoeft niet te klikken, hij is gelocked. A & S zijn ook controls, maar meer voor debugging (je kan daarmee een onderdeel mee loslaten en weer oppakken).

Ik probeer nu weer de muis erin te krijgen, sinds die aan het begin werkte en daarna eruitklapte. Een iets andere invalshoek, maar hopelijk werkt het op deze manier wel weer :*) De muis werkt! Dat was het dan weer voor vandaag, als mensen nog suggesties hebben (zoals een leveling systeem? :9 ) dan hoor ik het graag. Zal de UI nog een beetje oppoeten maar dan ga ik toch echt naar het volgende game-projectje :).

[ Voor 50% gewijzigd door Tijmen007 op 12-02-2013 15:56 . Reden: Update! ]