Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-09-2004, 15:25   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Beiträge: 39
onRelease Funktion auf dyn. gleadene Movies

Hallo,
ich möchte eine variable Anzahl von Filmen per loadMovie laden und jedem Movie eine Button-Aktion hinzufügen. Die Pfade und Anzahl der Movies kommen von extern und sind auch kein problem.
Allerdings bekomme ich die Aktionen nicht auf die MovieClips, in die die Filme geladen werden. Ich habs mal so versucht:

content ist eine Variable in der der Pfad steht, wo das alles passieren soll.
ActionScript:
  1. for(i = movies.length-1; i >= 0; i--){
  2.         content.createEmptyMovieClip("plugin" + i, i);
  3.         content["plugin"+i].loadMovie(movies[i]);
  4.         content["plugin"+i]._y = 20 * i; // werden untereinander angeordnet
  5.         content["plugin"+i].onEnterFrame = function(){
  6.             if(this.getBytesLoaded() > 0){
  7.                 trace("geladen");
  8.                 this.onRelease = function(){
  9.                     trace("klick");
  10.                 }
  11.                 delete this.onEnterFrame;
  12.             }
  13.         }
  14.     }
Leider bleibt .getBytesLoaded oder .getBytesTotal immer 0. und auch wenn ich die if Bedingung ändere (Loaded == Total) kommt keine Klickaktion.

Hat jemand 'nen Vorschlag?

MfG

Geändert von Illuminatus (27-09-2004 um 15:26 Uhr)
Illuminatus ist offline   Mit Zitat antworten
Alt 27-09-2004, 15:45   #2 (permalink)
Schokolaaaadeeeeee
 
Registriert seit: Apr 2004
Ort: Saarbrücken
Beiträge: 173
Also du brauchst ein preloader der mehrere Filme lädt und du willst eine buttonaktion für jeden Movie.

1. Schritt: Erstelle einen Movieclip "movieHolder_mc", der hat keinen Inhalt;

2.Schritt: Erstelle einen Movieclip "movieComplete" mit 2 ebenen. Die oberste ebene heißt skripten, da kommt actionscpirt rein. Die darunterliegende Ebene kannst du "movie" nennen. In die schiebst du den gerade generierten "movieHolder_mc" rein und gibst ihm einen Instanznamen ->"movieHolder_mc"

3.Schritt: in der "skripten" Eben schreibst du dann einfach:
PHP-Code:
movieHolder_mc.onRelease = function(){
...
hier kommt das was passieren soll bei klick auf den movie

ok soweit ganz einfach:

4.Schritt einen neuen Movieclip mit namn preloader, in den kommt dann das preloadscript und auch der preloader an sich(anzeuge und so). den preloder_mc legst du auf die Hauptbühne in den ersten frame. den "movieComplete_mc" auch auf die Bühne ziehen und instanznamen für beide movieclips vergeben (preloader_mc und movieComplet_mc)

in der obersten eben kommt das skript das dir die movies aufruft bzw. den preload. Erstelle doch ein Array das folgendermasen aussieht:

PHP-Code:
preloadArray = [["datei""wohin"],["datei""wohin"]];

// Array mit den zuerst anzuzeigenden Bildern werden für den Preloader vorbereitet
    
preloadArray[0]["datei"] = movie1.swf;
    
preloadArray[0]["wohin"_root.movieComplete_mc.movieHolder_mc;
    
preloadArray[1]["datei"] = movie12.swf;
    
preloadArray[1]["wohin"] = root.movieComplete_mc.movieHolder_mc;
usw...... 
dann den aufruf
PHP-Code:
    preloader_mc.preloadmovies(preloadArray); 
in deinem preloader MovieClip steht:
PHP-Code:

function preloadmovies(preloadArray){
    
// Alle zuladenden Dateien werde geladen und  globale Variablen geschrieben
    
for(i=0;i<preloadArray.length;i++){
        
_global["targetMC"+i] = preloadArray[i].wohin
        _global
["targetMC"+i].loadMovie(preloadArray[i].datei);
    }

    
this.onEnterFrame = function(){
        for(
j=0;j<preloadArray.length;j++){
            
zuladen 0;
            
trace(_global["targetMC"+j])
            
zuladen _global["targetMC"+j].getBytesTotal()/1024;
            
trace(zuladen)
            
geladen _global["targetMC"+j].getBytesLoaded()/1024;
            
trace(geladen)
        }
        
// Falls benötigt die Textfelder
        
zuladen_txt.text zuladen;
        
geladen_txt.text geladen;
        if(
geladen 4){
            
this._visible true;
            var 
prozent Math.round(geladen/zuladen*100);
            
// Fortschritsanzeige
            
text.prozente_txt.text prozent;
            
balken.gotoAndStop(prozent*2);
            if(
prozent >= 100){
                <<
Aktion..z.B Movie anzeigen>>>
                
delete this.onEnterFrame
                
this._visible false;
            }
        }
    }

kamiKC ist offline   Mit Zitat antworten
Alt 28-09-2004, 11:28   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Beiträge: 39
Hallo kamiKC,
danke für deine Hilfe! Die Idee mit der globalen Variable ist nicht schlecht, da ich wenn ich eine onEnterFrame Funktion definiere nicht mehr genau weiß wie und auf welche Variablen ich jetzt noch zugreifen kann ...
Was nur nicht ganz verstehe ist warum bei mir bei .getBytes... immer 0 kommt, du machst es ja auch nicht viel anders. Die Bytes werden doch immer von dem MC abgefragt, in den man den Film geladen hat, oder täusche ich mich da?

Das Problem ist jetzt noch, dass ich eine Button-Aktion für jeden Movie einzeln brauche. Und so wie ich das sehe, werden alle Movies in den selben Clip geladen, dass heisst das jeder Film den letzten Film wieder entlädt!?
Zitat:
for(i=0;i<preloadArray.length;i++){
_global["targetMC"+i] = preloadArray[i].wohin
_global["targetMC"+i].loadMovie(preloadArray[i].datei);
}
Das Ziel ist ja immer dasselbe, oder müsste auch dynamisch angelegt werden.

Ein richtiger Preloader muss garnicht sein, da die Movies winzig und sofort geladen sind.
Illuminatus ist offline   Mit Zitat antworten
Alt 28-09-2004, 12:38   #4 (permalink)
Schokolaaaadeeeeee
 
Registriert seit: Apr 2004
Ort: Saarbrücken
Beiträge: 173
Zitat:
Die Bytes werden doch immer von dem MC abgefragt, in den man den Film geladen hat, oder täusche ich mich da?
das ist korrekt.

_global["targetMC"+i] = preloadArray[i].wohin

in dem preloadArray akannst du duch das wohin dein Ziel angeben...das kann immer verschieden sein oder gleich, je nachdem wie du das eingetragen hast.

Bei mir zählt er die Größe aller Movies zusammen, und fängt dann erst an den preloader zuzeigen.
kamiKC 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 23:58 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele