Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-05-2007, 23:21   #1 (permalink)
Der Provinzflasher...
 
Registriert seit: Oct 2001
Ort: Bad Oeynhausen
Beiträge: 245
Problem mit Schaltflächen

Hallo ,

also entweder ist heute nicht mein Tag oder ich bin blind...

Ich habe ein Array mit Navi-Elementen angelegt (_root.nv_elements).
Nun wird anhand diesen Arrays die Navi-Liste erstellt. Dafür habe ich
einen MC angelegt mit einem dyn. Textfeld (nv_item_txt) und einer
Schaltfläche (nv_item_sf). Das funktioniert auch ohne Probleme.

In dem Navi-MC ist die Breite der SF allerdings fix.
Das wollte ich ändern, damit die SF immer genauso breit ist wie das
Textfeld (welches auf autoSize = "left" eingestellt ist).

Dazu das folgende Script:

PHP-Code:
for (i=i<_root.nv_elements.length i++) {
    
    if (
_root.nv_elements[i] != "") {
        
        
this["nv_" i].nv_item_sf._width this["nv_" i].nv_item_txt._width;
        
        
trace("sf: " this["nv_" i].nv_item_sf._width " | txt: " this["nv_" i].nv_item_txt._width);        
        
    } 
    

Nun klappt das aber garnicht...
Der Trace-Befehl gibt folgendes aus:

Code:
sf: 0 | txt: 33.65
sf: 0 | txt: 26.65
sf: 0 | txt: 30.45
sf: 0 | txt: 82
sf: 0 | txt: 44.65
sf: 0 | txt: 118.85
sf: 0 | txt: 99.7
sf: 0 | txt: 157.85
sf: 0 | txt: 39.65
sf: 0 | txt: 41.85
sf: 0 | txt: 69.65
sf: 0 | txt: 114.85
sf: 0 | txt: 66.85
sf: 0 | txt: 25.95
sf: 0 | txt: 49.45
sf: 0 | txt: 63.05
Also das Script liest die Breiten des Textfeldes korrekt aus,
kann diese aber nicht auf die Schaltflächen anwenden.

Wie kommt das? Ist mir da irgendwie einen Denkfehler unterlaufen??

Ach ja, die Instanzen von der SF und dem Textfeld sind übrigens
innerhalb des o. g. Navi-MCs und auf der gleichen Ebene.

Weiß jemand Rat?

Danke für die Hilfe schonmal.

Gruß, derkrebs
__________________
Es gibt nix Gutes außer man TUT es...
derkrebs ist offline   Mit Zitat antworten
Alt 21-05-2007, 08:40   #2 (permalink)
Webverwickler
 
Benutzerbild von wanst
 
Registriert seit: May 2005
Beiträge: 327
Wie sieht denn das Ergebnis aus? Alle gleich breit so wie angelegt oder unterschiedlich breit wie das trace-Ergebnis zeigt, nur eben nicht passend zu der tatsächlichen Breite des Textfeldes?
Wie werden denn die _sf erzeugt? Kannst du denen eine fixe Breite zuweisen?
__________________
Gruß
Wanst

Reden ist Silber, Schweigen ist Gold! ... Meistens
wanst ist offline   Mit Zitat antworten
Alt 21-05-2007, 08:52   #3 (permalink)
Webverwickler
 
Benutzerbild von wanst
 
Registriert seit: May 2005
Beiträge: 327
ausprobiert

ich hab das gerade mal im MX 2004 in einer leeren FLA getestet und so funktioniert es:
PHP-Code:
var a:Array = new Array('asdf''xvcncxadffjkghjkncvnb''weqrqtqrzwZ');
var 
xx:Number 50;
for (
i in a) {
    var 
yy:Number 20+30*i;
    
_root.createTextField('t'+i100+ixxyy1020);
    var 
j:TextField _root['t'+i];
    
j.autoSize 'left';
    
j.text a[i];
    var 
io:Object = new Object();
    
io._x xx-5;
    
io._y yy-1;
    
io._width j._width 10;
    
io._height 22;
    
_root.attachMovie('rect''r'+i10+iio);

rect ist ein 10x10px großes Quadrat in der Bibliothek, das Script steht in Bild 1, sonst steht da nichts.

Wie gesagt, Flash MX 2004, aber wenn das geht, sollte es im Flash 8 kein Problem sein...
__________________
Gruß
Wanst

Reden ist Silber, Schweigen ist Gold! ... Meistens
wanst ist offline   Mit Zitat antworten
Alt 21-05-2007, 09:49   #4 (permalink)
Der Provinzflasher...
 
Registriert seit: Oct 2001
Ort: Bad Oeynhausen
Beiträge: 245
Hallo wanst,

danke für Deine Antwort!

Das Ergebnis sieht aus wie in der Trace-Ausgabe gezeigt:
Die Breiten der Textfelder werden richtig erkannt, jedoch
werden diese aus irgendwelchen Gründen nicht auf die
Breiten der Schaltflächen übertragen – trotz des Befehls:
PHP-Code:
this["nv_" i].nv_item_sf._width this["nv_" i].nv_item_txt._width
D. h. die Schaltflächen werden auf die Breite 0 gesetzt, obwohl
diese in dem ursprünglichen Navi-Element-MCs alle die gleiche
Breite von 218 Px haben...

Die Erstellung der Navi-Items funktioniert übrigens einwandfrei
nach meinem Script. Das Ursprungs-Navi-MC enthält ein
Textfeld und darüber eine aktive Schaltfläche. Die Textfelder sind
dynamisch, instanziert (nv_item_txt) und mit Variable versehen
(nv_item; Zuweisung der Texte klappt), die Schaltflächen sind
instanziert (nv_item_sf). Der Navi-MC ist für AS exportiert/verknüpft
und wird per attachMovie geladen (in einer for-Schleife, die das
Array mit den Navi-Elementen durchläuft).

Es geht also nur darum, die Breiten der Schaltflächen anhand der
Breiten der Textfelder anzupassen (was halt nicht funktioniert...).

Ich werde heute abend mal eine FLA posten zum besseren Verständnis.

Gruß, derkrebs
__________________
Es gibt nix Gutes außer man TUT es...
derkrebs ist offline   Mit Zitat antworten
Alt 21-05-2007, 11:01   #5 (permalink)
Webverwickler
 
Benutzerbild von wanst
 
Registriert seit: May 2005
Beiträge: 327
servus krebs,

ich fürchte, die FLA wird mir nicht viel helfen.

Ich vermute ein Laufzeitproblem. Du kannst dem _sf die Breite noch nicht zuweisen, weil es noch nicht geladen ist. Ein Bild später geht das. Du kannst ihm aber eine Initialisierungsobjekt mitgeben, dessen Werte von dem zu ladenden MC übernommen werden. So mache ich das in dem Script oben, es heißt 'io' und wird hier übergeben:
PHP-Code:
_root.attachMovie('rect''r'+i10+iio)
                                       ^^ 
Alternativ kannst du das _sf auch mit einem onEnterFrame versehen und darin die Breite zuweisen. Das wird nämlich erst aufgerufen, wenn der MC wirklich geladen ist.

Probier doh mal, was passiert, wenn du dem anstelle der Breite des Textfeldes einen Fantasiewert übergibst, i*15 zum Beispiel.
wanst ist offline   Mit Zitat antworten
Alt 21-05-2007, 21:36   #6 (permalink)
Der Provinzflasher...
 
Registriert seit: Oct 2001
Ort: Bad Oeynhausen
Beiträge: 245
Hallo,

ich weiß nun endlich wo das Problem lag:

Man kann den Instanzen der Schaltflächen-Symbole, in denen nur die
Spalte "Aktiv" mit Inhalt belegt ist, offenbar keine Werte zuweisen.

Nachdem ich auf allen Spalten in dem Schaltflächen-Symbol eine
gefüllte Fläche gelegt hatte, wurden die Breiten korrekt den
Schaltflächen-Instanzen zugewiesen.

Muß man erstmal drauf kommen. Aber warum das so ist,
weiß ich auch nicht...

Gruß, derkebs
__________________
Es gibt nix Gutes außer man TUT es...
derkrebs ist offline   Mit Zitat antworten
Alt 22-05-2007, 13:00   #7 (permalink)
Webverwickler
 
Benutzerbild von wanst
 
Registriert seit: May 2005
Beiträge: 327
ja aber

warum nimmst du statt dessen nicht einfach einen MC?
__________________
Gruß
Wanst

Reden ist Silber, Schweigen ist Gold! ... Meistens
wanst ist offline   Mit Zitat antworten
Alt 22-05-2007, 13:21   #8 (permalink)
Der Provinzflasher...
 
Registriert seit: Oct 2001
Ort: Bad Oeynhausen
Beiträge: 245
Im Prinzip ...

... hab ich das ja so gemacht. Nur eben statt einem MC
ein Schaltflächen Symbol. Ein MC müsste ja auch Inhalt
enthalten, damit dieser klickbar wird (soweit ich weiß).

Naja, klappt ja nun...

Vielen Dank für Deine Hilfe!

Gruß, derkrebs
__________________
Es gibt nix Gutes außer man TUT es...
derkrebs 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 19:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele