Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-06-2011, 09:17   #1 (permalink)
FlashUser
 
Registriert seit: Feb 2002
Beiträge: 42
Problem mit Instanznamen

Hallo Leute,

ich bin neu in Actionscript 3 und komme mit folgendem Problem nicht mehr weiter.

Ich erzeuge in einer Schleife Textfelder und gebe ihnen einen Instanznamen.
Die Instanznamen entnehme ich einer xml. Soweit funktioniert das auch (siehe trace).

PHP-Code:
var anzahl:int;
var 
zeilenabstand:Number;

var 
saefte:XML =
    <
saefte>
        <
saft id="orange" scr="labels/orange.png">
            <
anzeigename>Orange</anzeigename>
        </
saft>
        <
saft id="mango" scr="labels/mango.png">
            <
anzeigename>Mango</anzeigename>
        </
saft>
        <
saft id="multivitamin" scr="labels/multivitamin.png">
            <
anzeigename>Multivitamin</anzeigename>
        </
saft>
    </
saefte>;
        
anzahl saefte.children().length();
buildEditor();


function 
buildEditor():void
{
    
zeilenabstand 25;
    
    for (var 
i:int 0anzahli++)
    {
        var 
textfeld_PUR:TextField = new TextField();
        
textfeld_PUR.158;
        
textfeld_PUR.82 zeilenabstand i;
        
textfeld_PUR.height 20;
        
textfeld_PUR.width 60;
        
textfeld_PUR.background true;
        
textfeld_PUR.backgroundColor 0x999999;
        
textfeld_PUR.type TextFieldType.INPUT;
        
textfeld_PUR.name saefte.saft[i]. @ id.toString();
        
addChild(textfeld_PUR);
        
trace("textfeld_PUR.name = "+textfeld_PUR.name)
    }
}

//this.orange.x = 0; 
Nun möchte ich auf die Textfelder über den Instanznamen zugreifen.
zB: this.orange.x = 0;
Doch das funktioniert leider nicht. Was mache ich falsch??

Kann mir da jemand weiterhelfen?

Besten Dank und viele Grüße
fladosh ist offline   Mit Zitat antworten
Alt 07-06-2011, 09:40   #2 (permalink)
Odin zum Gruße!
 
Benutzerbild von Oxigan
 
Registriert seit: Nov 2006
Ort: Ösiland
Beiträge: 327
PHP-Code:
var instanceName:String 'orange';
var 
textField:TextField getChildByNameinstanceName ) as TextField;
textField.
__________________
keine PM´s bezüglich Flash-Fragen - dafür haben wir das Forum. Thx.
Oxigan ist offline   Mit Zitat antworten
Alt 07-06-2011, 09:47   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von fladosh Beitrag anzeigen
Doch das funktioniert leider nicht. Was mache ich falsch??
Die Eigenschaft name ist in AS3 nicht automatisch an eine gleichnamige Variable im übergordneten Objekt gekoppelt. Falls das übergeordnete Objekt dynamic ist (das ist z.B. bei Instanzen vom Typ MovieClip oder Object der Fall), lässt sich eine solche Variable natürlich mit der Klammersyntax erzeugen...
PHP-Code:
thissaefte.saft[i].@id ] = textfeld_PUR
...allerdings ist diese Vorgehen nicht sonderlich empfehlenswert. Um Laufzeitfehler zu vermeiden und typsicher arbeiten zu können, sollte man solche dynamisch deklarierte, untypisierte Variablen, wenn irgend möglich vermeiden. Stattdessen würde ich Dir empfehlen diese Instanzen in einem Array und ggf. zusätzlich noch mal in einem Object zu verwalten:
PHP-Code:
var textfeldArray:Array = [];
var 
textfeldByName:Object = {};

// ...

    
textfeldArray.push(textfeld_PUR);
    
textfeldObject[saefte.saft[i].@id] = textfeld_PUR;

// ... 
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 07-06-2011, 10:24   #4 (permalink)
FlashUser
 
Registriert seit: Feb 2002
Beiträge: 42
Vielen Dank Oxygan, so funktioniert´s!!

Jetzt wollte ich die Textfelder an einen MoviClip "editor" attachen

PHP-Code:
var anzahl:int;
var 
zeilenabstand:Number;
var 
editor:MovieClip = new MovieClip();

var 
saefte:XML =
    <
saefte>
        <
saft id="orange" scr="labels/orange.png">
            <
anzeigename>Orange</anzeigename>
        </
saft>
        <
saft id="mango" scr="labels/mango.png">
            <
anzeigename>Mango</anzeigename>
        </
saft>
        <
saft id="multivitamin" scr="labels/multivitamin.png">
            <
anzeigename>Multivitamin</anzeigename>
        </
saft>
    </
saefte>;
        
anzahl saefte.children().length();
buildEditor();


function 
buildEditor():void
{
    
zeilenabstand 25;
    
editor.344;
    
editor.188;
    
addChild (editor);
    
    for (var 
i:int 0anzahli++)
    {
        var 
textfeld_PUR:TextField = new TextField();
        
textfeld_PUR.158;
        
textfeld_PUR.82 zeilenabstand i;
        
textfeld_PUR.height 20;
        
textfeld_PUR.width 60;
        
textfeld_PUR.background true;
        
textfeld_PUR.backgroundColor 0x999999;
        
textfeld_PUR.type TextFieldType.INPUT;
        
textfeld_PUR.name saefte.saft[i]. @ id.toString();
        
editor.addChild(textfeld_PUR);
        
trace("textfeld_PUR.name = "+textfeld_PUR.name)
    }
}



var 
instanceName:String 'orange';
var 
textField:TextField editor.getChildByNameinstanceName ) as TextField;
editor.textField.0

Wieso geht das nun nicht mehr??
fladosh ist offline   Mit Zitat antworten
Alt 07-06-2011, 10:37   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von fladosh Beitrag anzeigen
PHP-Code:
var instanceName:String 'orange';
var 
textField:TextField editor.getChildByNameinstanceName ) as TextField;
editor.textField.0
Wieso geht das nun nicht mehr??
Wie ich schon sagte:
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Die Eigenschaft name ist in AS3 nicht automatisch an eine gleichnamige Variable im übergordneten Objekt gekoppelt.
Wenn Du im aktuellen Objekt eine Variable Namens textField erstellst, gibt es also keinen Grund, weshalb es im Objekt editor plötzlich auch eine Variable mit diesem Namen geben sollte.

In AS3 ist die Anzeigeliste viel flexibler als in AS1/2 und wurde deshalb komplett von den Eigenschaften/Variablen entkoppelt. Aus diesem Grund muss es im überggeordneten Objekt überhaupt keine Variable geben, die auf die darin enthalten Elemente zeigt.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (07-06-2011 um 10:39 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 07-06-2011, 11:45   #6 (permalink)
Odin zum Gruße!
 
Benutzerbild von Oxigan
 
Registriert seit: Nov 2006
Ort: Ösiland
Beiträge: 327
Zitat:
Zitat von fladosh Beitrag anzeigen
Vielen Dank Oxygan, so funktioniert´s!!

Jetzt wollte ich die Textfelder an einen MoviClip "editor" attachen

PHP-Code:
var anzahl:int;
var 
zeilenabstand:Number;
var 
editor:MovieClip = new MovieClip();

var 
saefte:XML =
    <
saefte>
        <
saft id="orange" scr="labels/orange.png">
            <
anzeigename>Orange</anzeigename>
        </
saft>
        <
saft id="mango" scr="labels/mango.png">
            <
anzeigename>Mango</anzeigename>
        </
saft>
        <
saft id="multivitamin" scr="labels/multivitamin.png">
            <
anzeigename>Multivitamin</anzeigename>
        </
saft>
    </
saefte>;
        
anzahl saefte.children().length();
buildEditor();


function 
buildEditor():void
{
    
zeilenabstand 25;
    
editor.344;
    
editor.188;
    
addChild (editor);
    
    for (var 
i:int 0anzahli++)
    {
        var 
textfeld_PUR:TextField = new TextField();
        
textfeld_PUR.158;
        
textfeld_PUR.82 zeilenabstand i;
        
textfeld_PUR.height 20;
        
textfeld_PUR.width 60;
        
textfeld_PUR.background true;
        
textfeld_PUR.backgroundColor 0x999999;
        
textfeld_PUR.type TextFieldType.INPUT;
        
textfeld_PUR.name saefte.saft[i]. @ id.toString();
        
editor.addChild(textfeld_PUR);
        
trace("textfeld_PUR.name = "+textfeld_PUR.name)
    }
}



var 
instanceName:String 'orange';
var 
textField:TextField editor.getChildByNameinstanceName ) as TextField;
editor.textField.0

Wieso geht das nun nicht mehr??


probier mal

PHP-Code:
var instanceName:String 'orange';
var 
textField:TextField editor.getChildByNameinstanceName ) as TextField;
textField.0
__________________
keine PM´s bezüglich Flash-Fragen - dafür haben wir das Forum. Thx.
Oxigan ist offline   Mit Zitat antworten
Alt 07-06-2011, 18:28   #7 (permalink)
FlashUser
 
Registriert seit: Feb 2002
Beiträge: 42
Vielen Dank Oxygan, jetzt geht´s!

Und vielen Dank auch für deine Tipps Martin. Ich werde auch mal versuchen, das mit Array umzusetzen.

Viele Grüße
fladosh ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
instanznamen, schleife, zugreifen

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
Instanznamen Problem 4mi23 Flash Einsteiger 8 01-03-2007 11:01
::: instanznamen problem? floydmann Flash MX 2004 7 21-08-2005 14:29
Instanznamen problem xBlackKnightx ActionScript 1 11 01-08-2004 17:17
Problem mit dyn. Instanznamen incredible ActionScript 1 5 01-03-2004 14:08
Problem mit Instanznamen .:morpher:. ActionScript 1 2 29-01-2004 22:17


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele