| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Apr 2010
Beiträge: 122
|
Hallo Leute, ich hab jetzt schon was länger versucht ohne Hilfe aus dem Forum und nur mittels Bücher, Google etc dieses Problem zu beheben.. Aber ich komm einfach nicht weiter... Ich habe ein Array in dem mehrere Werte stehen box0 - box5, also 6 Werte. Diese möchte ich jetzt mittels meiner Funktion buildMc(); als MC erzeugen größe, x Koordinate etc mitgeben und auf die Bühne schmeißen.. sobald ich versuche die Dinger auf die Bühne zu schmeißen bekomme ich folgenden Fehler: Code: ArgumentError: Error #2024: Ein Objekt kann nicht als untergeordnetes Element seiner selbst hinzugefügt werden. at flash.display::DisplayObjectContainer/addChild() at meineKlasse/buildMc() at Unbenannt_fla::MainTimeline/frame1() Code: public function buildMc(objArray:Array):void{
for(var i:uint = 0; i <= (objArray.length-1); i++){
objArray[i].graphics.beginFill(0x0000);
objArray[i].graphics.drawRect(0, 0, 100,100);
objArray[i].graphics.endFill();
objArray[i].boxName = 'titelbox'+i;
objArray[i].x = firstXcor;
objArray[i].width = _toScaleWidthA;
objArray[i].height = _toScaleHightA;
firstXcor += (_toScaleWidthA + _zwischenAbstand);
trace(objArray[i].boxName);
addChild(objArray[i]);
}
} |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Apr 2002
Beiträge: 496
|
zeig mal dein objArray
__________________ Grafik - Webdesign - Programmierung - www.thsc.at Adventkalender 2011 advent.wien.info/de Jobspace - Universum der Lehrstellen www.jobspace.at |
| | |
| | #4 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Wie die Fehlermeldung schon sagt: Zitat:
__________________ 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! | |
| | |
| | #5 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
P.S.: Klassennamen sollten immer mit einem Großbuchstaben beginnen (also MeineKlasse statt meineKlasse) und den Inhalt und die Funktion der Klasse beschreiben (Box wäre daher ein besserer Klassenname).
__________________ 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 (08-06-2011 um 10:20 Uhr) | |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Apr 2010
Beiträge: 122
|
Danke schonmal für die Antwort... Also alles was ich momentan will ist einfach nur dynamisch 6 Kasten ausgeben die eine sich selber nebeneinander Positionieren mit einen gewissen Abstand. meine Klasse: Code: package{
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.display.*;
public class meineKlasse extends flash.display.MovieClip{
public var boxName:String;
public var _corX:Number;
public var _scaleX:Number;
public var _scaleY:Number;
public static var timeToMove:Number = 0;
public static var firstXcor:Number = 0;
private var _toScaleWidthA:Number = 820;
private var _toScaleHightA:Number = 500;
private var _toScaleWidthB:Number = 994;
private var _toScaleHightB:Number = 606;
private var _zwischenAbstand:Number = 10;
public function meineKlasse():void {
//constructor
}
public function buildMc(objArray:Array):void{
for(var i:uint = 0; i <= (objArray.length-1); i++){
//trace(objArray[i].boxName);
//var titelbox:MovieClip = objArray[i];
//titelbox.boxName = 'titelbox'+i;
//trace(titelbox.boxName);
objArray[i].graphics.beginFill(0x0000);
objArray[i].graphics.drawRect(0, 0, 100,100);
objArray[i].graphics.endFill();
objArray[i].boxName = 'titelbox'+i;
objArray[i].x = firstXcor;
objArray[i].width = _toScaleWidthA;
objArray[i].height = _toScaleHightA;
firstXcor += (_toScaleWidthA + _zwischenAbstand);
trace(objArray[i].boxName);
addChild(objArray[i]);
}
}
}
} Code: import meineKlasse;
var anzahlDerBoxen:Number = 6;
stage.addEventListener(Event.ENTER_FRAME, enterFrameFunction);
function enterFrameFunction(evt:Event){
}
var boxes:Array = new Array();
for (var i:uint = 0; i < anzahlDerBoxen; i++) {
var box:meineKlasse = new meineKlasse();
box.boxName = 'box'+i;
boxes.push(box);
}
box.buildMc(boxes); Wahrscheinlich muss ich das addChild in der .fla ausführen oder? |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Apr 2010
Beiträge: 122
|
Ich habe es jetzt einmal so versucht aufzurufen.. Code: var titelbox:meineKlasse = new meineKlasse(); titelbox.buildMc(boxes); Kann es sein das ich die immer wieder Überschreibe ? Da ich bei Code: trace(box.boxName); Also irgendwas stimmt da noch nicht.. Könnte ich jetzt mittels getChildByName auf das erzeugte MC zugreifen? Geändert von Danjy (08-06-2011 um 10:38 Uhr) |
| | |
| | #8 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Wie gesagt: Das addChild bezieht sich auf die Box in der es steht. Wenn ich mir Deinen Code so ansehen, sollte die Funktion buildMc auch eigentlich nicht in der Box-Klasse stehen, sondern in dem Objekt, das die Boxen verwaltet, dass könnte eine zweite Klasse sein, aber auch einfach die Zeitleiste in der Du z.Z. die Boxen generierst.
__________________ 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! |
| | |
| | #9 (permalink) |
| ?-Developer Registriert seit: Jul 2004 Ort: Zuchwil (CH)
Beiträge: 901
|
Versuchs mal so (habs nicht getestet) AS-Datei/Klasse Code: public function buildMc(objArray:Array, pThis:*):void{
// Dein Code
pThis.addChild(objArray[i]);
} Code: box.buildMc(boxes, this);
__________________ Nur tote Fische schwimmen mit dem Strom |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Apr 2010
Beiträge: 122
|
Hmm.. Sorry aber ganz versteh ich das noch nicht... also Generieren des Arrays und Aufruf der buildMc-Funktion: Code: var boxes:Array = new Array();
for (var i:uint = 0; i < anzahlDerBoxen; i++) {
var box:meineKlasse = new meineKlasse();
box.boxName = 'box'+i;
boxes.push(box);
}
var titelbox:meineKlasse = new meineKlasse();
titelbox.buildMc(boxes); Und die Funktion selber Code: public function buildMc(objArray:Array):void{
for(var i:uint = 0; i <= (objArray.length-1); i++){
objArray[i].graphics.beginFill(0x0000);
objArray[i].graphics.drawRect(0, 0, 100,100);
objArray[i].graphics.endFill();
objArray[i].boxName = 'titelbox'+i;
objArray[i].x = firstXcor;
objArray[i].width = _toScaleWidthA;
objArray[i].height = _toScaleHightA;
firstXcor += (_toScaleWidthA + _zwischenAbstand);
trace(objArray[i].boxName);
addChild(objArray[i]);
}
} Sorry aber wie genau soll ich vorgehen? |
| | |
| | #11 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Ich würd's so machen: Box.as PHP-Code: PHP-Code:
__________________ 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 (08-06-2011 um 10:56 Uhr) |
| | |
| | #12 (permalink) | |
| Neuer User Registriert seit: Apr 2010
Beiträge: 122
|
Sauber danke @silentx klappt wunderbar.. könntest du mir kurz eine kleine erklärung geben warum :P ? Zitat:
![]() Ich hätte noch eine letzte Frage.. wenn ich jetzt das script so benutze mit der kleinen Änderung von silentx.. Wie genau greif ich jetzt auf die einzelnen Elemente in der .as zu? Geändert von Danjy (08-06-2011 um 11:07 Uhr) | |
| | |
| | #13 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
@Danjy: Schau Dir deshalb bitte mal meinen Vorschlag an. Eine saubere Abgrenzung der Klassen ist nämlich die beste Garantie dafür, später keine Probleme zu bekommen...
__________________ 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 (08-06-2011 um 12:35 Uhr) | |
| | |
| | #14 (permalink) |
| ?-Developer Registriert seit: Jul 2004 Ort: Zuchwil (CH)
Beiträge: 901
|
@Danjy : Erklärung warum es funktioniert Jetzt bezieht sich das addChild auf die fla-datei und nicht mehr auf sich selbst. Somit ist es eine andere Klasse. Jedoch ist es nicht wirklich schön gelöst so. (Wieder ungetestet) wenn du beim erfassen statt .boxName nur .name verwendest könntest du in der fla datei folgendermassen abfragen Code: var mybox:* = getChildByName('Titelbox 1');
__________________ Nur tote Fische schwimmen mit dem Strom |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| addchild, array, as3, werte |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash CS5] externe as datei tuturial || addChild(); usw. | Opi3 | Flash Einsteiger | 1 | 13-03-2011 22:07 |
| [Flash CS4] addChild ... | KnightofLight | Flash Einsteiger | 2 | 31-01-2011 07:30 |
| [Flash CS4] addChild(); | Timyy | Flash Einsteiger | 4 | 11-10-2010 20:39 |
| .addChild(mc) in as2 | flasher_81 | ActionScript 2 | 2 | 04-08-2010 14:10 |
| addChild | TheLight | ActionScript 3 | 13 | 21-04-2007 12:02 |