Flashhilfe.de - Flash Community

removeChild mit AS3 funktioniert nicht [Flash 9]

 


AntwortenRegistrieren Seite1  

Koyocreative#1
Benutzerbild von Koyocreative
Beiträge: 12
Registriert: Jun 2005

10.03.2010, 14:29

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
Koyocreative#2
Benutzerbild von Koyocreative
Beiträge: 12
Registriert: Jun 2005

Themenautor/in

11.03.2010, 09:51

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

lg
Koyo
micB#3
Benutzerbild von micB
Beiträge: 186
Registriert: Jun 2009

11.03.2010, 10:04

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

ActionScript:
1containerXY.removeChild

zu schreiben?
badskill#4
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

11.03.2010, 10:15

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

Wo wird das Array container erstellt und gefüllt?
KingKhong#5
Benutzerbild von KingKhong
Beiträge: 159
Registriert: Apr 2005

11.03.2010, 10:39

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

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de