Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-07-2004, 12:37   #1 (permalink)
Neuer User
 
Benutzerbild von lolosi
 
Registriert seit: Oct 2003
Ort: ecudador
Beiträge: 59
load sound

hallo alle zusammen,

ich habe folgendes script, indem zwei buttons
sound abspielen sollen. diese werden erst aktiv,
wenn der sound geladen ist
auf dem rechner funktionert das, nur auf
dem server nicht. wieso?


Code:
if (mySound1.getBytesLoaded() == mySound1.getBytesTotal() ) {
    text1 = "play";
    _root.but.enabled = true;
} else {
    text1 = "loading";
    _root.but.enabled = false;
}
if (mySound2.getBytesLoaded() == mySound2.getBytesTotal() ) {
    text2 = "play";
    _root.but2.enabled = true;
} else {
    text2 = "loading";
    _root.but2.enabled = false;
}
besten dank!
lolosi ist offline   Mit Zitat antworten
Alt 28-07-2004, 13:08   #2 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Lokal ist der Sound schneller geladen als im Netz !
Es wird IF abgefragt und der Sound ist nicht da => ergo else !

Ich würde einen Preloader dafür verwenden !
Also ein onEnterFrame vor der IF.
Und wenn geladen, dann delete onEnterFrame
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 28-07-2004, 16:31   #3 (permalink)
Neuer User
 
Benutzerbild von lolosi
 
Registriert seit: Oct 2003
Ort: ecudador
Beiträge: 59
danke, für die antwort.

es gibt noch ein problem, wenn ich
mit den veränderungen arbeite.

die else funktion funktioniert nicht.
hast du noche eine idee?



Code:
this.onEnterFrame = function() {
    if (mySound1.getBytesLoaded() == mySound1.getBytesTotal() ) {
        text1 = "play";
        _root.but.enabled = true;
    } else {
        text1 = "loading";
        _root.but.enabled = false;
    }
    if (mySound2.getBytesLoaded() == mySound2.getBytesTotal() ) {
        text2 = "play";
        _root.but2.enabled = true;
    } else {
        text2 = "loading";
        _root.but2.enabled = false;
    }
};
delete onEnterFrame;
stop();
lolosi ist offline   Mit Zitat antworten
Alt 29-07-2004, 00:06   #4 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
hi!
du deletest das onEnterFrame sofort wieder.. dass muss natürlich mit in den then teil...und du solltest auch das this. bei onEnter Frame mit angeben beim deleten (delete this.onEnterFrame) und du musst auch die sounds beide dabei beachten bevor dus deletest also entweder so:
(nichts von den folgenden scripten ist getetstet)

ActionScript:
  1. this.onEnterFrame = function() {
  2.     if (mySound1.getBytesLoaded() >= mySound1.getBytesTotal()   && mySound2.getBytesLoaded() >= mySound2.getBytesTotal() ) {
  3.         text1 = "play";
  4.         text2 = "play";
  5.         _root.but.enabled = true;
  6.         _root.but2.enabled = true;
  7.         delete this.onEnterFrame;//<hier hin.. erst deleten wenn geladen...
  8.     } else {
  9.         text1 = "loading";
  10.         text2 = "loading";
  11.         _root.but.enabled = false;
  12.        _root.but2.enabled = false;
  13.     }
  14. };
  15. stop();

oder mit zwei onEnterFrames arbeiten um die sounds getrennt zu laden.. z.b. so:
ActionScript:
  1. this.createEmptyMovieClip("loader1", 1000);
  2. this.createEmptyMovieClip("loader2", 1001);
  3.  
  4. loader1.onEnterFrame = function() {
  5.     if (mySound1.getBytesLoaded() >= mySound1.getBytesTotal()) {
  6.         text1 = "play";
  7.         _root.but.enabled = true;
  8.         delete this.onEnterFrame;//<hier hin.. erst deleten wenn geladen...
  9.         this.removeMovieClip(); // und noch den loader1 mc wieder löschen
  10.     } else {
  11.         text1 = "loading";
  12.         _root.but.enabled = false;
  13.     }
  14. };
  15.  
  16. this.loader2.onEnterFrame = function() {
  17.     if (mySound2.getBytesLoaded() >= mySound2.getBytesTotal() ) {
  18.         text2 = "play";
  19.         _root.but2.enabled = true;
  20.         delete this.onEnterFrame;//<hier hin.. erst deleten wenn geladen...
  21.         this.removeMovieClip(); // und noch den loader2 mc wieder löschen
  22.     } else {
  23.         text2 = "loading";
  24.        _root.but2.enabled = false;
  25.     }
  26. };
  27. stop();

auch schön: mit einer var gehts auch um beides in einem onenterframe zu machen und trotzdem getrennt abzufragen:

ActionScript:
  1. this.onEnterFrame = function() {
  2.     if (mySound1.getBytesLoaded() >= mySound1.getBytesTotal()) {
  3.         text1 = "play";
  4.         _root.but.enabled = true;
  5.         this.load1 = true;
  6.     } else {
  7.         text1 = "loading";
  8.         _root.but.enabled = false;
  9.     }
  10.     if (mySound2.getBytesLoaded() >= mySound2.getBytesTotal() ) {
  11.         text2 = "play";
  12.         _root.but2.enabled = true;
  13.         this.load2 = true;
  14.     } else {
  15.         text2 = "loading";
  16.        _root.but2.enabled = false;
  17.     }
  18.     if ( load1 && load 2) {
  19.         delete this.onEnterFrame;//<hier hin.. erst deleten wenn beide sounds geladen...
  20.     }
  21. };
  22. stop();


achja noch was...
du kannst das but.enabled = false auch aus dem onEnterFrame nehmen.. spart nen paar resourcen...
einfach das falsen vor dads onEnterFrame und erst wieder frei geben, wenn geladen.. die mehrmalige zuewisung ist eigentlich sinnlos bzw verschwenderisch... genauso sieht es auch mit den texten aus.. einmalige zuweisung rteicht und nur ändern wenn der sond fertig geladen wurde...dann fällt auch der ganze else teil immer raus (wie du siehst sehr viel ökonomischer)...

jeweils so (hier mal nur für einen button und ein textfeld):

ActionScript:
  1. _root.but.enabled = false;
  2. text1 = "loading";
  3. this.onEnterFrame = function() {
  4.     if (mySound1.getBytesLoaded() >= mySound1.getBytesTotal()) {
  5.         text1 = "play";
  6.         _root.but.enabled = true;
  7.         delete this.onEnterFrame;
  8.     }
  9. }

ach und noch was:
was ich die ganze zeit schon korrigiert habe, ich aber nicht erwähnt habe:
man sollte immer loaded>=total schreiben und nicht loaded== total.
das liegt daran, dass manchmal etwas mehr geladen wird als nötig (das ist wirklich minimal und tritt nur manchmal auf.. habe leider vergessen was das genau war.. ich glaube im faq oder tut board hat rena dazu was geschrieben..musste mal nen bisl suchen) und da sollte man auf nummer sicher gehen!

soooo...
wie gesagt .. ist alles nicht getestet.. deswegen besser kein copy&paste.. ist nur "kurz" runter geschrieben... sollen nur Denkansätze sein und veschiedene Möglichkeiten aufzeigen!

Hoffe die arbeit hat sich gelohnt und du bekommst das in den griff und lernst was dabei..falls nicht frag einfach noch mal nach!!!!!!

bis dann,

greetz,
Robert

Edit:
Sprachliche-richtigkeit optimiert...

Geändert von pape (29-07-2004 um 00:14 Uhr)
pape ist offline   Mit Zitat antworten
Alt 29-07-2004, 06:13   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
hier noch eine kpl lösung:

PHP-Code:
//Button auf enabled_______________________________________________________________
_root.but1.enabled false;
_root.but2.enabled false;

//Sound laden______________________________________________________________________
mSound1 = new Sound (this);
mSound1.loadSound ("loop2.mp3"true);
mSound1.stop ();
mSound2 = new Sound (this);
mSound2.loadSound ("loop3.mp3"true);
mSound2.stop ();

//Preloader _______________________________________________________________________
Sound.prototype.loader_sound = function (xmc) {
    
mc._sound this;
    
mc.onEnterFrame = function () {
        
_root["text" x].text this._sound.getBytesLoaded ();
        if (
this._sound.getBytesLoaded () == this._sound.getBytesTotal () && this._sound.getBytesLoaded () > 10) {
            
trace (this._sound.getBytesLoaded ());
            
delete this.onEnterFrame;
            
_root["text" x].text "play " x;
            
_root["but" x].enabled true;
        }
    };
};

//functions aufruf__________________________________________________________________
mSound1.loader_sound (1_root.but1);
mSound2.loader_sound (2_root.but2);

//Sound starten______________________________________________________________________
_root.but1.onRelease = function () {
    
mSound1.start ();
};
_root.but2.onRelease = function () {
    
mSound2.start ();
}; 
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 29-07-2004, 13:48   #6 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
@ harego.. schön und gut... aber schreib bitte geladen>=zuladen statt "==" .. wie oben schon erwähnt is des besser/sicherer...
ansonsten is des natürlich ne schöne Lösung
pape ist offline   Mit Zitat antworten
Alt 29-07-2004, 14:01   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Ups ... Tippfehler...

Es geht aber so auch , nur sollte man besser ">=" verweden !
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego 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 21:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele