Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-11-2006, 18:44   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 37
Problem mit movieclip._width

Hab da mal wieder ein Problem und komm nicht weiter.

In einer Schleife lade ich Bilder in die Bühne:
Code:
	  for(var i=0; i<bild_array.length; i++) {
			_root["mc"+i] = _root.createEmptyMovieClip("mc0"+i, 1+i);
			_root["mc"+i].loadMovie(bild_array[i]);
}
Funktioniert soweit gut.

Diese Bilder will ich alle auf die gleiche Größe Skalieren, also hab ich das so zu realisieren versucht:
Code:
	  for(var i=0; i<bild_array.length; i++) {
			_root["mc"+i] = _root.createEmptyMovieClip("mc0"+i, 1+i);
			_root["mc"+i].loadMovie(bild_array[i]);
			_root["mc"+i]._width=10;
}
Das hat zur Folge das mein Bild nicht mehr angezeigt wird.
Meine Vermutung lag darauf, dass es zu Problemen kommt wenn das Bild noch nicht vollständig geladen ist beim Skalieren.
Also ahb ich es so versucht:
Code:
	  for(var i=0; i<bild_array.length; i++) {
			_root["mc"+i] = _root.createEmptyMovieClip("mc0"+i, 1+i);
			_root["mc"+i].loadMovie(bild_array[i]);
			this._root["mc"+i].onLoad = function ()
			{
				_root["mc"+i].width=10;
			};
}
allerdings hab ich dann per trace festgestellt dass die funktion onLoad nicht ausgeführt wird.
Hab mir gedacht das liegt daran dass er schon geladen hat wenn die funktion definiert wird oder so.
Was mich dann verblüffte und volkommen aus dem Konzept warf war, dass eine skalierung mit _xscale funktioniert:
Code:
  for(var i=0; i<bild_array.length; i++) {
			_root["mc"+i] = _root.createEmptyMovieClip("mc0"+i, 1+i);
			_root["mc"+i].loadMovie(bild_array[i]);
			_root["mc"+i]._xscale=10;
}
Das würde doch dann bedeuten, dass das Bild an der Stelle an der es skaliert wird schon geladen ist, was mich zurück an den Anfang wirft und mich vor die Frage stellt wieso _xscale funtioniert und _width nicht.

Kann mich mal bitte wer aufklären und mir da irgendwie helfen?
alpharay ist offline   Mit Zitat antworten
Alt 01-11-2006, 20:48   #2 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
wenn du deinen MC erstellst, in den das bild geladen werden soll, hat dieser noch keine ausmaße.
du kannst ihm deshalb auch keine pixelweite angeben.
eine relative skalierung kannst du ihm aber trotzdem geben, selbst wenn er noch kein einziges pixel breit ist.
sofern für flash klar ist, daß der movieclip auf 10% der originalgröße stehen soll, wird auch alles, was später noch in dem movieclip entsteht nur ein zehntel so breit sein, wie es eigentlich gehört.

und hier setzen wir an:
das bild wird erst in den movieclip geladen, nachdem du bereits die breite angegeben hast.
das hast du schon richtig vermutet.
und mit der onLoad-funktion kannst du soweit ich weiß nicht feststellen, ob das bild fertig geladen wurde, wenn du es mit loadMovie lädst.

mein vorschlag für eine einfache lösung:
Code:
for(var i=0; i<bild_array.length; i++) {
			_root["mc"+i] = _root.createEmptyMovieClip("mc0"+i, 1+i);
			_root["mc"+i].loadMovie(bild_array[i]);
			this._root["mc"+i].onEnterFrame = function ()
			{
				if (this._width >1){
                                    this._width = 10;
                                    delete this.onEnterFrame
                                }
			};
}
übrigens:
du hast den unterstrich bei "width" in deinem mittleren beispiel vergessen.
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 01-11-2006, 20:54   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 37
Hm, das führt mich direkt zu 'nem neuen Problem.

ich hab jetzt:
Code:
	  for(var i=0; i<bild_array.length; i++) {
			this._root["mc"+i] = _root.createEmptyMovieClip("mc0"+i, 1+i);
			this._root["mc"+i].loadMovie(bild_array[i]);
			this._root["mc"+i].onEnterFrame = function ()
			{
				if (this._width >1){
                	              this._width = 10;
                                      //delete this.onEnterFrame;
                                }
				trace("this._width");
			};
		}
In dem Trace-Ausgabe-Fenster steht dann bloß einmal "0", dabei müsst es sich doch wiederholen.

Geändert von alpharay (01-11-2006 um 21:12 Uhr)
alpharay ist offline   Mit Zitat antworten
Alt 01-11-2006, 22:41   #4 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
also das kann nun irgendwie nicht sein.
das einzige, was flash dir in diesem code tracen kann ist der string "this._width"
und zwar buchstabe für buchstabe.
die zahl 0 wird flash dir aufgrund dieses scripts nicht ausspucken.

mal ne andere frage ...
werden die bilder überhaupt geladen?
unabhängig davon, ob du die movieclips in der größe veränderst?
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 02-11-2006, 13:06   #5 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 37
hm, stimmt, irgendwie sind da zwei Anführungszeichen reingerutscht, sry.
Die Bilder werden geladen und in ihrer vollen größe angezeigt.
alpharay ist offline   Mit Zitat antworten
Alt 08-11-2006, 21:13   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 37
ich brauche echt drignend Hilfe, ich komm einfach nicht weiter.
Mein aktueller Code:
Code:
counter=0;
loadVariables ("3d.txt", this);
this.onData = function ()
{
	alleBilder = new Array ();
	alleBilder = bildnamen.split (",");
	loadPics(alleBilder);
	
};

function loadPics(bild_array){
	  for(var i=0; i<bild_array.length; i++) {
			this._root["mc"+i] = _root.createEmptyMovieClip("mc0"+i, 1+i);
			this._root["mc"+i].loadMovie(bild_array[i]);
			this._root["mc"+i].onEnterFrame = function ()
			{
				trace(this._width);
			}
			
		}
}
Die Bilder werden geladen und es wird genau einmal "0" ausgegeben im Tracefenster.
allerdings macht es dabei keinen Unterschied ob ich schreibe
Code:
this._root["mc"+i].onEnterFrame = function ()  //Movieclip-Name
oder
Code:
this._root["mc0"+i].onEnterFrame = function ()  //Movieclip-Instanz-Name
alpharay 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 08:07 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele