Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-11-2006, 09:04   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
Blöde Frage: Dimension eines MC nach loadMovie

Hallo zusammen,

da mich momentan ein Bug in meiner site etwas auf die Palme bringt muss ich jetzt einfach mal fragen.

Und zwar lade ich eine XML Datei in der nur der Pfad einer Datei und noch zwei andere Attribute pro Element enthalten sind. Wenn geladen werden soll, attache ich einfach einen neuen MC (_alpha = 0) und lade die Datei (.swf oder .jpg) in diesen noch nicht sichtbaren MC.

Anschliessend fade ich den aktuell sichtbaren MC aus und fade den neu geladenen ein. So weit so gut.

Nun bin ich aber bisher davon ausgegangen, dass ich mit dem Laden einer Datei der MC in den die Datei geladen wird automatisch an die Dimensionen der geladenen Datei anpasst... War das ein Fehler? Unter MX war das auch immer so, dass ich einfach eine Datei geladen habe und der MC Höhe und Breite automatisch angepasst hat.

Jedenfalls lese ich nach dem Laden Höhe und Breite aus, schreibe sie in globale Variablen, um dann von anderen MCs darauf zugreifen zu können. Allerdings gelingt mir das nicht immer. Ganz selten kommt es vor, dass die Höhe und Breite auf Null stehen und dann funktioniert das gesamte Layout nicht mehr...

Hätte jemand einen Tipp für einen Workaround? Das wäre echt klasse...

Viele Grüße,

Oli
Oli K. ist offline   Mit Zitat antworten
Alt 09-11-2006, 09:29   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
das ist nicht neu, sondern uralt.
du fragst offensichtlich die breite ab, bevor das swf/bild geladen ist.

benütze loadClip, das hat ein .onLoadComplete-event
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 09-11-2006, 09:30   #3 (permalink)
no guts no glory
 
Benutzerbild von readme.txt
 
Registriert seit: May 2004
Ort: Nordhorn
Beiträge: 7.998
Stellst du beim Laden der Elemente mit einem Preloader sicher das die Dateien komplett geladen sind bevor du deinen globalen Variablen die höhe/breite zuweist?

Ums konkreter zu sagen:

Ein leerer MC hat so lange eine höhe/breite von 0 bis das Element das du in ihn lädst komplett geladen ist. Wenn ich also schreibe:

PHP-Code:

var mc _root.createEmptyMovieClip("mc",_root.getNextHighestDepth());

mc.loadMovie("meinBild.jpg");

var 
breite mc._width;
var 
hoehe mc._height
ist je nach Bildgröße die Wahrscheinlichkeit groß das die Variablen zugewiesen werden bevor das Bild fertig geladen ist. Darum sollte man bei sowas immer einen Preloader vorschalten.
__________________
Bitte keine Privaten Nachrichten mit Fragen, dazu ist das Forum selbst da. Danke.

'We live in an amazing, amazing world, and it's wasted on the crappiest generation of spoiled idiots.'
readme.txt ist offline   Mit Zitat antworten
Alt 09-11-2006, 10:26   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
Thumbs up

Wow, das geht aber schnell...

Zitat:
Zitat von hgseib Beitrag anzeigen
das ist nicht neu, sondern uralt.
du fragst offensichtlich die breite ab, bevor das swf/bild geladen ist.

benütze loadClip, das hat ein .onLoadComplete-event
Naja, ich habe schon einen Loader, der prüft, wieviel geladen wurde und erst wenn alles geladen wurde die Höhe und Breite setzt. Das ist eigentlich genau das, was mich ein wenig stutzig macht...

Super, danke für den Tipp mit loadClip. Bin erst vor ein paar Wochen von MX auf 8 umgestiegen und da hat man noch nicht sofort alles im Blick...

@readme.txt: Den PreLoader gibt es. Mein Funktionsgerüst sieht ungefähr so aus:

Code:
//in Frame 1
_global.mcContent;
_global.iNewContentWidth;
_global.iNewContentHeight;

...

function loadContent(){

          //ausblenden des aktuellen Contents

          //hinzufügen des neuen Contents

          //hinzufügen des Loaders

          //laden
          loadExternalFile(strFilePath);
          
          //einblenden des neuen Contents etc.

          ...

}

function loadExternalFile(strFilePath){
       
          _global.mcContent.loadMovie(strFilePath);

          _global.mcLoader.onEnterFrame = function(){

          iBytesLoaded = _global.mcContent.getBytesLoaded();
          iBytesTotal = _global.mcContent.getBytesTotal();

                if(iBytesLoaded == iBytesTotal){
                       ...
                       _global.iNewWidth = _global.mcContent._width;
                       _global.iNewHeight = _global.mcContent._height;
                       ...
                       delete this.onEnterFrame;
                }

          }
}
Oli K. ist offline   Mit Zitat antworten
Alt 09-11-2006, 10:34   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
if(iBytesLoaded == iBytesTotal){
es gibt auch den fall, das beide null sind.
wenn schon dann besser
if(iBytesTotal && iBytesLoaded >= iBytesTotal){

oder teste gleich auf breite
if(this. _width)

_global.iNewWidth = _global.mcContent._width;
ach herje, _globals nur dann nehmen, wenn's unbedingt sein muss. eventuel hast du überschneidungen, wenn 2 mc's geladen werden.
und in _global.mcLoader.onEnterFrame
_global.mcLoader durch this ersetzen
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 09-11-2006, 10:44   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
Zitat:
Zitat von hgseib Beitrag anzeigen
if(iBytesLoaded == iBytesTotal){
es gibt auch den fall, das beide null sind.
wenn schon dann besser
if(iBytesTotal && iBytesLoaded >= iBytesTotal){

oder teste gleich auf breite
if(this. _width)
*Birne-aufleucht*...

Ja, klar..., das habe ich total vergessen... Super-Tipp! Danke dafür...

Zitat:
Zitat von hgseib Beitrag anzeigen
...
_global.iNewWidth = _global.mcContent._width;
ach herje, _globals nur dann nehmen, wenn's unbedingt sein muss. eventuel hast du überschneidungen, wenn 2 mc's geladen werden.
und in _global.mcLoader.onEnterFrame
_global.mcLoader durch this ersetzen
Nicht hauen...

Eine Überschneidung kann ich glaube ich ausschliessen. Diese Variablen werden nur genutzt, wenn ein Content-MC erzeugt wird und die werden wirklich einzeln auf Knopfdruck erzeugt. Aber trotzdem ein guter Hinweis, vielleicht aus ein paar Globals ein paar Roots zu machen...

Danke, das werde ich auf jeden Fall schonmal umbauen und heute abend testen.
Oli K. ist offline   Mit Zitat antworten
Alt 09-11-2006, 10:48   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.321
"..aus ein paar Globals ein paar Roots.."
das ist den belzebub durch den teufel austreiben ;-)
lass die daten bei ihren objekten, da gehören sie hin.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (09-11-2006 um 10:49 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 09-11-2006, 10:54   #8 (permalink)
Neuer User
 
Registriert seit: Jun 2004
Beiträge: 42
Zitat:
Zitat von hgseib Beitrag anzeigen
"..aus ein paar Globals ein paar Roots.."
das ist den belzebub durch den teufel austreiben ;-)
lass die daten bei ihren objekten, da gehören sie hin.
Stimmt schon. Das ist dann etwas für meinen zweiten Release. v1.00 darf das noch...
Oli K. 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:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele