Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-04-2005, 09:54   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 44
Breite extern geladener Jpg

Moin,

ich versuche gerade eine dynamische Bildlaufleiste zu bauen. Dafür möchte ich externe Bilder in ein Flashfilm laden und diese dann nebeneinander als MC-Instanz auf die Bühne stellen. Das Einladen ist kein Problem, allerdings bekomme ich nicht raus, wie ich die Breite der eingeladenen Bilder auslesen kann.

Mein Script sieht momentan so aus:

Zitat:
for (i:Number = 1;i<=10;++i) {
_root.createEmptyMovieClip("bilderladen" + i,i);
loadMovie("Bild-" + i + ".jpg",_root["bilderladen"+i]);
_root["bilderladen"+i]._x=x_wert;
_root["bilderladen"+i]._y=100;
x_wert = x_wert + _root["bilderladen"+i]._width + 20;

}
Ich muß die Breite des geladenen Jpg in die Variable x_wert bekommen. Hat jemand von euch eine Idee, ob und wie das geht?
Questor ist offline   Mit Zitat antworten
Alt 29-04-2005, 09:57   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hi und willkommen im forum...
alt bekanntes problem... die bilder sind zu der zeit, wo du deren breite abfragen willst noch nicht geladen und so ergibt sich immer 0 als breite... mußte z.B. mit einem handelsüblichen preloader abfragen, ob das bild tatsächlich geladen ist und dann die breite, höhe etc abfragen...

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 29-04-2005, 11:19   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 44
Besten Dank für die schnelle Antwort. Ist ein guter Tip. Allerdings ist jetzt die Frage,wie ich rausfinde, ob die Bilder geladen sind.

