webForumDet fria alternativet

"spara" mute inställning.

Flash

2 svar · 529 visningar · startad av ConnyFox

Medlem sedan aug. 20011 087 inlägg
Frågan#1

Har en musikström och en mute knapp på min flash sida.
jag vill att om man klickar på mute så skall inställningen sparas så att nästa gång man går in på den sidan så startar inte låten igen utan att man trycker på play knappen?

Detta borde gå att fixa?
Kan flash tolka t.ex asp sessions eller querystrings?

Finns något som heter local shared objects annars har jag sett men fattar inte hur man gör :)

all hjälp är välkommen!

Medlem sedan maj 2003750 inlägg
#2

SharedObjects är en typ av cookie som Flash använder och skulle rekomendera att du använder dem. Det är enklast.

Det första du skall göra är ju att skapa ditt SharedObject. Vilket man gör med metoden getLocal() istället för med det vanliga "new":

mySO = SharedObject.getLocal("mute");

"mute" är här namnet på den "cookie" som du vill spara. Denna cookie kommer att vara förknippad med just denna flashfilmen.

Metoden har även två "valfria" parametrar som dels anger sökväg till objektet och dels ifall objektet skall vara säkert, Vilket innebär att objektet bara kan nås av filmer som laddas via https). Slå upp metoden i actionscriptreferensen för mer information om dessa parametrar.

När du anropar getLocal så kollar Flash om det finns ett objekt med angivet namn på angivet ställe. Finns det det så laddas datan från det objektet in. Hittas inte objektet så skapas ett nytt.

Själva datan i objektet kommer man åt via objektets property "data" Så om du skall spara någonting i objektet så använer du kod som följande:

mySO.data.isMute = true;

Dock lagras inte datan på hårddisken direkt utan det sker först när objektet stängs, antingen genom att flashfilen stängs eller att man anropar metoden close(), eller man anropar objektets metod flush().

Det är som sagt inget måste att anropa flush() för att såpara datan. Det är bara om det kan finnas mer än en flashfilm öppen samtidigt som refererar till data i objektet. Eller att man verkligen vill säkerställa att datan finns kvar vid eventuell dator-/player-krash.

Så för att koppla ihop det hela med ditt problem så inled med att skapa ett objekt som ovan. I koden för din muteknapp så lägger du in om mute är på eller av. Tex som jag gjort i exemplet ovan där jag sätter isMute = true. Sedan så i början av din film. T.ex direkt efter det att du öppnat ditt SharedObject så kolla om isMute är true eller false. Är den false så spela ljudet som vanligt.

T.ex:

// Skapar en referens till SharedObject "mute"
mySO = SharedObject.getLocal("mute")

// Kollar om mute är av eller på...
if(!mySO.data.isMute)
{
   // Ingen mute! Spela ljudet som vanligt.
} else{
  // Mute är på.
}

/Mirandir

Medlem sedan aug. 20011 087 inlägg
#3

Jag är ganska ny på detta så det är nog därför jag inte får det att fungera..

Såhär ser mit action layer ut

x = new Sound();
x.attachSound("music");

// Skapar en referens till SharedObject "mute"
mySO = SharedObject.getLocal("mute")

// Kollar om mute är av eller på...
if(!mySO.data.isMute)
{
   // Ingen mute! Spela ljudet som vanligt.
   musicplay = true;
} else{
  // Mute är på.
  musicplay = false;
}

Och såhär ser min muteknapp ut.

on (release) {
	if (musicplay == true) {
x.setVolume(0);
mySO = SharedObject.getLocal("mute");
mySO.data.isMute = true;
mySO.flush()
musicplay = false
	} else {
x.setVolume(100);
musicplay = true
mySO = SharedObject.getLocal("mute");
mySO.data.isMute = false;
mySO.flush()
	}
}

tilläggas skall är att lagret där låten ligger så är det på sync Start/loop.
Jag vet inte om detta har något med saken att göra men jag misstänker att ljudet startas där oavsett vad muteknappen och cookien säger :)
Help? ;)

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)