Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-07-2004, 10:23   #1 (permalink)
Self-proclaimed Genius
 
Benutzerbild von genesys
 
Registriert seit: Jul 2002
Ort: schweiz
Beiträge: 282
Question onSoundComplete aussetzer - wie beheben??

Ich hab nen Backgroundsound, der aus zwei Teilen besteht. einem Anfang und einem Endlos loop.
Der Endlosloop ist total sauber und man höhrt den übergang nicht.
ich starte den endlosloop so:

start.onSoundComplete = function() {
loop.start(0,9999);
}

nun gibts aber beim übergang von start zu loop nen kleinen unsauberen unterbruch, welcher etwa ein Frame lang dauert. Wie kann man das beheben??
Kann man das ganze noch anders machen? onSoundComplete is ja erst ab MX - wie hat man das vorher in Flash5 gemacht??

Danke für die Hilfe!
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt - Albert Einstein
genesys ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:28   #2 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
du könntest mal versuchen die sound.position abzufragen und kurz bevor sie == der sound.duration ist, den endlosloop starten...
weiß aber nicht ob es vielleicht auch einfacher möglich ist...

Robert
pape ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:34   #3 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
Ich könnte mir vorstellen, dass folgedes in F5 funtzt:

PHP-Code:
mySound = new Sound();
mySound.attachSound("ID");
mySound.start(0999); //einfach hier die Loopanzahl erhöhen, ohne onSoundComplete 
Irgendwie ist das doch sinnlos immer wenn ein Loop zu ende ist 999 zu starten. Wenn dann würde ich das so hinschreiben:

PHP-Code:
mySound = new Sound();
mySound.attachSound("ID");
mySound.start(01);

mySound.onSoundComplete = function() {
mySound.start(01); //immer wieder ein Loop abspielen

__________________
www.johannes-erhardt.com | blog | xing me baby

Geändert von FLASHStyler (23-07-2004 um 10:36 Uhr)
FLASHStyler ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:35   #4 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
es geht glaube ich darum, dass es zwei sounds gibt, und zunächst der erste gespielt wird und dann der 2 endlos geloopt wird, da aber ne lücke zwichen den beiden sounds entsteht!
und nun gilt ers diese zu vermeiden...oder?

sonst wäre es in der Tat etwas sinnlos^^

ja muss ja.. (vielleicht mal nen bisl genauer hinschauen @ flashstyler ):

ActionScript:
  1. start.onSoundComplete = function() {//soundobj: start
  2. loop.start(0,9999);                        //soundobj: loop
  3. }

Geändert von pape (23-07-2004 um 10:39 Uhr)
pape ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:41   #5 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
Dann entweder mit zwei soundobjekten arbeiten (dafür gibts hier ein Tutorial) oder vielleicht folgendes:

PHP-Code:
mySound = new Sound();
mySound.attachSound("ID");
mySound.start(01);

mySound.onSoundComplete = function() {
mySound.stopAllSounds();
mySound.attachSound("ID");
delete this.onSoundComplete;
}

/* oder Flash 5 dann mit Duration u. Position Abfrage */ 
__________________
www.johannes-erhardt.com | blog | xing me baby
FLASHStyler ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:43   #6 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
immernoch @ flashstyler: genauer hinschauen! sry...

er arbeitet bereits mit 2 soundobjekten!

da entsteht beim übergang von 1(start) nach 2(loop) aber ne pause die etwa einen Frame lang ist... und die frage ist halt, wie man die unterbinden kann...

so long
Robert
pape ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:45   #7 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
Zitat:
Zitat von pape
ActionScript:
  1. start.onSoundComplete = function() {//soundobj: start
  2. loop.start(0,9999);                        //soundobj: loop
  3. }

Dann musste vorher den anderen Loop attachen. Wenn das so da steht, dann gilt das was ich oben geschrieben habe!

Edit: Mit zwei Soundobjekten meine ich zwei nicht Sounddateien, sondern zwei soundbjekte in folgendem Sinne:

SoundOne = new Sound();
SoundTwo = new Sound();
__________________
www.johannes-erhardt.com | blog | xing me baby

Geändert von FLASHStyler (23-07-2004 um 10:49 Uhr)
FLASHStyler ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:51   #8 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
jo!

aber ich denke, dass das nicht sein ganzes script ist.. dann würde er nämlich nix hören... und auch beim soundobj "loop" muss er den sound schon vorher attached haben, weil er sonst auch nach der kleinen pause nix hören würde..

es funktioniert ja quasi alles.. nur halt die lücke,..

Geändert von pape (23-07-2004 um 10:52 Uhr)
pape ist offline   Mit Zitat antworten
Alt 23-07-2004, 10:56   #9 (permalink)
FlashLove@FirstSight
 
Benutzerbild von FLASHStyler
 
Registriert seit: Feb 2003
Beiträge: 2.460
Ja, dann wäre es mal schön wenn er das Ding mal zum Download bereit stellen würde.
__________________
www.johannes-erhardt.com | blog | xing me baby
FLASHStyler ist offline   Mit Zitat antworten
Alt 23-07-2004, 11:07   #10 (permalink)
Self-proclaimed Genius
 
Benutzerbild von genesys
 
Registriert seit: Jul 2002
Ort: schweiz
Beiträge: 282
O_o

also hier das ganze script *g*:

this.createEmptyMovieClip("startsound",1);
this.createEmptyMovieClip("loopsound",2);
start=new Sound(startsound);
loop=new Sound(loopsound);
start.attachSound("start");
loop.attachSound("loop");
start.onSoundComplete = function(){
loop.start(0,1000);
}
start.start();

Ich gebs zu, der name "start" ist vielleicht etwas verwirend gewählt . . .
janu . . .

Wie würde das mit der positionsabfrage genau funktionieren?? aber das ist dann nicht mehr sehr dynamisch oder? also ich müsste im voraus schon genau wissen, wie lange der sound ist?
ausserdem braucht das wieder in jedem frame ne abfrage die cpu leistung benötigt und ich muss so viele unnötige abfragen wie möglich vermeiden . . .
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt - Albert Einstein
genesys ist offline   Mit Zitat antworten
Alt 23-07-2004, 11:19   #11 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
Zitat:
Ich gebs zu, der name "start" ist vielleicht etwas verwirend gewählt . . .
janu . . .

dasist nicht verwirrend, dass ist richtig sch*** sogar, du nimmst als varname ein reserviertes wort, dass zu allem überfluss auch noch ein befehl des objektes ist, dem du das zugewiesen hast...

KEINE RESERVIERTEN NAMEN!

was denkt ihr, warum das so ist?

weil fehler auftreten könnten...oder?!

wenn du das geändert hast, kann man weiter sehen


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 23-07-2004, 11:22   #12 (permalink)
Self-proclaimed Genius
 
Benutzerbild von genesys
 
Registriert seit: Jul 2002
Ort: schweiz
Beiträge: 282
nene - daran liegts nit - des wird nur als befehl gewertet, wenns nach nem . kommt ^^

//edit - aber bitte - um deine hilfe in anspruch zu nehmen - jetzt heissts anfang
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt - Albert Einstein
genesys ist offline   Mit Zitat antworten
Alt 23-07-2004, 11:23   #13 (permalink)
_Thomas_
Gast
 
Beiträge: n/a
hi

wenn die loops den gleichen takt haben oder die gleiche länge, dann kannst du einfach beide sounds simultan starten und den einen oder anderen über

ActionScript:
  1. soundObj.setVolume(0)
  2. // bzw
  3. soundObj.setVolume(100)

..hinzuschalten oder auch ausschalten.
da ist es auf jeden fall eher gewährleistet, daß die sounds auch tight am grundrythmus laufen.

gruß,
Tante Amanda
  Mit Zitat antworten
Alt 23-07-2004, 11:23   #14 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
ne du brauchst nicht vorher schon zu wossen wie lang der sound ist, weil du mit deinsound.duration die sound länge in millisec abfragen kannst.
versuch mal in etwa das:
ActionScript:
  1. this.createEmptyMovieClip("startsound",1);
  2. this.createEmptyMovieClip("loopsound",2);
  3. anfang=new Sound(startsound);
  4. loop=new Sound(loopsound);
  5. anfang.attachSound("start");
  6. loop.attachSound("loop");
  7.  
  8. if (anfang.position >= anfang.duration-20) {//die 20 musste ausprobieren bei
  9. //welcher zahl loop im richtigen Moment startet...
  10.     loop.start(0,1000);
  11. }
  12. anfang.start();

musst halt noch ausprobieren wann der sound loop gestartet werden muss um nicht zufrüh, bzw. zuspät(>pause) anfängt

edit: start in anfang geändert..wo er recht hat hatter recht

Geändert von pape (23-07-2004 um 11:27 Uhr)
pape ist offline   Mit Zitat antworten
Alt 23-07-2004, 11:25   #15 (permalink)
Self-proclaimed Genius
 
Benutzerbild von genesys
 
Registriert seit: Jul 2002
Ort: schweiz
Beiträge: 282
dann startet der zweite sound aber nicht dann wenn er soll?? der witz ist eben, dass das genau zusammenpasst . . .
der anfang ist halt der anfang vom lied - und loop ist das, wo nach dem anfang im lied kommt bis zu der stelle, wo man zurückloopen kann ohne dass es auffällt
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt - Albert Einstein
genesys ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele