DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > Flash
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

Flash Flash, actionscript

Odgovori
 
Alati teme Način prikaza
Staro 12. 08. 2007.   #1
rangy
novi član
 
Datum učlanjenja: 12.08.2007
Poruke: 6
Hvala: 0
0 "Hvala" u 0 poruka
rangy is on a distinguished road
Default Pucanje while() u busy wait-u

Pozdrav,

Imam sledeci problem. Hocu da napravim da se 5 pesama pustaju jedna za drugom. Probao sam sa sledecim kodom.

Kôd:
var pesma:Sound = new Sound();
playing = false;

pustiPesmu_mc.onRelease = function () {	
	for (i = 0; i<5; i++){	
		while (playing) {}		
		pesma.attachSound("sound"+i);
		playing = true;	
		pesma.start();	
		
	}
}

pesma.onSoundComplete = function () {
	playing = false;	
}
Medjutim, Flash je puko na while-u (u ovom slucaju sam proba da resim sa tzv. busy-wait-om)

Dakle pitanje je zasto se "while (playing) {}" blokira iako bi onSoundComplete trebao da je odblokira?


Dalje sam preradio kod i proradio je:

Kôd:
var pesma:Sound = new Sound();
playing = false;

pustiPesmu_mc.onRelease = function () {	
	i = 0;	
	pesma.attachSound("sound"+i);		
	pesma.start();		

}

pesma.onSoundComplete = function () {	
	if (++i < 5) {
		pesma.attachSound("sound"+ i);
		pesma.start();
	}
}
Da li neko mozda zna neki bolji nacin, ovo mi izgleda malo "na silu"?
rangy je offline   Odgovorite uz citat
Staro 12. 08. 2007.   #2
MrSteel
Moderator
Professional
 
Avatar MrSteel
 
Datum učlanjenja: 26.04.2007
Poruke: 350
Hvala: 0
4 "Hvala" u 4 poruka
MrSteel is on a distinguished road
Default

while ti se zapucava zato sto non stop ides u krug u loop-u
takodje, greska je for i attachovanje svih pesama itd.

flash je frame based tako da se izvrsi sve to ima na frejmu pa tek onda prelazi na sledeci a tebi nikad nece preci na sledeci, odn. oce za 3 minuta koliko flash ne moze da ceka na jednom frejmu ;

dakle

razbi to na 2-3 funkcije
nextSong ce vratiti sledecu pesmu vodeci racuna o ukupnom broju pesama
playSong treba da pusti odredjenu pesmu
onSoundComplete ce da izbaci event kada se pesma zavrsi i pozvace sledecu da se pusta

za kliktanje mc_play ce da pusti trenutnu pesmu
mc_next sledecu
a mc_prev proslu

Kôd:
var pesma: Sound = new Sound();

var totalSongs : Number = 5; 
var currSong : Number = 0;

function nextSong(currSong:Number):Number {

    var tempNumber : Number = currSong+1;
    if (currSong >= totalSongs) {
         tempNumber = 0;
    }
    return tempNumber;
}

function prevSong(currSong:Number):Number {

    var tempNumber : Number = currSong-1;
    if (currSong < 0) {
         tempNumber = totalSongs-1;
    }
    return tempNumber;
}

function playSong(song:Number):Void {

    pustis pesmu sa brojem song koristeci sound.attachSound // to znas izgleda treba da vodis racuna da prethodnu unistis 

}

pesma.onSoundComplete == function() {

    playSong(nextSong(currSong));

}



mc_play.onRelease = function() {
    playSong(currSong); 
}

mc_next.onRelease = function() {
    playSong(nextSong(currSong));
}

mc_prev.onRelease = function() {
    playSong(prevSong(currSong));
}

Poslednja izmena od MrSteel : 12. 08. 2007. u 20:30.
MrSteel je offline   Odgovorite uz citat
Staro 12. 08. 2007.   #3
rangy
novi član
 
Datum učlanjenja: 12.08.2007
Poruke: 6
Hvala: 0
0 "Hvala" u 0 poruka
rangy is on a distinguished road
Default

Hvala na odgovoru..mada i dalje mi nije jasno sledece:

Citat:
flash je frame based tako da se izvrsi sve to ima na frejmu pa tek onda prelazi na sledeci a tebi nikad nece preci na sledeci, odn. oce za 3 minuta koliko flash ne moze da ceka na jednom frejmu
Medjutim ovde radim sve na jednom frameu..ovde si pretpostavljam mislio da pesma traje recimo 3min..ali sta ako imam neki zvuk koji traje 2s..while() se i dalje blokira umesto da onSoundComplete to lepo odblokira

Evo jedan slican primer

Kôd:
pres = false;

dugme_mc.onPress = function () {
	pres = true;
}

while(!pres){}
Ali i ovde se zakuca iako bi onPress trebao da odblokira while petlju. Izgleda da je kod AS-a nemoguce napraviti busy wait jer se while() blokira nedozvoljavajuci prekid od strane usera. Zar nije malo bezveze sto AS2/AS3 nema koncept niti (threads),zastitu kriticne sekcije, prekide..
rangy je offline   Odgovorite uz citat
Staro 12. 08. 2007.   #4
MrSteel
Moderator
Professional
 
Avatar MrSteel
 
Datum učlanjenja: 26.04.2007
Poruke: 350
Hvala: 0
4 "Hvala" u 4 poruka
MrSteel is on a distinguished road
Default

mogu ti pomoci oko pitanja za flash
granice postoje nazalost ali nisu uopste tako neverovatne i moguce ih je sasvim lepo zaobici u vecini slucajeva

flash nije java i tu mozemo zavrsiti pricu oko ozbiljnog programiranja
mozda u nekim sledecim verzijama za sada ima i precih stvari

dakle, bitno je sad kad vec ulazis u svet flash-a da skapiras koja su ogranicenja
na "silu" kao sto ti rece ne moze

to sto si ti pokusao da uradis je svakako po meni losa tehnika bilo koji programski jezik da koristis,
eventi su stvarno za programiranje melem, pozoves pusti sledecu pesmu kada se zavrsi trenutna
zato i postoji onSoundComplete, nikakav wait ti onda ne treba

e sad
ako nesto zelis stalno da proveravas
postoji nesto sto se zove
onEnterFrame
pogledaj u helpu
sve sto stavis u recimo donji pr, se izvrsava na svakom frejmu

Kôd:
mc.onEnterFrame = function() {
  
   if (playing) {
       
   } else {

   }

}
sve dok ne uradis
Kôd:
delete mc.onEnterFrame;
ali to je samo za opravdane koncepte i potrebe jer nema potrebe opterecivati procesor
flash je veoma zahtevna VM, jer je prosto takva ali popravlja se, zato treba to da imas na umu kada radis u flashu

baci jos neka pitanja ako te zanima nesto

Poslednja izmena od MrSteel : 12. 08. 2007. u 22:17.
MrSteel je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum


Vreme je GMT +2. Trenutno vreme je 21:44.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.