webForumDet fria alternativet

Hjälp med actionscript

3 svar · 281 visningar · startad av westman

westmanMedlem sedan aug. 2004249 inlägg
#1

Gokväll,
jag håller på med en presentation i flash där jag nyligen lagt till bakgrundsmusik. För att göra övergångarna mjuka och fina så vill jag att musiken skall fade:as in och ut på olika ställen. Koden nedan har jag använt tidigare men då sköttes ljudet med knappar och det var endast 1 frame. Nu när jag lagt in koden i min nya flashfilm så fungerar det självklart inte... Hur skall jag göra? (Antar att jag behöver lägga in "höjningen" och "sänkningen" i loopar eller liknande, men hur gör jag det?)


myLoop = new Sound(myLoopMc);
myLoop.attachSound("myLoop01");
myLoopVolume=0; 
myLoop.setVolume(myLoopVolume);

this.onEnterFrame = function () { 
// 
// Fade In 
//
if (fadeIn01==1) {  
_root.myLoop.setVolume(myLoopVolume);  
myLoopVolume=myLoopVolume+5;

if (myLoopVolume>99) {
fadeIn01=0;
   } 
  } 
}

this.onEnterFrame = function () {
//
// Fade Out
//
if (fadeOut01==1) {  
_root.myLoop.setVolume(myLoopVolume);  myLoopVolume=myLoopVolume-5;

if (myLoopVolume<5) {  
_root.myLoop.stop("myLoop01");  
fadeOut01=0;
   }
 }
}

Detta lägger jag in på de ställen (de frames) som jag vill fade:a ut eller in:

// Fade In
fadeIn01=1
myLoop.start(0,999);

// Fade Out
fadeOut01=1

Tack på förhand!! :stud

mirandirMedlem sedan maj 2003750 inlägg
#2

Det fungerar inte därför att du tilldelar ju this.onEnterFrame 2ggr och då är det ju bara den sista (fadeOut) som gäller. ta och gör om dessa två till funktioner som tilldelar till this.onEnterFrame vid behov. Dessutom behöver du inte variablerna "fadeIn01" och "fadeOut01" använd "delete this.onEnterFrame;" istället.

Funktioner:

myLoop = new Sound(myLoopMc);
myLoop.attachSound("myLoop01");
myLoopVolume=0; 
myLoop.setVolume(myLoopVolume);

function fadeIn() 
{
    this.myLoop.start(0,999);
    this.onEnterFrame = function()
    { 
        // 
        // Fade In 
        //
        this.myLoop.setVolume(myLoopVolume);  
        myLoopVolume = myLoopVolume+5;

        if (myLoopVolume>99) 
            delete this.onEnterFrame;  
    } 
}

function fadeOut() 
{
    this.onEnterFrame = function()
    {
        //
        // Fade Out
        //
        _root.myLoop.setVolume(myLoopVolume);
        myLoopVolume=myLoopVolume-5;

        if (myLoopVolume<5) {  
            _root.myLoop.stop("myLoop01");  
            delete this.onEnterFrame;
       }
    }
}

Fade In:

fadeIn();

fadeOut

fadeOut();

/Mirandir

westmanMedlem sedan aug. 2004249 inlägg
#3

hmm, d funkade inte heller. Den fade:ar inte, den stoppar musiken tvärt.

westmanMedlem sedan aug. 2004249 inlägg
#4

vad är det för fel på koden, kan ngn sträcka ut en hjälpande hand??

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)