Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-02-2005, 11:33   #1 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
Question Problem mit mehr als 10x loadMovie

Hallo Leute,

ich habe mir ein Filmchen gebastelt, welcher via loadMovie JPEGs läd. Diese werden immer in leere MC gepackt (createEmptyMovieClip...). Da das ganze eine Slideshow sein soll, gibt es auch noch zweit Buttons, "Vor" und "Zurück"... Funktioniert auch alles super, aber sobald ich mehr als 10 Bilder lade, funktioniert das elfte, zwöflte usw. Bild nicht. Es wurde zwar ein neuer MC für dieses Bild angelegt, es befindet sich aber kein Bild drin. Außerdem wird der Film SUPER langsam (das Umblättern geschieht nur noch in Zeitlupengeschwindigkeit).
Zum auslesen det Bilddateinamen benutze ich ein PHP Script und hole mir die Variablen mit LoadVars.

Frame1:
PHP-Code:
lv = new LoadVars();
lv.onLoad = function(suc) {
    if (
suc) {
        if (
parseInt(lv.images_klein) == 0) {
            
gotoAndPlay("keinebilder");
        } else {
            
gotoAndPlay("Start");
        }
    } else {
        
gotoAndPlay("Fehler");
    }
};
lv.load("read.php"); 
Frame "Start":
PHP-Code:
MovieClip.prototype.fade_alpha = function (wert,faktor) {
    
this.onEnterFrame = function () {
        
this._alpha += (wert-this._alpha)/faktor
        
if (Math.round(wert-this._alpha) == 0) {
            
this._alpha wert;
            
delete this.onEnterFrame;
        } 
// END IF
    
}


var 
currpic:Number 0;
var 
piccount:Number 0;
var 
bilder:Array = [];

function 
slidePics(action:String) {
    
oldpic pic;
    if (
action == "next") {
        
pic currpic+1;
        if (
pic >= piccount)
            
pic 0;
    } 
// END IF
    
if (action == "back") {
        
pic currpic-1;
        if (
pic 0)
            
pic piccount-1;
    } 
// END IF
    
bilder[pic].fade_alpha(100,4);
    
bilder[oldpic].fade_alpha(0,4);
    
currpic pic;
}
function 
loadPics(lv:Object) {
    var 
filename:String "";
    for (var 
i:Number=0i<lv.images_kleini++) {
        
filename = eval("lv.image_klein"+i);
        var 
handle _root.createEmptyMovieClip("bild"+i,i);
        
bilder.push(handle);
        if (
i!=0) {
            
bilder[i]._alpha 0;
        } 
// END IF
        
handle.loadMovie("img/" filename0);
        
handle._x 0;
        
handle._y 0;
    } 
// END FOR
    
    
currpic i-1;
    
piccount lv.images_klein;
}

// Buttons
var btn1 _root.attachMovie("btn_back","btn_back",101);
btn1._x width - (btn1._width);
btn1._y = (height - (btn1._height)+10);
btn1.onPress = function() {
    
slidePics("back");
}
var 
btn2 _root.attachMovie("btn_next","btn_next",102);
btn2._x width btn2._width 5;
btn2._y =  (height btn2._height 10);
btn2.onPress = function() {
    
slidePics("next");
}

loadPics(lv);
slidePics("next");
stop(); 
Weiss wer warum das so ist?

DANKE IM VORRAUS!!!

Geändert von Sandsturm (09-02-2005 um 11:37 Uhr)
Sandsturm ist offline   Mit Zitat antworten
Alt 09-02-2005, 12:12   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ich kann nur mit dem Kopf schütteln: ein komplexes Script, aber kein einziger trace, der die aktuellen Variableninhalte im Testmodus ausgeben kann...

Was z.B. steht in den Variablen pic und oldpic, welche Rückgabewerte bekommt das LoadVars-Objekt etc? Teste das erst einmal, dann wirst du wahrscheinlich selbst den Bug finden...
  Mit Zitat antworten
Alt 08-03-2005, 15:44   #3 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
also das problem ist jetzt erst wieder aktuell ^^

habe nun ein wenig nachgeforscht, und muss feststellen, dass es an dem prototyp funktion fade_alpha liegt!
Benutze ich diese funktion nicht, sondern setze das alte bild einfach auf _alpha=0; und das neue auf _alpha=100; funktionierts (habe das mal unten im source auskommentiert)!

Im Array "bilder" speichere ich alle handels der bilder. in der funktion slidePics blende ich halt ein bild aus (oldpic) und ein anderes ein (newpic).

also: ab bild nummer 10 (das handle befindet sich im zehnten element des Array "bilder") blendet er die bilder nicht mehr ein, und der film wird sehr langsam! sobald ich wieder bei bild 0 angekommen bin, funktioniert bis bild 10 das ein- und ausblenden wieder, nur sehr langsam.

hier noch mal eine etwas aktuellere version meines action script:
PHP-Code:
MovieClip.prototype.fade_alpha = function (wert,faktor) {
    
this.onEnterFrame = function () {
        
this._alpha += (wert-this._alpha)/faktor;
        if (
Math.round(wert-this._alpha) == 0) {
            
this._alpha wert;
            
delete this.onEnterFrame;
        } 
// END IF
    
}


var 
currpic:Number 0;
var 
piccount:Number Number(lv.images_klein);
var 
bilder:Array = new Array;

function 
slidePics(action:String) {
    var 
oldpic:Number currpic;
    if (
action == "next") {
        
newpic currpic+1;
        if (
newpic >= piccount)
            
newpic 0;
    } 
// END IF
    
if (action == "back") {
        
newpic currpic-1;
        if (
newpic 0)
            
newpic piccount-1;
    } 
// END IF

    
bilder[newpic].fade_alpha(100,4);
    
bilder[oldpic].fade_alpha(0,4);

    
//bilder[newpic]._alpha = 100;
    //bilder[oldpic]._alpha = 0;

    
currpic newpic;
}

function 
loadPics(lv:Object) {
    var 
filename:String "";
    for (var 
i:Number=0i<lv.images_kleini++) {
        
filename = eval("lv.image_klein"+i);
        var 
handle _root.createEmptyMovieClip("bild"+i,i);
        
bilder.push(handle);
        if (
i!=0)
            
handle._alpha 0;
        
handle.loadMovie("klein/" filename0);
    } 
// END FOR
// END loadPics

// Buttons
var btn1 _root.attachMovie("btn_back","btn_back",101);
btn1._x width - (btn1._width);
btn1._y = (height - (btn1._height)+10);
btn1.onPress = function() {
    
slidePics("back");
}
var 
btn2 _root.attachMovie("btn_next","btn_next",102);
btn2._x width btn2._width 5;
btn2._y =  (height btn2._height 10);
btn2.onPress = function() {
    
slidePics("next");
}

loadPics(lv);
stop(); 
Sandsturm ist offline   Mit Zitat antworten
Alt 08-03-2005, 15:51   #4 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
Zitat:
Zitat von agedoubleju
Ich kann nur mit dem Kopf schütteln: ein komplexes Script, aber kein einziger trace, der die aktuellen Variableninhalte im Testmodus ausgeben kann...
also normaler weise benutze ich immer die trace funktion, nur ignoriert mein flash die trace funktionen und gibt nichts in der ausgabe box an... benutze dann immer den debug modus wenn ich wissen will welcher wert irgend eine variable hat
Sandsturm ist offline   Mit Zitat antworten
Alt 08-03-2005, 16:24   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Schau mal bei den Veröffentlichungsoptionen, ob du evtl. bei "Trace-Aktionen übergehen" einen Haken gesetzt hast...
  Mit Zitat antworten
Alt 08-03-2005, 16:40   #6 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
Zitat:
Zitat von agedoubleju
Schau mal bei den Veröffentlichungsoptionen, ob du evtl. bei "Trace-Aktionen übergehen" einen Haken gesetzt hast...
ui ja klar, aber ich dachte immer das Flash für "Steuerung > Film testen" diese optionen nicht verwendet... irreführend...
Sandsturm ist offline   Mit Zitat antworten
Alt 08-03-2005, 23:40   #7 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
ActionScript:
  1. MovieClip.prototype.fade_alpha = function (wert,faktor) {
  2.   this.onEnterFrame = function () {
  3.     this._alpha += (wert-this._alpha)/faktor;
  4.     if (Math.round(wert-this._alpha) == 0) {
  5.       this._alpha = wert;
  6.       this._visible = false; <----- Diese Zeile reinschreiben
  7.       delete this.onEnterFrame;
  8.     } // END IF
  9.   }
  10. }

Das ist ein Fadeout nichtwahr?
Integriere mal die zeile, die ich im obigen Skript integriert habe.

Allerdings mußt du dann wahrscheinlich die mcs auch irgendwo wieder
auf _visible = true stellen.

Das Problem besteht darin, daß die movieclips zwar mit alpha = 0
nicht zu sehen sind, aber von flash trotzdem berechnet werden.
10 mcs übereinander mit alpha = 0 scheint eine magische grenze
in flash zu sein – ist mir schon öfters begegnet.

gruß, gaspode

Geändert von gaspode (08-03-2005 um 23:43 Uhr)
gaspode ist offline   Mit Zitat antworten
Alt 09-03-2005, 09:48   #8 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
hey super tipp, das funktioniert soweit... nur werden die MCs der Bilder beim laden nicht auf _visible=false; gesetzt.

Hier der Code:

PHP-Code:
function loadPics() {
    var 
filename:String "";
    for (var 
i:Number=0i<lv.images_kleini++) {
        
filename = eval("lv.image_klein"+i);
        
bilder.push(_root.createEmptyMovieClip("bild"+i,i+1));
        
bilder[i].loadMovie("klein/" filename0);
        
bilder[i]._x 10*i// Zum test versetze ich die biler immer um 10px
        
bilder[i]._visible false// Hier sollten sie eigentlich nicht sichtbar gemacht werden
    
// END FOR
// END FUNCTION loadPics 
Wenn ich den Film starte, kann ich alle geladenen Bilder nebeneinander sehen... eigentlich müssten ja ALLE nicht sichtbar sein...
Sandsturm ist offline   Mit Zitat antworten
Alt 09-03-2005, 10:20   #9 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
ich habe mir mal mit trace den _visible wert der MCs ausgeben lassen, im Ausgabe Fenster erscheint immer brav "false".
Lasse ich mir dir Vorschau im Debug-Modus anzeigen, und schaue mir die eigenschaften der einzelnen MCs an (_level0.bild0 usw), steht da _visible auf true!

das kann ja wohl nicht wahr sein ^^

ActionScript:
  1. function loadPics() {
  2.     var filename:String = "";
  3.     for (var i:Number=0; i<lv.images_klein; i++) {
  4.         filename = eval("lv.image_klein"+i);
  5.         bilder.push(_root.createEmptyMovieClip("bild"+i,i+1));
  6.         bilder[i].loadMovie("klein/" + filename, 0);
  7.         bilder[i]._x = 10*i; // Zum test versetze ich die biler immer um 10px
  8.         bilder[i]._visible = false; // Hier sollten sie eigentlich nicht sichtbar gemacht werden
  9.         trace(bilder[i]._visible);
  10.     } // END FOR
  11. } // END FUNCTION loadPics
  12.  

Geändert von Sandsturm (09-03-2005 um 11:08 Uhr)
Sandsturm ist offline   Mit Zitat antworten
Alt 09-03-2005, 10:46   #10 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
>ich habe mir mal mit trace den _visible wert der MCs ausgeben lassen,
>im Ausgabe Fenster erscheint immer brav "false".

du hast den wert ja auch gesetzt, er kommt aber anscheinend nicht an.

ActionScript:
  1. function loadPics() {
  2.   var filename:String = "";
  3.   for (var i:Number=0; i<lv.images_klein; i++) {
  4.     filename = eval("lv.image_klein"+i);
  5.     bilder.push(_root.createEmptyMovieClip("bild"+i,i+1));
  6.     bilder[i].loadMovie("klein/" + filename, 0);
  7.     bilder[i]._x = 10*i;
  8.     bilder[i]._visible = false;
  9.   } // END FOR
  10. } // END FUNCTION loadPics
  11.  

das bildversetzten 10*i funktioniert?
wie lautet denn dein genauer pfad zum bild, sprich was steht in «bilder[i]»?
ich weiß, daß es probleme geben kann, wenn man _visible auf false setzt
aber der inhalt noch lädt. irgendwie darf man den _visible-befehl erst
ausführen, wenn der inhalt komplett geladen ist.

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 09-03-2005, 10:50   #11 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
Ja das mit dem Bild versetzten funktioniert prima... ich gebe mal den inhalt von bild[] via trace aus:

Code:
ActionScript:
  1. function loadPics() {
  2.     var filename:String = "";
  3.     for (var i:Number=0; i<lv.images_klein; i++) {
  4.         filename = eval("lv.image_klein"+i);
  5.         bilder.push(_root.createEmptyMovieClip("bild"+i,i+1));
  6.         bilder[i].loadMovie("klein/" + filename, 0);
  7.         bilder[i]._x = 10*i;
  8.         bilder[i]._visible = false;
  9.         trace("bild["+i+"]: "+bilder[i]+" Visible: "+bilder[i]._visible);
  10.     } // END FOR
  11. } // END FUNCTION loadPics
  12.  

Ausgabe:
Code:
bild[0]: _level0.bild0 Visible: false
bild[1]: _level0.bild1 Visible: false
bild[2]: _level0.bild2 Visible: false
bild[3]: _level0.bild3 Visible: false
bild[4]: _level0.bild4 Visible: false
bild[5]: _level0.bild5 Visible: false
bild[6]: _level0.bild6 Visible: false
bild[7]: _level0.bild7 Visible: false
bild[8]: _level0.bild8 Visible: false
bild[9]: _level0.bild9 Visible: false
bild[10]: _level0.bild10 Visible: false

Geändert von Sandsturm (09-03-2005 um 11:07 Uhr)
Sandsturm ist offline   Mit Zitat antworten
Alt 09-03-2005, 11:03   #12 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
habe es mal ohne erfolg mit einem preloader versucht (wenn das so richtig ist ^^)

ActionScript:
  1. function loadPics() {
  2.     var filename:String = "";
  3.     for (var i:Number=0; i<lv.images_klein; i++) {
  4.         filename = eval("lv.image_klein"+i);
  5.         bilder.push(_root.createEmptyMovieClip("bild"+i,i+1));
  6.         bilder[i].loadMovie("klein/" + filename, 0);
  7.         bilder[i]._x = 10*i;
  8.         bilder[i].onEnterFrame = function() {
  9.             if (this.getBytesLoaded() == this.getBytesTotal()) {
  10.                 this._visible = false;
  11.                 delete this.onEnterFrame;
  12.             } // END IF
  13.         }
  14.         trace("bild["+i+"]: "+bilder[i]+" Visible: "+bilder[i]._visible);
  15.     } // END FOR
  16. } // END FUNCTION loadPics
  17.  

Geändert von Sandsturm (09-03-2005 um 11:07 Uhr)
Sandsturm ist offline   Mit Zitat antworten
Alt 09-03-2005, 11:16   #13 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
kannst du das mal hochladen, oder ne demo-fla mit blindbildern?

das wird mir jetzt zu theoretisch, das muß ich am original testen! :-)

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 09-03-2005, 11:27   #14 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
Hier herunterladen: http://www.larshess.com/demo.zip

thx
Sandsturm ist offline   Mit Zitat antworten
Alt 09-03-2005, 12:40   #15 (permalink)
DD
 
Registriert seit: Jul 2001
Ort: RuhrGEbeat
Beiträge: 74
naja habs jetzt so gemacht, dass ich alle bilder bis auf bild auf _x = 500 setze, und beim sliden wieder auf _x = 0 setz, dann sind die anderen bilder am anfang nicht sichtbar...

würd tortzdem gerne wissen wie ich es richtig löse...
Sandsturm 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 04:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele