Avatar billede donleavy Nybegynder
02. oktober 2003 - 16:38 Der er 4 kommentarer og
1 løsning

knap til ændring af lyde i Flash

Hej alle.

Er der nogen kloge hoveder derude, der kan give mig et hint om, hvordan man laver en knap i FLASH, der ændrer en lyd, der er assigned til en bestemt keyframe, til en anden lyd?

Eksempel: En film viser en mand der går. Hver gang hans fod rammer jorden, siger den en lyd. Brugeren skal så kunne vælge en ny lyd fra en liste, som bliver sat i stedet for den oprindelige, så hver gang hans fod rammer jorden, siger det f. eks. "kvæk" i stedet for...

Jeg håber, I har et forslag!

/Anders
Avatar billede pyroman Nybegynder
02. oktober 2003 - 18:36 #1
Jep du skal ikke lægge lydende i et keyframe men i stedet bruge actionscript til at lave såkaldte lyd-objecter som du kan lave mange sjove ting med... Her er lidt om hvordan du så gør det:

1. Allerførst importerer du alle de lyde du skal bruge ind i dit library. Her højreklikker du på hver af dem og vælger "linkage". Her sætter du hak ved "Export for actionscript" og giver lyden et navn i feltet (evt bare det der står der).

2. I første frame i din hovedtidslinie opretter du alle lyd-objecterne ved at indsætte og ændre følgende kode:

minLyd1 = new Sound();
minLyd1.attachSound("navn1");
minLyd2 = new Sound();
minLyd2.attachSound("navn2");
//osv med alle de andre lyde

3. Nu kan du afspille og stoppe alle dine lyde når du har brug for det ved at indsætte følgende kode i det pågældende keyframe:

minLyd.stop();
minLyd.start(0,1);

Det burde egentlig være det. Man kan dog ændre punkt 2 på mange forskellige måder, fx til kun at have én fodlyd og så veshæfte den valgte lyd til dette lyd-objekt... Kan godt forklare lidt mere hvis du er interesseret...

/Filip
Avatar billede donleavy Nybegynder
05. oktober 2003 - 16:32 #2
tak for svaret. Jeg skal lige prøve det af, før du får point.
Jeg kan garanteret godt bruge lidt mere hjælp, hvis du får tid. Meningen er, at den der bruger flash-siden selv kan bestemme lyden til fodtrinet - og altså kunne ændre den, så der kommer en anden lyd i stedet...
Avatar billede donleavy Nybegynder
06. oktober 2003 - 12:31 #3
jeg har nu importeret 2 lydfiler, og indtil videre sat den ene til at blive afspillet på 3 forskellige frames. Dernæst har jeg lavet en knap, som loader lyden, og den bliver nu afspillet på de 3 frames.

Men hvordan unloader man lyden, så den ikke bliver afspillet mere ?
Avatar billede pyroman Nybegynder
07. oktober 2003 - 08:48 #4
Du kan stoppe lyden ved at bruge:

minLyd.stop();

Og direkte "unloade" lyden ved at bruge:
minLyd.delete();
...som du dog sjældent vil bruge, da det jo altid er rart at have lyden til senere brug.
Du kan bare fyre løs, hvis du har flere spørgsmål... :)
Avatar billede donleavy Nybegynder
07. oktober 2003 - 16:08 #5
jeg har gjort som du sagde i de første to punkter. Derefter har jeg sat dette ind på keyframe 15:

// Play Sound Behavior
    _global.Behaviors.Sound.bass.start(0,1);
    // End Play Sound Behavior

Det vil sige, at filmen, som looper, siger bass-lyden hver gang, den når til frame 15, når man først - som bruger - har trykket på den ene knap, jeg har lavet, som indeholder følgende kode:

on (release) {

    //Play Internal Sound Behavior
    if(_global.Behaviors == null)_global.Behaviors = {};
    if(_global.Behaviors.Sound == null)_global.Behaviors.Sound = {};
    if(typeof this.createEmptyMovieClip == 'undefined'){
        this._parent.createEmptyMovieClip('BS_bass',new Date().getTime()-(Math.floor((new Date().getTime()) /10000)*10000) );
        _global.Behaviors.Sound.bass = new Sound(this._parent.BS_bass);
    } else {
        this.createEmptyMovieClip('_bass_',new Date().getTime()-(Math.floor((new Date().getTime()) /10000)*10000) );
        _global.Behaviors.Sound.bass = new Sound(this.BS_bass);
    }
    _global.Behaviors.Sound.bass.attachSound("bass");
    if (true) {
        _global.Behaviors.Sound.bass.start(0,1);
    }
    //End Behavior

Så har jeg lavet en knap, som skulle kunne få lyden til at stoppe, selv om filmen bliver ved med at loope. Den indeholder følgende:

on (release) {

    //Stop Sound Behavior
    _global.Behaviors.Sound.bass.stop();

PROBLEMET er bare, at lyden bliver ved med at komme, når filmen når til frame 15. Den forsvinder altså ikke...derfor tænkte jeg, man måske kunne unloade den på samme måde som man loadede den...

Ville det kunne lade sig gøre, hvis jeg laver lyden som en lille SWF-fil først og så bruger load / unload ?

- Anyway, tak for hjælp indtil videre. Her er points! Jeg håber, du kan løse problemet for mig!!

/Anders
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