Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-09-2011, 15:42   #1 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
AS3 Instanzen dynamisch erzeugen

Ich habe einen MC namens "pin" erstellt - eine Nadel, die auf verschiedenen Positionen in einer Karte gesetzt werden soll.

Dazu müsste ich jetzt verschiedene Instanzen dieses MC erstellen und zwar so, dass ich darauf per Index zugreifen kann.

Als völliger AS3-Anfänger habe ich jetzt verschiedene Anleitungen durchgesehen, aber ich werde einfach nicht schlau draus.

Müsste doch so in der Art von

for (i=0; i<10; i++) {
var neupin[i]=this.childAdd("pin");
}

gehen - oder bin ich da völlig falsch gewickelt?
Haraldio ist offline   Mit Zitat antworten
Alt 26-09-2011, 15:46   #2 (permalink)
alte pfeife
 
Benutzerbild von muschko
 
Registriert seit: May 2003
Ort: Kassel
Beiträge: 1.222
Kommt denn dein MC aus der Library oder woher ? Sind die vorher schon erstellt worden ?

PHP-Code:

for ( var i:uint 010i++) {

 var 
pin:Pin = new Pin();
 
addChild(pin);

 
pin.100;
 
pin.100;


Jetzt mal als ein kleines Beispiel falls du eine Klasse verknüpfst hast in der Library mit deinem MC.

Geändert von muschko (26-09-2011 um 15:52 Uhr)
muschko ist offline   Mit Zitat antworten
Alt 26-09-2011, 15:49   #3 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
Danke für die schnelle Antwort.

Den Pin habe ich als PNG in die Bibliothek importiert, dann als Movieclip mit Namen "pin" umgewandelt.

Sorry - klingt wohl ziemlich dumm, aber AS3 ist einfach noch nicht mein Freund...
Haraldio ist offline   Mit Zitat antworten
Alt 26-09-2011, 15:51   #4 (permalink)
alte pfeife
 
Benutzerbild von muschko
 
Registriert seit: May 2003
Ort: Kassel
Beiträge: 1.222
im übrigen heißt es auch:

PHP-Code:
addChild(); 
und nicht childAdd(""); außer es wäre ne eigene Methode oder ähnliches.
muschko ist offline   Mit Zitat antworten
Alt 26-09-2011, 15:53   #5 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Haraldio Beitrag anzeigen
Dazu müsste ich jetzt verschiedene Instanzen dieses MC erstellen und zwar so, dass ich darauf per Index zugreifen kann.
Müsste doch so in der Art von

for (i=0; i<10; i++) {
var neupin[i]=this.childAdd("pin");
}

gehen - oder bin ich da völlig falsch gewickelt?
Nicht völlig falsch aber ziemlich schief
  • Dynamische Variablen kann man nicht mit var deklarieren, sondern muss dafür die Klammersyntax verwenden. Weitere Informationen dazu findest Du hier .

  • Was soll denn childAdd sein?

  • Variablen sollten immer typisiert werden!

Gib dem Symbol des Pins in der Bibliothek mal den Klassennamen Pin und versuch's dann mal so:
PHP-Code:
var pins:Array = []; // Ein Array für die Instanzen

var pin:Pin// Variable für jeweils eine Instanz
for (var i:uint 010i++) {
    
pin = new Pin(); // Erzeugt eine neue Instanz
    
addChild(pin); // Fügt die Instanz zur Anzeigeliste hinzu
    
pins.push(pin); // Fügt die Instanz in das Array ein
    
    // Den Pin positionieren
    
pin.Math.random() * 300;
    
pin.Math.random() * 200;

Edit: Da war wohl jemand schneller
__________________
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 (26-09-2011 um 15:56 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 26-09-2011, 15:56   #6 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
Herzlichen Dank. Werde ich gleich durchprobieren. Sorry für den Dreher
Haraldio ist offline   Mit Zitat antworten
Alt 26-09-2011, 16:10   #7 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
Hm. Bei der Zeile "var pin:Pin;" krieg ich die Meldung "Typ wurde nicht gefunden" - da muss ich wohl erst noch "Mutter-Instanz" irgendwie speichern, oder?
Haraldio ist offline   Mit Zitat antworten
Alt 26-09-2011, 16:11   #8 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Haraldio Beitrag anzeigen
Hm. Bei der Zeile "var pin:Pin;" krieg ich die Meldung "Typ wurde nicht gefunden"
Wie ich oben schon geschrieben habe:
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Gib dem Symbol des Pins in der Bibliothek mal den Klassennamen Pin ...
__________________
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 26-09-2011, 16:18   #9 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
Bitte nicht lachen: Rechtsklick auf die Bibliothek und dann bei Komponentendefinition den Klassennamen "Pin" eintragen, oder?
Haraldio ist offline   Mit Zitat antworten
Alt 26-09-2011, 16:28   #10 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Haraldio Beitrag anzeigen
Bitte nicht lachen: Rechtsklick auf die Bibliothek und dann bei Komponentendefinition den Klassennamen "Pin" eintragen, oder?
Nein.
  • Rechtsklick auf das Bibliothekssymbol
  • Eigenschaften auswählen
  • Falls nur der kleine Dialog erscheint, Erweitert anklicken
  • Export für ActionScript anhaken
  • Und dann im Feld Klasse den Klassennamen eintragen
__________________
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 26-09-2011, 16:32   #11 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
Vielen Dank. Woher nehmt Ihr nur die Geduld mit solchen Nerds wie mir?
Haraldio ist offline   Mit Zitat antworten
Alt 26-09-2011, 16:56   #12 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
Darf ich nochmal löchern? Wenn ich die Pins als Schaltfläche definiert habe, dann kann ich ja beim "darüber"-Status (z.B.) einen Text anzeigen lassen - quasi bubble-help.

Wie aber kann ich auch auf diese Eigenschaft dynamisch zugreifen?
Haraldio ist offline   Mit Zitat antworten
Alt 27-09-2011, 09:03   #13 (permalink)
alte pfeife
 
Benutzerbild von muschko
 
Registriert seit: May 2003
Ort: Kassel
Beiträge: 1.222
du definierst einen EventListener auf dein Pin:

PHP-Code:

pin
.addEventListener(MouseEvent.MOUSE_OVERdeineOverMethode);

function 
deineOverMethode(event:Event):void {
      
deinHelpText.visible true;

Ein einfaches Beispiel um ein Event auf dein Pin zu legen.
Natürlich gibt es noch tausend andere Events die du definieren kannst. Aber du solltest dir das Eventsystem von AS3 ziemlich genau anschauen falls du wirklich in die AS3 Programmierung einsteigen möchtest. Nur so als kleinen Tip.

PS: Schlatfläche sind in AS3 ziemlich out und werden im Prinzip sogut wie nicht mehr eingesetzt. MovieClips oder Sprites sind eher angebracht.

Geändert von muschko (27-09-2011 um 09:05 Uhr)
muschko ist offline   Mit Zitat antworten
Alt 27-09-2011, 09:37   #14 (permalink)
Blutiger Anfänge
 
Registriert seit: Jul 2001
Ort: Dornstadt
Beiträge: 47
Vielen Dank. Ich konnte das in dieser Art schon lösen - und natürlich ist der Vorwurf berechtigt, dass man sich mehr einlesen müsste. Da dieses Projekt aber eher singulär sein dürfte, versuche ich mich im Moment ohne größere Studien durchzumogeln. Vielleicht unprofessionell - aber aus verschiedenen Gründen unumgänglich.
Haraldio ist offline   Mit Zitat antworten
Alt 25-04-2012, 08:11   #15 (permalink)
Rhett Butler
 
Benutzerbild von RhettButler
 
Registriert seit: Nov 2006
Beiträge: 522
Ich bin nur durch Zufall drauf gekommen, dass die Position der Deklaration von pin eine wichtige Rolle spielt.
Doch wo liegt der Unterschied zwischen meinem Codesegment und dem von Martin Kraft´s?


Martin Kraft´s Code:
PHP-Code:
var pins:Array = []; // Ein Array für die Instanzen

var pin:Pin// Variable für jeweils eine Instanz
for (var i:uint 010i++) {
    
pin = new Pin(); // Erzeugt eine neue Instanz
    
addChild(pin); // Fügt die Instanz zur Anzeigeliste hinzu
    
pins.push(pin); // Fügt die Instanz in das Array ein
    
    // Den Pin positionieren
    
pin.Math.random() * 300;
    
pin.Math.random() * 200;

Mein Code (Unterschied in Zeile 5):
ActionScript:
  1. var pins:Array = [];
  2.  
  3. for (var i:uint = 0; i < 10; i++) {
  4.  
  5.     var pin:Pin=new Pin();
  6.     addChild(pin);
  7.     pins.push(pin);
  8.    
  9.     pin.x = Math.random() * 300;
  10.     pin.y = Math.random() * 200;
  11. }
RhettButler ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as3, dynamisch, instanzen

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
mehrere Instanzen von Klassen aus Bibilothek dynamisch erzeugen? chillout ActionScript 3 14 03-02-2010 12:18
Umsteigersprachprobleme - Instanzen dynamisch erzeugen .... grafgarf ActionScript 3 4 03-04-2008 08:01
Eine Funktion dynamisch für mehrere Instanzen erstellen, Variablen dynamisch füllen petershaw Flash 8 0 26-10-2006 15:32
Instanzen movie-übergreifend erzeugen NinaH Flash MX 5 01-04-2005 10:04
Kann ich Code instanzen erzeugen? Samuel ActionScript 1 32 02-08-2004 15:12


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

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


Copyright ©1999 – 2012 Marc Thiele