Avatar billede plastic.gangsta Nybegynder
24. marts 2005 - 22:54 Der er 32 kommentarer og
1 løsning

hvis lyden er setvolume

Hej,

Kan lave noget lignende dette:

if(gallerylyd.volume=100){
_root.blabla.gotoAndStop(1);}

??

Eller hvordan deklarerer man dette, men at hvis lyden er 0 eller 100 så skal den udføre en bestemt opgave..


??

/J
Avatar billede barklund Nybegynder
24. marts 2005 - 23:34 #1
if (gallerylyd.getVolume() == 100) {
    // doStuff();
}

For eksempel :)
Avatar billede plastic.gangsta Nybegynder
28. marts 2005 - 14:33 #2
okay  - kan man evt. lave det lidt smartere så den blot checker om mit lydobjekt spiller. Det jeg ønsker at hvis mit speaker ikon står på en bestemt frame (1) så er den tændt og hvis den står i et andet (34) så er den slukket... Så det jeg ønsker er at mit lydobjekt kun skal starte hvis det står i frame 1.
Jeg kan dog ikke få dette til at du og jeg har ligledes prøvet at deklarere en variable der hedder lyden som enten er ja eller nej, afhængigt af om den spiller eller ej, men dette kan jeg heller ikke få til at fungere, så jeg ønsker at lave en hvis sætning der checker om der bliver afpsillet noget lyd i objeketet s

Kan man konstuere en sådan if(hvis lyden spiller) sætning og derefter få den til at køre mit soundobjekt?????

nedenstående kode anvender jeg nu. HEr har jeg deklareret en variable lyden i et underliggende movieclip. Problemet er at jeg ikke kan trace værdien af denne variable ud, selvom jeg er 100% sikker på at jeg har angivet den rigtige sti

har prøvet med
trace(lyden);
trace(this.asstwo.speaker.lyden)
trace(_root.this.asstwo.speaker.lyden) og ligegyldigt hvad så får jeg en undefined property


if(this.asstwo.speaker.lyden == "ja"){
   
var s:Sound = new Sound();
_root.s.onSoundComplete = function() {
this.loadSound("sound/mall_1.mp3", true);
}
s.onSoundComplete();
this.s.setVolume(60);
    trace("okajklfdasdkjfkjlfdsy");
Avatar billede barklund Nybegynder
28. marts 2005 - 14:44 #3
Det smarteste ville nu være at du proppede alt det her script ind i dit lydikon så det dermed styrede lyden selv. Så kan man bare have nogle funktioner inden i den (eller måske på en _global.Jukebox):

var tændt = true;
var lyd = new Sound(this);
_global.Jukebox = new Object();
Jukebox.stream = function(fil, gentag) {
    if (tændt) {
        lyd.loadSound(fil, true);
        if (gentag) {
            lyd.onSoundComplete = function() { this.loadSound(fil, true); };
        }
    }
}
Jukebox.lydstyrke = function(værdi) {
    if (værdi !== undefined) {
        lyd.setVolume(værdi);
    }
    return lyd.getVolume;
}

Så kan du bare hvor som helst fra skrive:

Jukebox.lydstyrke(60);
Jukebox.stream("sound/mall_1.mp3", true);

Og så finder den selv ud af, om lyden skal spille eller ej.
Avatar billede plastic.gangsta Nybegynder
28. marts 2005 - 15:01 #4
DEt ligner bestemt noget af det jeg skal have gang i:  Lad mig lige uddybe min situation

Min flash film har tre frames i hovedtidslinjen, en til hver af tre forskellige baggrunde. Til hver af disse baggrunde er der en tilhørende baggrundslyd. Man kan skifte imellem disse tre forskellige baggrunde ved at trykke på nogle ikoner i menuen. Problemet er at hvis man er inde på baggrund 1 og lyden begynder at spille (den skal automatiske starte med at streame og spille) hvis man så slår lyden fra og skifter baggrund (går f.eks. hen til frame 2) så skal den ikke begynde at spille den anden baggrundslyd, hvorimod hvis man har lyden tændt ved baggrundsbillede 1 og skifter frame, så skal den skifte til at spille baggrundslyd 2..

Jeg vil meget gerne oprette et nyt spg. med flere point hvis det er nødvendigt.

Så et oprids af hvad der skal ske

1) når man komme ind på en frame så skal den streame baggrundslyden hvis højtaler ikonet er positioneret et bestemt sted(eller har  en bestemt værdi på en variable) og hvis den ikke er positioneret det sted så skal den kun streame lyden, men ikke afpsille den.


Kan du hjælpe med ddet??
Avatar billede barklund Nybegynder
28. marts 2005 - 16:07 #5
Der er jo ikke spor svært at lave - det tyder bare på, at du ikke har kunnet finde din variabel - hvor den så end har være sat henne af. Og det er sådan set bare det lille problem du skal have løst. Du kan alternativt smide den op på global - så kan du altid finde den:

trace("lyd: "+_global.lydStatus);
if (_global.lydStatus == "ja"){
    var s = new Sound();
    s.onSoundComplete = function() {
        this.loadSound("sound/mall_1.mp3", true);
    }
    s.onSoundComplete();
    s.setVolume(60);
}

Så kan du bare i dit lydikon sætte den via _global.lydStatus="noget";

Ingen grund til at gøre tingene sværere end nødvendigt :)

--
Morten Barklund
Avatar billede plastic.gangsta Nybegynder
28. marts 2005 - 16:33 #6
den vil ikke trace min lydstatus ud.

Under _Root.asstwo.speaker har jeg i første frame lagt
_global.lydStatus="ja"; og 34 frame _global.lydStatus="nej";

Ude på hovedtidslinjen kalder jeg så:

trace("lyd: "+_global.lydStatus);
if (_global.lydStatus == "ja"){
    var s = new Sound();
    s.onSoundComplete = function() {
        this.loadSound("sound/mall_1.mp3", true);
    }
    s.onSoundComplete();
    s.setVolume(60);
}


Men den melder lyd:undefined -

Hvad gør jeg galt??
Avatar billede barklund Nybegynder
28. marts 2005 - 16:38 #7
Og hvis du smider en trace ind i frame 1 og frame 34 - bliver de så kaldt?
Avatar billede plastic.gangsta Nybegynder
28. marts 2005 - 16:51 #8
den tracer den fint nok ud der...?
Avatar billede plastic.gangsta Nybegynder
28. marts 2005 - 17:20 #9
så det må vel være stien til min _global.lydstatus der er noget galt med - kan den skrives på en anden måde. Troede egentlig at _global sikrede at den lå "over det hele"??
Avatar billede barklund Nybegynder
28. marts 2005 - 17:26 #10
Det gør den også. Hvis det er global, så findes det alle steder. Hvilken flash version bruger du? Loader du noget af det ind i hinanden?
Avatar billede plastic.gangsta Nybegynder
28. marts 2005 - 17:28 #11
flash mx 2004.... Er lidt usikker på hvad du mener om jeg loader noget af det ind i hinanden ... Speakeren liggerp på hovedtidslinjen _root.asstwo.speaker ??
Avatar billede plastic.gangsta Nybegynder
28. marts 2005 - 17:29 #12
skrevet til flash player version 7 med AS2
Avatar billede barklund Nybegynder
29. marts 2005 - 10:16 #13
Om du har noget loadMovie eller tilsvarende på nogle af delene. Ligger lyd-dimsen og dine øvrige scripts i samme film?
Avatar billede plastic.gangsta Nybegynder
29. marts 2005 - 12:44 #14
ja, de ligger i samme film, det er derfor det undrer mig så meget - er der nogen work away around it?
Avatar billede barklund Nybegynder
29. marts 2005 - 15:36 #15
Jeg kan ikke genskabe problemet - ingen kan :)

Jeg har aldrig hørt om, at _global ikke virker. Tjek lige en gang ekstra, at du har skrevet det rigtige alle steder.
Avatar billede plastic.gangsta Nybegynder
29. marts 2005 - 22:02 #16
Det er så mærkeligt - når jeg deklarerer _global.lydstatus på hovedtidslinjen
_global.lydstatus = "test"; og så tracer den ud, kan den sagtens finde det, men når lydstatus ligger i this.asstwo.speaker dur det ikke. Asstwo er et movieclip (min menu) og speaker er et movieclip (min speaker) - har du nogen anelse om hvad der sker??
Avatar billede barklund Nybegynder
29. marts 2005 - 22:14 #17
Ikke andet end at jeg absolut ikke kan genskabe det og at der højst sandsynligt er tale om en simpel fejl - som jeg dog ikke kan deducere mig frem til givet de oplyste parametre. :)
Avatar billede barklund Nybegynder
29. marts 2005 - 22:15 #18
Har du prøvet at skrive det samme i asstwo-clippet?
Avatar billede plastic.gangsta Nybegynder
29. marts 2005 - 22:20 #19
det kan godt trace ud, så det må altså på en eller anden måde være når den skal ned to skridt asstwo og så speaker at det går galt - det virker til at _global ikke rigtigt fungerer for mig..?
Avatar billede barklund Nybegynder
29. marts 2005 - 22:22 #20
Er speaker et movieclip - og ikke et graphics symbol?
Avatar billede plastic.gangsta Nybegynder
29. marts 2005 - 22:33 #21
movieclip
Avatar billede plastic.gangsta Nybegynder
29. marts 2005 - 22:47 #22
jeg har ligeledes lavet et andet movieclip som ligger på hovedtidslinjen som har to frames, i den ene er _global.jukebox="one"; og i den anden ="two", denne kan jeg ligeledes ikke trace ud.

Fejlene må simpelthen ligge i at trace og _global skal ligge i samme frame... Hvordan kan det være, går hele ideen så ikke væk med global?
Avatar billede barklund Nybegynder
29. marts 2005 - 22:48 #23
Debug videre - det fortsætter bare på samme måde. Lav et movieclip ved siden af, test om du kan lave variablen derinde, kopier noget af scriptet derover, se om det virker, kopier grafikken, se om det virker... Sådan er debugging :)
Avatar billede barklund Nybegynder
29. marts 2005 - 22:50 #24
Hvordan laver du dit script? Jeg mistænker at du kalder trace før du sætter din globale variabel - hvorfor det selfølgelig ikke vil virke!

