Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-08-2003, 16:39   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Question createEmptyMovieClip Ebenenproblem?

Vermutlich verstehe ich das mit den Ebenen immer noch nicht ganz. Wenn ich folgendes AS habe:

this["pic1"].createEmptyMovieClip("anker",10);
this["pic1"].anker.loadMovie("xy.swf);

Wobei pic1 ein leerer MC ist.

Wird dieser Code direkt auf _root ausgeführt, funktioniert er richtig, d.h. ein MC namens anker wird gebildet und das swf geladen.

Wird der gleiche Code hingegen in einem MC ausgeführt, der auf _root sitzt, also z.B. _root.instance1, so kreiert createEmptyMovieClip keinen Clip mehr, und natürlich macht auch loadMovie, wie üblich in heiklen Fällen, gar nichts mehr....

Vielen Dank für Eure Hilfe!
jumeier ist offline   Mit Zitat antworten
Alt 04-08-2003, 16:41   #2 (permalink)
Hirnverbrannt
 
Benutzerbild von NastyFrog
 
Registriert seit: Aug 2001
Ort: AUSTRIA
Beiträge: 2.020
Hmm wenns in dem MC einen weiteren namens Pic gibt sollte es eigentlich funken.
__________________
50 Seiten hardcore ActionScript von den Grundlagen bis zu 3D Darstellungen.... eben eine Abendlektüre.

Dogs fucked the Pope, no fault of mine. Watch out! ... Why money? My name is Brinks; I was born ... born? Get sheep over side ... women and children to armored car ... orders from Captain Zeep.(Hunter S. Thompson)
NastyFrog ist offline   Mit Zitat antworten
Alt 04-08-2003, 16:43   #3 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
hi

das problem ist, dass er pic1 auf _root findet,
aber im mc nicht mehr.

gruss skyla
Skyla ist offline   Mit Zitat antworten
Alt 04-08-2003, 16:55   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Heisst das konkret, dass createEmptyMovieClip grundsätzlich nur von _root aus angewendet werden kann?
jumeier ist offline   Mit Zitat antworten
Alt 04-08-2003, 16:57   #5 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
nein. wie gesagt: der interpretor findet in deinem
mc pic1 nicht.

Der Pfad von pic1 ist _root.pic1 und nicht _root.mc.pic1
Skyla ist offline   Mit Zitat antworten
Alt 04-08-2003, 17:19   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Das sieht aber der Debugger anders. Der meint nämlich, dass es einen Target Pfad namens

_level0.instance1.pic1

gibt. Mach ich trace(this) auf instance1, so ergibt sich das gleiche Bild (_level0.instance1). Interessanterweise funktioniert auch this["pic1"].loadMovie("xy.swf") auf instance1 problemlos, also kennt der Interpreter den Pfad. Sobald ich aber die zusätzliche Indirektion mit "anker" habe, ist Ende Fahnenstange.
jumeier ist offline   Mit Zitat antworten
Alt 04-08-2003, 17:24   #7 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
Zitat:
Wird dieser Code direkt auf _root ausgeführt, funktioniert er richtig, d.h. ein MC namens anker wird gebildet und das swf geladen


...bedeutet, dass _root['pic'] oder eben this['pic'] ein gültiger pfad ist und es bedeutet auch, dass _root.mc['pic'] kein gültiger pfad ist.

weil es kann nicht sein, dass das gleiche script auf _root
und in einem mc funktionieren kann. Folglich stimmt irgend-
was bei Deinen Angaben nicht. Up doch mal die fla.

Geändert von Skyla (04-08-2003 um 17:43 Uhr)
Skyla ist offline   Mit Zitat antworten
Alt 04-08-2003, 19:46   #8 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
das problem ist doch das this das du da verwendest. Wenn du den Pfad relativ zu dem MC angeben willst, musst du es so machen:

ActionScript:
  1. this._parent.["pic1"].anker....

absolut und vermutlich besser in diesem Fall wäre einfach

ActionScript:
  1. _root["pic1"].anker....


aber warum überhaupt xxx["pic1"]... und nicht gleich xxx.pic1....
oder steht das ganze noch in ner Schleife??
Janoscharlipp ist offline   Mit Zitat antworten
Alt 04-08-2003, 20:50   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Beiträge: 28
Post

Hier der Code:

for(var i = 0; i < adsLength; i++)
{
var aPic = "pic"+(i + 1);
this[aPic].createEmptyMovieClip("anker1", 10);
var toLoad = path + ads[i] + "/" + ads[i] + "Ad.swf";
this[aPic].anker1.loadMovie(toLoad);
.....
}


Noch ein paar Erklärungen: in _root gibt es genau eine Instanz des Filmes "Kino", "kino_mc". kino_mc entspricht in diesem Script "this". In kino_mc sind mehrere leere MCs plaziert (pic1 ...n, welchen jetzt irgendein SWF zugewiesen wird, deren Namen im Array "ads" stehen. Da diese Filme jedoch clickable sein müssen, muss denn Pics noch ein weiterer Film zugewiesen werden, da loadMovie bekanntlich alle Events wegbläst.... Am einfachsten geschieht dies, möchte man meinen, mit createEmptyMovieClip.

Nur, createEmptyMovieClip kreiert offenbar nichts, entsprechend funzt auch loadMovie nicht. Der Debugger zeigt anker1 in der Filme-Hierarchie auch nicht an.

Mehrere Dinge sind hier irritierend:

1) Mache ich im obigen Script ein trace(this[aPic]), so wird wunderbar angezeigt: "_level0.kino_mc.pic1". Wenn Flash schon weiss, wo ich bin, weshalb tut dann createEmptyMovieClip nichts?

2) Verzichte ich auf die Indirektion mit "anker1", so ergibt sich folgender Code:

for(var i = 0; i < adsLength; i++)
{
var aPic = "pic"+(i + 1);
var toLoad = path + ads[i] + "/" + ads[i] + "Ad.swf";
this[aPic].loadMovie(toLoad);
.....
}

Klappt hervorragend!

3) Verwende ich das in der Einleitung gezeigte Codesegment direkt unter _root, also nicht in kino_mc, klappt die Sache auch bestens. Im Unterschied zum Grundproblem zeigt der Debugger hier anker1 in seiner Hierarchie an.

Thanks for dumping your brain!
jumeier ist offline   Mit Zitat antworten
Alt 05-08-2003, 06:44   #10 (permalink)
tiefst-schlaefer
 
Registriert seit: Aug 2002
Ort: bratwurstmetropole
Beiträge: 174
versuchs doch mal mit dem erhoehen der ebenen,

ActionScript:
  1. // das script liegt in der timeline von kino_mc
  2. this[aPic].createEmptyMovieClip("anker1", (100+i));
  3. // oder absolute adressierung
  4. _root.kino_mc[aPic].createEmptyMovieClip("anker1", (100+i));

in beiden anweisungen sollten - je nach menge von adsLength - die mc´s pic1 - picn erstellt werden.
im uebrigen ist adsLength wohl ne variable, also kein array "ads" bei dem mit length (ads.lentgh) die anzahl der eintraege ausgelesen werden soll ???
ansonsten kann ich keine weiteren unstimmigkeiten in deinem script entdecken; sollte also laufen.

schoenen tag - gruesze j_poul
j_poul 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 01:44 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele