| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 58
| Sound Vorlauf Problem
Hallöchen, da im Sound-Forum scheinbar niemand eine Problemlösung für mich hat, probier ich es hier ;-) Ich habe einen Soundplayer gemacht, habe allerdings ein Problem mit dem Vorlaufbutton. Folgendes Szenario: Ich spiele einen Sound ab und halte dabei meinen Vorlaufbutton solange gedrückt, bis der Sound vorbei ist. Wenn ich danach wieder auf Play drücke, fängt der Sound nicht wieder von vorne an zu spielen. Ich brauche also ein Skript das Folgendes macht, habe aber keinen Schimmer wie das aussieht: meinVorlaufbutton.onRelease = function() { if (meinSoundistzuEndegespielt){ myMusic.isPlaying = false; }; Denn durch meine Variable myMusic.isPlaying = false, fängt mein Sound erneut an zu spielen, wenn ich auf den Play-Button drücke. Zur Orientierung ist hier mal mein gesamtes Playerskript, samt des Aufrufes der Playerfunktionen für einen Sound: /////////////////////// Soundplayer var myMusic = new Sound(); myMusic.start(); myMusic.restartSound = false; myMusic.isPlaying = false; myMusic.isStopped = true; var REV = 0; var FF = 0; var myMusicPosition = 0; myMusic.onSoundComplete = function() { myMusic.isplaying = false; myMusic.isStopped = true; myMusic.restartSound = false; } play_btn.onPress = function() { /// Play if (myMusic.isPlaying == false) { if (myMusic.restartSound == true) { myMusicPosition =_root.myMusic.position/1000; myMusic.start(myMusicPosition); myMusic.restartSound = false; myMusic.isPlaying =true; } else if (myMusic.isPlaying == false) { myMusic.start(); myMusic.isPlaying = true; myMusic.isStopped = false;} }}; stop_btn.onPress = function() { /// Stop myMusic.isStopped = true; myMusic.isPlaying = false; myMusic.restartSound = false; myMusic.stop(); myMusicPosition = 0; }; pause_btn.onPress = function() { /// Pause myMusic.isPlaying = false; myMusic.restartSound = true; myMusicPosition = _root.myMusic.position/1000; _root.myMusic.stop(); if (myMusic.isStopped == true) { myMusicPosition = 0; myMusic.restartSound = false; } }; revBtn.onPress = function() { /// Rücklauf REV = 1; myMusicPosition = _root.myMusic.position/1000; }; revBtn.onRelease = function() { REV = 0; }; revBtn.onReleaseOutside = function() { REV = 0; }; FFBtn.onPress = function() { /// Vorlauf FF = 1; myMusicPosition = _root.myMusic.position/1000; }; FFBtn.onRelease = function() { FF = 0; }; FFBtn.onReleaseOutside = function() { FF = 0; }; this.onEnterFrame = function() { if (REV == 1 && myMusicPosition>0) { _root.myMusic.stop(); myMusicPosition = myMusicPosition-.8; _root.myMusic.start(myMusicPosition); } if (FF == 1 && myMusic.position<myMusic.duration) { _root.myMusic.stop(); myMusicPosition = myMusicPosition+.8; _root.myMusic.start(myMusicPosition); } }; /////////////////////////////// Track 1 ch8_tr1_btn.onPress = function() { myMusic.stop(); myMusic.attachSound("bc"); myMusic.start(); trackMarker(73.5,161.3); //// für transparente Fläche hinter Button myMusic.isPlaying = true; myMusic.isStopped = false; }; Vielen Dank! |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..da im Sound-Forum scheinbar niemand eine Problemlösung für mich hat.." dann könnte es eventuell auch an der form deiner präsentation liegen? das listing kann so kein mensch lesen. bitte einmal links unten auf vB_Code klicken! und warum müssen wir eine fla nachbauen, nur um dein problem lösen zu können? bitte eine demo.fla hochladen. danke
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 58
|
ok, hier die demo flash. es muß doch niemand eine .fla nachbauen, ich dachte nur, vielleicht sieht jemand sofort den fehler. in der .fla fehlt allerdings der sound, damit die datei nicht zu groß wird zwecks upload. den müßte man noch einsetzen und bei Exportnamen ´test´benennen. Vielen Dank! |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
nee, ohne mal was probieren zu können ... wir sind doch keine superhirne ;-) pack da mal eine null rein, dann geht's: Code: } else if (myMusic.isPlaying == false) {
myMusic.start(0); // <--
myMusic.isPlaying = true;
myMusic.isStopped = false;
}
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 58
|
habe das jetzt so gemacht und es funktioniert immer noch nicht ;-( probier mal den vorlaufbutton erst zu releasen wenn der sound zu Ende vorgespult ist und dann drücke play ... es passiert gar nix (man muß erst wieder stop drücken, ehe sich der song über play starten läßt). |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
".. man muß erst wieder stop drücken.." davon bin ich ausgegangen, das man das machen muss .. myMusic.onSoundComplete wird wohl nicht aufgerufen, wenn man mit >> über das ende geht. Code: this.onEnterFrame = function() {
if (myMusicPosition) {
this.speed = .8;
// ende
if (myMusicPosition*1000>myMusic.duration) {
stop_btn.onPress();
REV = 0;
FF = 0;
return;
}
// Rewind
if (REV) {
myMusic.stop();
myMusicPosition -= this.speed;
myMusic.start(myMusicPosition);
}
// Fast Forward
if (FF) {
myMusic.stop();
myMusicPosition += this.speed;
myMusic.start(myMusicPosition);
}
}
};
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #7 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
habe das ding mal entrümpelt und auf fordermann gebracht ;-) "test" fehlt hier natürlich auch.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 58
|
Hi, ich hab mich eben nochmal schnell mit dem Player auseinandergesetzt (die Neugier ;-). Funzt gut, nur zwei kleine Sachen: 1.)Wenn Du den Play Button mehrmals drückt, fängt der Sound immer wieder erneut an und überlagert sich. 2.) Wenn Du einen Song stoppst, dann Pause drückst und dann Play, fängt der Sound nicht bei 0 an, sondern bei der letzten gemerkten Pausemarke. Dein Skript ist mir sympathischer als meines. Ist schon erstaunlich mit wie viel weniger Skript man fast das genau selbe machen kann. |
| | |
| | #10 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
es geht nicht um das kürzere, sondern um unnötiges zu entfernen. so sollte es z.b. besser sein ein onEnterFrame zu killen, als mit einem flag zu kennzeichnen, dass das onEnterFrame nichts tun soll. und möglichst nichts auf _root legen. das sollte sich alles in einem objekt (classe) abspielen. jetzt sollte alles gehen? einen kleinen trick habe ich benutzen (me_pos += 0.01 , da man position nicht setzen kann.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Nov 2005
Beiträge: 58
|
hey, vielen dank! ich bin ein flash anfänger und fummel mich da autodidaktisch rein, deswegen sorry für so manch unverständnis meinerseits mit deiner neuen variante sind die vorher genannten probleme wunderbar gelöst, doch leider tauchen jetzt wieder neue auf: der vor- bzw. rücklauf nach dem man pause gedrückt hat funktioniert nicht mehr bei meinem ursprungsskript ging das ständig so hin und her - hier problem weg, da ein neues - es ist verflixt. hast du eine idee, wie man das vor- bzw. rücklauf problem lösen kann? |
| | |
| | #12 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..man pause gedrückt hat funktioniert nicht mehr.." wenn man pausiert, dann wird da nichts bewegt. ist ja wie fahren mit angezogener handbremse ;-) das problem ist ein fehlender setPosition- befehl. da start() das auch nicht macht -zumindestens nicht direkt- habe ich etwas nachgeholfen. der stopp-button startet jetzt den sound bei 0 und stoppt ihn nach 100 millisekunden wieder. kürzere zeiten hatten nicht gelangt um die position auf null zu setzen. eventuell diese zeit noch etwas erhöhen. und das jetzt der start nicht bei null, sondern nach 0,1 sekunde beginnt.. naja ;-) jetzt muss aber gut sein. Code: // ----- Soundplayer -----
this.createEmptyMovieClip("sound_mc", this.getNextHighestDepth());
this.sound_mc.fInit = function(sound_id, _btns) {
with (this) {
this.me = this;
this.stopp_btn = _btns[0];
this.start_btn = _btns[1];
this.rever_btn = _btns[2];
this.forws_btn = _btns[3];
this.pause_btn = _btns[4];
//
stopp_btn.onPress = function() {
delete _sound.onSoundComplete;
_ff = _pos=0;
_sound.stop();
_sound.start(0);
_sI = setInterval(function (me) {
clearInterval(me._sI);
me._sound.stop();
}, 100, me);
};
pause_btn.onPress = function() {
_ff=0, _pos=_sound.position;
_sound.stop();
};
start_btn.onPress = function() {
_sound.stop();
_sound.start(_pos/1000);
_sound.onSoundComplete = stopp_btn.onPress;
};
rever_btn.onPress = function() {
_ff=-1, _pos=_sound.position;
me.onEnterFrame = fEnter;
};
forws_btn.onPress = function() {
_ff=1, _pos=_sound.position;
me.onEnterFrame = fEnter;
};
rever_btn.onRelease = rever_btn.onReleaseOutside=forws_btn.onRelease=forws_btn.onReleaseOutside=function () {
_ff = 0;
delete me.onEnterFrame;
};
this.fEnter = function() {
if (_pos && _ff) {
_sound.stop();
_pos += _ff*_ff_speed;
_pos<0 || _pos>=_sound.duration ? stopp_btn.onPress() : _sound.start(_pos/1000);
}
};
//
this._ff_speed = 2000;
this._sI = this._ff=this._pos=0;
this._sound.stop();
this._sound = new Sound(this);
this._sound.attachSound(sound_id);
this._sound.setVolume(100);
this.start_btn.onPress();
}
};
//
// ----- Track 1 -----
_btns = [stop_btn, start_btn, rev_btn, FF_btn, pause_btn];
ch4_tr1_btn.onRelease = function() {
sound_mc.fInit("test", _btns);
};
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |