Flashhilfe.de - Flash Community

removeChild mit AS3 funktioniert nicht [Flash 9]

Forum > ActionScript 3.0 > removeChild mit AS3 funktioniert nicht

 


AntwortenRegistrieren Seite1

 10.03.2010, 14:29 
Beiträge: 12
Registriert: Jun 2005

removeChild mit AS3 funktioniert nicht
Hallo zusammen,

habe folgendes Problem:

benutze gerade folgendes AC3 Script:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import flash.display.*;
import flash.net.URLRequest;
import flash.events.Event;

buttonpr1.addEventListener(MouseEvent.CLICK, clickFunctionpr1);

function clickFunctionpr1(evt:MouseEvent):void {
   var containerpr1:Sprite = new Sprite();
   containerpr1.name = "eprinting1";
   addChild(containerpr1);
   containerpr1.y = 137;
   containerpr1.x = 214;
   var pngpr1Ldr:Loader = new Loader();
   var pngpr1URL:String = "images/pr1.png"
   var pngpr1URLReq:URLRequest = new URLRequest(pngpr1URL);
   pngpr1Ldr.load(pngpr1URLReq);
   pngpr1Ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, pngpr1Loaded);
   function pngpr1Loaded(event:Event):void
   {
    containerpr1.addChild(pngpr1Ldr.content);
   }
  this.checkContainerspr();
  stop();
}

buttonpr2.addEventListener(MouseEvent.CLICK, clickFunctionpr2);

function clickFunctionpr2(evt:MouseEvent):void {
   var containerpr2:Sprite = new Sprite();
   containerpr2.name = "eprinting1";
   addChild(containerpr2);
   containerpr2.y = 137;
   containerpr2.x = 214;
   var pngpr2Ldr:Loader = new Loader();
   var pngpr2URL:String = "images/pr2.png"
   var pngpr2URLReq:URLRequest = new URLRequest(pngpr2URL);
   pngpr2Ldr.load(pngpr2URLReq);
   pngpr2Ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, pngpr2Loaded);
   function pngpr2Loaded(event:Event):void
   {
    containerpr2.addChild(pngpr2Ldr.content);
   }
  this.checkContainerspr();
  stop();
}



var containerpr:Array = new Array("eprinting1");

function childOnStagepr( name:String ):Boolean{
  return this.getChildByName( name ) != null && this.getChildByName( name).parent != null ? true : false;
}

function checkContainerspr():void{
  for( var i:uint = 0; i < this.container.length; i++){
      if( childOnStagepr( this.container[i] ) ){
        removeChild( this.getChildByName( this.container[i] ) );
      }
  } 
}


doch irgendwie will Flash mir den container nicht leeren, wenn ich auf den verschiedenen Buttons(buttonpr1 und buttonpr2) klicke.

Hat jemand hierzu einen Tip für mich?

Vielen Dank im voraus.
Lg
Koyo
 11.03.2010, 09:51Re1
Beiträge: 12
Registriert: Jun 2005

Themenautor/in

hmm hat hierzu keiner eine Idee? :-/
find irgendwie den Fehler nicht ...

lg
Koyo
 11.03.2010, 10:04Re2
Beiträge: 182
Registriert: Jun 2009

hmmm...
hast du mal versucht, statt
ActionScript:
1removeChild

ActionScript:
1containerXY.removeChild

zu schreiben?
 
nicht sichtbar bei eingeloggten Mitgliedern
 11.03.2010, 10:15Re3
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

ActionScript:
1for( var i:uint = 0; i < this.container.length; i++){

Wo wird das Array container erstellt und gefüllt?
 11.03.2010, 10:39Re4
Benutzerbild von KingKhong
Beiträge: 157
Registriert: Apr 2005

Dein Problem liegt hier.
1. Wer zum Geier ist container, du meintest bestimmt den containerpr
ActionScript:
1
2
3
4
5
6
function checkContainerspr():void{
  for( var i:uint = 0; i < this.container.length; i++){
      if( childOnStagepr( this.container[i] ) ){
        removeChild( this.getChildByName( this.container[i] ) );
      }
  }


Es könnte also so aussehen. Ich habe mir erlaubt deine childOnStagepr auch zu ändern. Du wirst aber sehen, dass dies auch nicht zum gewünschten ergebnis führt, da du zuerst die container füllst und dann wieder löschst. Kleiner Tipp: merke dir doch die container (Sprites) im Array und nicht die Namen, dann könne man sagen containerpr[i].parent.removeChild(containerpr[i]). Ist natürlich noch die Frage, wo du hinwillst, wo sagst du dem Array später welche objekte gelöscht werden sollen, gibt es immer nur einen oder mehrere etc....


ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
function childOnStagepr( name:String ):DisplayObject{
return this.getChildByName( name ) || this.getChildByName( name).parent;
}

function checkContainerspr():void{
  for( var i:uint = 0; i < this.containerpr.length; i++){
     var removeMe:DisplayObject = childOnStagepr( this.containerpr[i]);
      if( removeMe != null ){
        this.removeChild(removeMe);
      }
  }
}


PS: kleiner Fehler bei mir, sehe gerade  this.getChildByName( name).parent der kann in checkContainerspr natürlich so nicht gelöscht werden. Ich werde das jetzt nicht ändern, da ich nicht genau verstehe, was du damit bezwecken willst.
----------------------------------------------
www.flashdevelop.de
Geändert von KingKhong am 11.03.10 um 10:47 Uhr

 
Themen
Ähnliche Beiträge zum Thema
 
AntwortenRegistrieren Seite1

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de