Hvis du både skriver trace på hovedtidslinjen og skriver trace inden du sætter din variabel - hvilken kommer så først? Hvis den fra hovedtidslinjen kommer først, så er det jo forklaringen - det er da åbenlyst?
Avatar billede plastic.gangsta Nybegynder
29. marts 2005 - 22:54 #25
Kanont, der var forklaringen så - men hvordan undgår jeg så dette.. Kan jeg fra hovedtidslinjen sikre at variablen er blevet kaldt, inden jeg kalder musikken.??
Avatar billede barklund Nybegynder
29. marts 2005 - 22:58 #26
Altså helt i starten er lyden vel defineret til at være enten slået fra eller til? Det er vel ikke random fra gang til gang? Første gang behøver du da ikke teste den - der er den jo startværdien? Sidenhen vil den have en værdi - og så kan du teste for den.

Altså hvis den er undefined, så er den startværdien (som du kender).
Avatar billede plastic.gangsta Nybegynder
29. marts 2005 - 23:14 #27
min film har i frame 1 (som man kun ser engang) en mulighed for at vælge tre forskellige baggrunde (2,3,4) og ligegyldigt hvilken en man vælger skal den afspille lyden. Men når man så er under en bestemt frame, så kan man skifte til de andre baggrunde.. Så f.eks. hvis man starter i frame 2 og slukker lyden og går til frame 3 skal den ikke spille lyden... Men hvis man starter med at vælge frame 3 så skal den spille lyden..



if (_global.lydStatus == "ja"){
    var s = new Sound();
    s.onSoundComplete = function() {
        this.loadSound("sound/mall_1.mp3", true);
    }
    s.onSoundComplete();
    s.setVolume(60);
}

den if sætning skal først køres når variablen lydstatus er derfineret i asstwo.speaker. Kan man på nogen måde sikre at den først er defineret før man kalder

if (_global.lydStatus == "ja"){
    var s = new Sound();
    s.onSoundComplete = function() {
        this.loadSound("sound/mall_1.mp3", true);
    }
    s.onSoundComplete();
    s.setVolume(60);
}
Avatar billede barklund Nybegynder
29. marts 2005 - 23:21 #28
Altså du skal afspille lyden i alle situationer, hvor den ikke er "nej" (sådan kunne man jo bare omformulere det):

if (_global.lydStatus != "nej"){
    var s = new Sound();
    s.onSoundComplete = function() {
        this.loadSound("sound/mall_1.mp3", true);
    }
    s.onSoundComplete();
    s.setVolume(60);
}

--
Morten Barklund
Avatar billede plastic.gangsta Nybegynder
30. marts 2005 - 00:14 #29
ja, det er en mulighed - men den fucker stadigvæk lidt - nu har jeg lavet et alternativt setup. Nu har jeg lagt speakeren ud i frame 1, får jeg overhovedet kalder if (_global.lydStatus == "ja"), så de burde være deklareret før jeg spørg, og når jeg så laver den trace, siger den stadigvæk undefinded...
Avatar billede plastic.gangsta Nybegynder
30. marts 2005 - 00:20 #30
nu har jeg rokeret rundt og referet direkte til en ny variable _root.assthree.jukebox og deklareret under asthree var jukebox="ja"; og det fungerer. Men smid et svar, du har mere end fortjent dine point.. Mange tak for hjælpen
Avatar billede barklund Nybegynder
30. marts 2005 - 00:22 #31
Det er ret simpelt - flash kan kun alve en ting af gangen.

Når den skal initialisere alt script i din film så starter den med alle framescripts i den aktuelle frame i din scene, derefter alle framescripts i den aktuelle frames i det først placerede movieclip herunder og så videre indtil alle childmovieclip under det første movieclip. Og så videre med det næste movieclip, det næste til alle movieclips rekursivt er kaldt. De bliver ikke kaldt samtidig - et af gangen.

Og flash starter yderst - med hovedscenens script først.

Men hvorfor spørge mig - du kan jo teste det med traces. Bare smid en trace ind i hver frame og se, hvad der kommer først.

Og jeg kan ikke se, hvorfor versionen med at det modsatte ikke må være tilfældet - det er perfekt og logisk for mig!

Men hvis det virker, er det vel i orden!

--
Morten Barklund
Avatar billede plastic.gangsta Nybegynder
30. marts 2005 - 00:25 #32
grundet min generelle manglede forståelse for programmering, er hvad der er logisk for dig desværre det ikke for mig... men mange tak for hjælpen
Avatar billede barklund Nybegynder
30. marts 2005 - 00:28 #33
Invester lige i http://globe.dk/?action=detail&vare=FG227-7 - så kommer du lidt tættere på :)

Og tark for points.

--
Morten Barklund
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Politiets Efterretningstjeneste

Fullstack softwareudvikler i PET

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Capgemini Danmark A/S

AI Data Architect