Mein erster Gedanke war, so lange eine Schleife laufen zu lassen, bis getBytesLoaded() und getBytesTotal() gleich sind und danach die Größe abzufragen.
Mit _root.getBytesLoaded() und _root.getBytesTotal() habe ich da bis jetzt keinen Erfolg. Die Werte, die ich mir für getBytesTotal() mittel Trace habe ausgeben lassen sehen nicht groß genug aus, als dass die Größe incl. der zu ladenden Bilder sind. Könnte vielleicht daran liegen, das die Bilder erst nachträglich in den Film geladen werden.
Habs dann mit _root["bilderladen"+i].getBytesLoaded() versucht, bekomme dann aber nur die Ausgabe [type Function].
Questor ist offline   Mit Zitat antworten
Alt 29-04-2005, 11:34   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Ich habe da mal irgendwann was gemacht. Vielleicht kannst du das ja gebrauchen:
ActionScript:
  1. var pics = 6;
  2. var i = 0;
  3. var distance = 10;
  4. function laden() {
  5.     this.createEmptyMovieClip("pic"+i, i);
  6.     this.createEmptyMovieClip("watcher", 100);
  7.     this["pic"+i].loadMovie("Bild"+i+".jpg");
  8.     this.watcher.onEnterFrame = function() {
  9.         if (this._parent["pic"+i]._width>0) {
  10.             i>0 ? lastwidth=this._parent["pic"+(i-1)]._width : lastwidth=0;
  11.             this._parent["pic"+i]._x = this._parent["pic"+(i-1)]._x+lastwidth+distance;
  12.             this._parent["pic"+i]._y = 0;
  13.             i == pics-1 ? removeMovieClip(this) : (i++, laden());
  14.         }
  15.     };
  16. }
  17. laden();
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (29-04-2005 um 11:46 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 29-04-2005, 11:38   #5 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Post

folgendes wär ne möglichkeit... habs jetzt aber für mx und nicht mx2004 geschrieben... aber der sinn sollte klar werden...

PHP-Code:
MovieClip.prototype.laden = function(img){
    var 
mc this;
    var 
loaded 0;
    var 
container mc.createEmptyMovieClip("container"1);
    var 
schleife mc.createEmptyMovieClip("schleife"2);
    
    
    
container.loadMovie(img);
    
schleife.onEnterFrame = function(){
        
loaded int(container.getBytesLoaded()*100/container.getBytesTotal()); 
        if(
loaded >= 100){
            
mc.container.removeMovieClip();
            
trace("-----------------------------");
            
trace(mc);
            
trace(mc._width);
            
trace(mc._height);
            
trace(mc.getBytesTotal());
        }
    }
}

for (
i=1i<=10; ++i) {
    
_root.createEmptyMovieClip("bilderladen"+ii);
    
_root["bilderladen"+i]._x x_wert;
    
_root["bilderladen"+i]._y 100;
    
_root["bilderladen"+i].laden("Bild-"+i+".jpg");

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 29-04-2005, 11:47   #6 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
für solche sachen ist ab flash 7 der MovieClipLoader bestens geeinget, dessen onLoadInit-Event wird erst gefeuert wenn der clip initialisiert ist und die breite des bildes abfragbar ist.
michael ist offline   Mit Zitat antworten
Alt 29-04-2005, 11:59   #7 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
stimmt. hatte erst nachdem ich am scripten war gesehen das es für mx2004 ist... aber da fand ich es zu schade das script einfach in die tonne zu kloppen

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 29-04-2005, 12:07   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Ich halte die MovieClipLoader-Komponente für eine Zicke. Habe auf jeden Fall keine so tollen Erfahrungen damit gemacht. Z.B. scheint scaleContent manchmal einfach nicht zu klappen - und dann doch wieder.
Stehe ich da mit meiner Meinung alleine da?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 29-04-2005, 12:09   #9 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
ich meine nicht die Loader-komponente, das ist in der tat eine zicke.

ich meine nur die MovieClipLoader-klasse
michael ist offline   Mit Zitat antworten
Alt 29-04-2005, 12:18   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Alles klar. Habe ich mir ehrlich gesagt noch nie so genau angeschaut. Sollte ich dann vielleicht mal machen.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 29-04-2005, 13:36   #11 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 44
Vielen Dank für eure Bemühungen. Irgendwie scheine ich an ein zwei Stellen ein paar Verständnisprobleme zu haben.

Wenn ich alles in einem Bild habe ergibt eine Abfrage nach den BytesTotal nie mehr als 0. Erst wenn ich in einem zweiten Bild die Abfrage machen wird irgendwann (meist nach zwei oder drei Durchläufen) ein höherer Wert draus.

Meine beiden Hauptprobleme sind zum einen, dass ich zwei Bilder brauche und zum anderen, dass der Player trotz der Angabe "gotoAndPlay(2)" im Skript des zweiten Bildes wieder in das Bild 1 zurückspringt (siehe Ausgabe des Traces an der stelle "**else*****0"). Kann mir jemand sagen, wo meine fehler liegen. Andere Lösungen sind zwar fein, zeigen mir aber leider nicht, was ich falsch mache.

Jetzt habe ich folgende beide Script in Bild 1 und in Bild 2

Bild 1:
Zitat:
for (var i: Number=1; i<=6; i++){
container=createEmptyMovieClip("bild"+i, i);
loadMovie("chip-0" + i + ".jpg",_root["bild"+i]);

loaded = int(container.getBytesLoaded()*100/container.getBytesTotal());
// if(loaded >= 100){

trace("Bild 1-----------------------------");
trace(container);
trace(container._width);
trace(container._height);
trace(container.getBytesTotal());
// }
}
Bild 2:

Zitat:
for (var i: Number=1; i<=6; i++){

container = _root["bild"+i];
loaded = int(container.getBytesLoaded()*100/container.getBytesTotal());


trace("Bild 2---------------------");
trace(container);
trace(loaded);
trace(container._width);
trace(container._height);
trace(container.getBytesTotal());



}
if (container.getBytesTotal() > 0) {
trace("*********" + container.getBytesTotal());
stop();
} else {
trace("**else*****" + container.getBytesTotal());
gotoAndPlay(2);

}

Geändert von Questor (29-04-2005 um 14:52 Uhr)
Questor ist offline   Mit Zitat antworten
Alt 29-04-2005, 15:00   #12 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 44
Hihi, die besten Fehler sind die, die man selber findet. Wenn ich ein gotAndPlay auf das gleiche Frame schicke, in dem ich mich befinde betrete ich es nicht noch mal neu sondern bleine ja drinne :-). Wenn ich bei meinem Code also ein Frame weiter zurück springe funktioniert es.

Bleibt nur noch die Frage, wie ich die beiden Scripte modifizieren muß, um nicht immer zwischen zwei Frames hin und her springen zu müssen.

Kann man Flash dazu bekommen, in den gleichen Frame noch mal zu gehen und diesen dann so zu bekandeln, als ab man den normal betreten hätte?

Geändert von Questor (29-04-2005 um 15:06 Uhr)
Questor 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 22:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele