Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-04-2010, 12:33   #1 (permalink)
Auch Flasher
 
Registriert seit: Aug 2001
Beiträge: 88
Problem mit dynamischen Textfeld in MC

Hallo,

ok, ich hab mir ein Skript erstellt welches Bilder dynamisch einliest, diese Bilder dann durchwechselt und mit einem Maskeneffekt versieht.

Nun möchte ich noch zu jedem Bild einen Text anzeigen. Dies funktioniert auch soweit. Nur möchte ich das der Text auf dem Bild liegt und ebenfalls maskiert wird.

Dazu erstelle ich ein Textfeld in meinem Bilder MC, der Text befindet sich ja dann im MC und sollte somit mit maskiert werden, oder?

PHP-Code:
var mc_dummy this.createEmptyMovieClip("con"+level,level);
var 
mc_text mc_dummy.createTextField("txt"+levellevel+10045020); // Textfeld erstellen 
Das funktioniert so aber nicht, wenn ich allerdings this.createTextField.. versuche erscheint zwar der Text, liegt aber über der Maske.

Kann mir jemand helfen, hier das komplette Skript:
PHP-Code:
var level:Number 0;
var 
index:Number 0//Zähler Variable
var mcs:Array = new Array(); //Array für Bilder MC's erstellen
 
function uebergang(){ // Funktion zum überblenden und Maske setzen
    
var mc_dummy this.createEmptyMovieClip("con"+level,level);
    var 
mc_text mc_dummy.createTextField("txt"+levellevel+10045020); // Textfeld erstellen
    
mc_text.html true;
    
mc_text.htmlText XMLdaten_beschreibung[index]; // Daten aus der Liste dem Textfeld zuweisen
    
mc_text.embedFonts true;
    
mc_text._alpha 65;
    
mc_text.background true;
      
    
txt_Format = new TextFormat(); // Format für Textfeld
    
txt_Format.color 0x000000;
    
txt_Format.font "Verdana";
    
txt_Format.size 14;
    
mc_text.setTextFormat(txt_Format); // Das Format dem Textfeld zuweisen
    
    
this.mcs.push(mc_dummy); // MovieClip in Array schreiben
    
var mask_mc this.attachMovie("maske_grid""maske_grid"999999); // Masken MC anhängen
    
    
var mclListener:Object = new Object(); // Listener für MovieClipLoader erstellen 
    
var mcLoader:MovieClipLoader = new MovieClipLoader();// MovieClipLoader erstellen und Bild in MC laden
    
mcLoader.addListener(mclListener);
    
mcLoader.loadClip(XMLdaten_bilderpfad[index], mcs[level]);
    
mclListener.onLoadInit = function(mc:MovieClip) { // laden war erfolgreich, Maske setzen
       
mc.setMask(mask_mc);
       
trace (mc_text);
       
_root.removeMovieClip("con"+(level-2));
    }  
 
      
index = (++index)%XMLdaten_bilderpfad.length// Zählvariable setzen
      
++level;
}
uebergang(); // Funktionsaufruf
aufruf setInterval(this'uebergang'4000); // Funktionsaufruf alle 4 Sekunden 
Vielen Dank vorab
Viele Grüße
Rolf

Geändert von ninja (14-04-2010 um 13:25 Uhr)
ninja ist offline   Mit Zitat antworten
Alt 15-04-2010, 08:37   #2 (permalink)
Auch Flasher
 
Registriert seit: Aug 2001
Beiträge: 88
Question

Weiß denn niemand eine Lösung?

Viele Grüße
Rolf
__________________
Der Weg ist das Ziel - Konfuzius, China
Das Ziel ist weg - Tom Cruise, Top Gun
ninja ist offline   Mit Zitat antworten
Alt 15-04-2010, 10:07   #3 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
Hallo,

schau dir mal im Debugg-Modus an, welcher MC wo liegt, dann dürftest du bescheid wissen wieso deine Maske nicht auf dem Textfeld aktiv ist.

Gruß,
Michi
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 15-04-2010, 11:36   #4 (permalink)
Auch Flasher
 
Registriert seit: Aug 2001
Beiträge: 88
Zitat:
Zitat von M!ch! Beitrag anzeigen
.... dann dürftest du bescheid wissen wieso deine Maske nicht auf dem Textfeld aktiv ist.
Hallo,

nein, leider nicht wirklich. Vielleicht sitz ich grad auch aufm Schlauch.

Ich erstell doch mit
PHP-Code:
var mc_text mc_dummy.createTextField("txt"+levellevel+10045020); // Textfeld erstellen 
das Textfeld im Container. Der Container wird ja maskiert, warum erscheint das Textfeld nicht?

Oder hab ich wirklich nen Denkfehler??

Viele Grüße
Rolf
__________________
Der Weg ist das Ziel - Konfuzius, China
Das Ziel ist weg - Tom Cruise, Top Gun
ninja ist offline   Mit Zitat antworten
Alt 15-04-2010, 12:35   #5 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
Hey,

ich weiß nicht genau, ich gehe so nie vor beim Programmieren. Ich komme auf anderer Weise besser klar. Ich würde deine Struktur so aufbauen ...
PHP-Code:
this.createEmptyMovieClip("con"+levellevel);
    
this["con"+level].createTextField("txt"+levellevel+10045020);
        
        
this["con"+level]["txt"+level].html true;
        
this["con"+level]["txt"+level].htmlText = ...
        [...] 
So würde ich es machen, aber ich bin kein Profi. Es gibt bestimmt nen einfacheren Weg, bzw kürzeren.
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 15-04-2010, 13:02   #6 (permalink)
Auch Flasher
 
Registriert seit: Aug 2001
Beiträge: 88
Zitat:
Zitat von M!ch! Beitrag anzeigen
Hey,

ich weiß nicht genau, ich gehe so nie vor beim Programmieren. Ich komme auf anderer Weise besser klar. Ich würde deine Struktur so aufbauen ...
PHP-Code:
this.createEmptyMovieClip("con"+levellevel);
    
this["con"+level].createTextField("txt"+levellevel+10045020);
        
        
this["con"+level]["txt"+level].html true;
        
this["con"+level]["txt"+level].htmlText = ...
        [...] 
So würde ich es machen, aber ich bin kein Profi. Es gibt bestimmt nen einfacheren Weg, bzw kürzeren.
Aber das ist doch exakt dasselbe wie
PHP-Code:
var mc_dummy this.createEmptyMovieClip("con"+level,level);
    var 
mc_text mc_dummy.createTextField("txt"+levellevel+10045020); // Textfeld erstellen 
nur das ich mir mit meiner Methode leichter tu, ich setz die Eigenschaft mit "mc_text.html = true;" anstatt mit "this["con"+level]["txt"+level].html = true;"

Viele Grüße
Rolf
__________________
Der Weg ist das Ziel - Konfuzius, China
Das Ziel ist weg - Tom Cruise, Top Gun
ninja ist offline   Mit Zitat antworten
Alt 15-04-2010, 13:17   #7 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
Ja, das habe ich mir schon gedacht, aber wie gesagt, ich komme mit meiner Schreibweise besser klar. Frage mich nicht wieso, aber ich hab mich bisher immer mit schwer getan da durch zu blicken. Ich versuche mich auch schon umzustellen.

Aber was ist denn mit dem Debugger? Da kann man doch sehen welcher MC in welchem steckt bzw wozu gehört. Da dürft es doch zu sehen sein.
Den Debugger hab ich mir auch seid kurzem angewöhnt bzw. bin noch dabei mir anzugewöhnen den zu benutzen.

Vielleicht noch nen anderer Ansatz:
du arbeitest die ganze Zeit mit this, aber bei removeMovieClip nimmst du _root. Wenn du auf der Hauptzeitleiste bist, arbeite doch am besten überall mit _root.

Noch was:
Du setzt die Maske so:
PHP-Code:
mc.setMask(mask_mc); 
also über mehrere Variablen. Versuche es doch testweise mal "direkt":
PHP-Code:
_root["con"+level].setMask(mask_mc
Gruß,
Michi
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 15-04-2010, 14:06   #8 (permalink)
Auch Flasher
 
Registriert seit: Aug 2001
Beiträge: 88
Hallo,

die Maske wird doch gesetzt, also der MovieClip wird richtig maskiert.
Das Problem ist das das Textfeld nicht zu sehen ist. Dieses liegt in dem MovieClip welcher maskiert wird, ist aber nicht zu sehen.

Viele Grüße
Rolf
__________________
Der Weg ist das Ziel - Konfuzius, China
Das Ziel ist weg - Tom Cruise, Top Gun
ninja ist offline   Mit Zitat antworten
Alt 15-04-2010, 14:07   #9 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
hm ... kannst du die .fla-Datei anhängen?
Dann würde ich es mir mal anschauen ... versprechen kann ich aber nix.
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 16-04-2010, 08:02   #10 (permalink)
Auch Flasher
 
Registriert seit: Aug 2001
Beiträge: 88
Hallo,

Fla hängt an.

Viele Grüße
Rolf
Angehängte Dateien
Dateityp: zip for Forum.zip (85,8 KB, 4x aufgerufen)
__________________
Der Weg ist das Ziel - Konfuzius, China
Das Ziel ist weg - Tom Cruise, Top Gun
ninja ist offline   Mit Zitat antworten
Alt 16-04-2010, 09:13   #11 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
... also tut mir leid, ich komme nicht drauf.
Wenn ich mir das alles im Debugger anschaue, wird das Textfeld nichtmal angelegt. Keine Ahnung wieso. Mache ich jedoch ...
PHP-Code:
_root.createTextField("txt"+levellevel+10045020); 
sehe ich nicht nur das Textfeld (ok, das ist logisch), es wird auch im Debugger angezeigt.

Ich versuche mir das nochmal anzuschauen, vielleicht komme ich ja dahinter. Aber bis jetzt weiß ich noch nichts. :-/

Gruß,
Michi
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 16-04-2010, 10:49   #12 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
... also das ist echt komisch. Anscheinend kann man keine Textfelder in verschachtelten MCs erstellen ... aber irgendwie doch. oO

Also ich erstelle mit folgendem AS2 ein Textfeld (erfolgreich):
PHP-Code:
var txt:TextField _root.mcRoot.mcPictures.createTextField("txtField"70000505020020); 
Das wird angezeigt und ist im Debugger auch zu sehen (siehe screen1).


In meinem MC "mcPictures" werden nun wiederum mehrere MCs erstellt.
Und wenn ich dann mein Textfeld in einem bzw in alle MCs unter "mcPictures" erstellen möchte, klappt es nicht mehr:
PHP-Code:
var txt:TextField _root.mcRoot.mcPictures["mcPicture"+i].createTextField("txtField"70000505020020); 
Nun ist das Textfeld nicht mehr zu sehen und auch im Debugger wird keins angezeigt (siehe screen2).
Ich hab keine Ahnung wieso. Weiß jemand anderes hier weiter? Wäre super, weil das interessiert mich wohl.

Gruß
Michi
Angehängte Grafiken
Dateityp: jpg screen1.jpg (47,3 KB, 7x aufgerufen)
Dateityp: jpg screen2.jpg (45,3 KB, 6x aufgerufen)
__________________

Geändert von M!ch! (16-04-2010 um 10:52 Uhr)
M!ch! ist offline   Mit Zitat antworten
Alt 16-04-2010, 12:03   #13 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
zunächst hab ich dein script in frame zwei geringfügig modifiziert.

dann habe ich eine schriftart in der bibliothek erstellt
bibliothek -> neue schriftart
als name habe ich verdi genommen, kannst du frei wählen, dann stellst du die gewünschten eigenschaften ein

wichtig!!!
export für actionscript muss ausgewählt sein, als bezeichner taucht dann der name auf den du oben eingegeben hast.

das mit der schriftart ist wichtig um _alpha auf text anzuwenden, funzt nur bei eingebetteter schriftart!
eine eingebettete schriftart
PHP-Code:
mc_text.embedFonts true
wird erst sichtbar wenn du das so machst wie oben beschrieben.

PHP-Code:
var level:Number 0;
var 
index:Number 0//Zähler Variable
var mcs:Array = new Array(); //Array für Bilder MC's erstellen

var txt_Format = new TextFormat(); // Format für Textfeld
txt_Format.color 0x000000;
txt_Format.font "verdi";
txt_Format.size 14;
var 
mc_text createTextField("txt"50000045020);
mc_text.embedFonts true;
mc_text._alpha 65;


var 
mclListener:Object = new Object(); // Listener für MovieClipLoader erstellen 
var mcLoader:MovieClipLoader = new MovieClipLoader();// MovieClipLoader erstellen und Bild in MC laden
mcLoader.addListener(mclListener);
    
mclListener.onLoadComplete = function(mc:MovieClip) { // laden war erfolgreich, Maske setzen
     
var mask_mc attachMovie("maske_grid""maske_grid"10);
       
mc.setMask(mask_mc);
        
description(index);
    }

  
  function 
description(ind:Number){
      
mc_text.htmlText XMLdaten_beschreibung[ind];
      
mc_text.setTextFormat(txt_Format);
  }
function 
uebergang(){ // Funktion zum überblenden und Maske setzen
    
var mc_dummy this.createEmptyMovieClip("con"+levellevel);
    
this.mcs.push(mc_dummy); // MovieClip in Array schreiben
    
mcLoader.loadClip(XMLdaten_bilderpfad[index], mcs[level]);  
 
      
index = (++index)%XMLdaten_bilderpfad.length// Zählvariable setzen
      
++level;
}
uebergang(); // Funktionsaufruf
aufruf setInterval(this'uebergang'4000); // Funktionsaufruf alle 4 Sekunden  
stop(); 
__________________
[mooseMash]
mooseMash ist offline   Mit Zitat antworten
Alt 16-04-2010, 12:54   #14 (permalink)
Auch Flasher
 
Registriert seit: Aug 2001
Beiträge: 88
Hallo,

vielen Dank für deine Hilfe, aber so weit war ich doch auch schon, siehe Post weiter oben.
Zitat:
wichtig!!!
export für actionscript muss ausgewählt sein, als bezeichner taucht dann der name auf den du oben eingegeben hast.
Das weiß ich, ich habe die Schriftart in der orginal Fla auch eingebettet, mit Verknüpfer "Verdana". Ich hab das und ein paar weitere Sachen nur rausgenommen weil das Zipfile sonst zu gross gewesen wäre.

Mein Problem besteht immer noch, ich möchte das das Textfeld mit maskiert wird, also sich hinter der Maske befindet.

Viele Grüße, Rolf
__________________
Der Weg ist das Ziel - Konfuzius, China
Das Ziel ist weg - Tom Cruise, Top Gun

Geändert von ninja (16-04-2010 um 12:55 Uhr)
ninja ist offline   Mit Zitat antworten
Alt 16-04-2010, 13:56   #15 (permalink)
.
 
Registriert seit: May 2003
Ort: bayern
Beiträge: 1.117
okay, versuch nummer zwei.

erstelle einen neuen MovieClip ohne Inhalt
einen weitern movieclip -> "pic_holder", beide statisch auf der Bühne

in pic_holder auf level_0 legst du den mc ohne inhalt und nennst ihn "img", auf ebene _1 in "pic_holder" erzeugst du statisch ein textfeld -> "tf"

jetzt kannst du die bilder in pic_holder.img laden den text in pic_holder.tf, die maske setzt du auf pic_holder.

PHP-Code:
var level:Number 0;
var 
index:Number 0//Zähler Variable
var mcs:Array = new Array(); //Array für Bilder MC's erstellen

var txt_Format = new TextFormat(); // Format für Textfeld
txt_Format.color 0x000000;
txt_Format.font "verdi";
txt_Format.size 14;


var 
mclListener:Object = new Object(); // Listener für MovieClipLoader erstellen 
var mcLoader:MovieClipLoader = new MovieClipLoader();// MovieClipLoader erstellen und Bild in MC laden
mcLoader.addListener(mclListener);
    
mclListener.onLoadComplete = function(mc:MovieClip) { // laden war erfolgreich, Maske setzen

     
var mask_mc attachMovie("maske_grid""maske_grid"10);
       
mc._parent.setMask(mask_mc);
        
description(mc._parentindex);
        
    }

  
  function 
description(mc:MovieClipind:Number){
      
      
mc.tf.htmlText XMLdaten_beschreibung[ind];
      
mc.tf.setTextFormat(txt_Format);
  }
function 
uebergang(){ // Funktion zum überblenden und Maske setzen
    
var mc_dummy attachMovie("pic_holder""dummy_"+levellevel);

    
mc_dummy.tf.embedFonts true;
    
mc_dummy.tf._alpha 65;

    
mcLoader.loadClip(XMLdaten_bilderpfad[index], mc_dummy.img);  
     
_root.removeMovieClip(_level0["dummy_"+(level-2)]);
    if(
level>0)_root["dummy_"+(level-1)].tf.text "";
      
index = (++index)%XMLdaten_bilderpfad.length// Zählvariable setzen
      
++level;
}
uebergang(); // Funktionsaufruf
aufruf setInterval(this'uebergang'4000); // Funktionsaufruf alle 4 Sekunden  
stop(); 
__________________
[mooseMash]
mooseMash ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
createemptymovieclip, createtextfield, maske

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash CS4] Problem mit dynamischen Textfeld Kerigen Flash Einsteiger 0 29-05-2009 13:51
Problem bei dynamischen Textfeld Crash32 Flash 4 und Flash 5 3 03-08-2004 09:01
Problem mit dynamischen Textfeld!!! MrXXL Flash MX 7 24-07-2004 14:36
Problem mit Dynamischen Textfeld one_joe_k ActionScript 1 2 03-05-2004 11:26
Problem mit dynamischen Textfeld cyberstar ActionScript 1 3 05-10-2003 20:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele