Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-07-2010, 13:59   #1 (permalink)
Neuer User
 
Benutzerbild von Timyy
 
Registriert seit: Nov 2009
Beiträge: 223
Question removeChild();

Hallo,

Ich hatte vor kurzem schon ein Thema mit einem sehr ähnlichem Problem erstellt. Dort hatte ich ein MovieClip aus der Bibliothek auf die Bühne gestellt und wollte es dann mit removeChild wieder entfernen:

removeChild();

Nun möchte ich Objekte ertellen welche ich per AS gezeichnet habe und nicht in der Bibliothek vorhanden sind...
Logischerweise funktioniert die Methode vom letzten Thema nicht mehr.

PHP-Code:
var kreis:MovieClip = new MovieClip();    
...
evt.target.alpha -= 0.001;
    if(
evt.target.alpha <= 0){
        
//removeChild(evt.target);
    

Ich hatte versucht das ganze folgendermaßen wie im letzten Thema zu lösen:

PHP-Code:
var kreis:MovieClip = new MovieClip();
...
evt.target.alpha -= 0.001;
    if(
evt.target.alpha <= 0){
        
//removeChild(evt.target as MovieClip);
    

Bei dieser Anwendung gibt er zwar keine Fehlfermeldung mehr aus, jedoch ruckelt es sehr sehr stark und der flashplayer reagiert nicht mehr sodass er beendet werden muss.

Ich hoffe jemand kann mir helfen und bedanke mich schon einmal im vorraus!

Geändert von Timyy (14-07-2010 um 14:00 Uhr)
Timyy ist offline   Mit Zitat antworten
Alt 14-07-2010, 14:02   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Bei allem nötigen Respekt, wie soll man bei drei Zeilen Code eine Aussage treffen können?
Omega Psi ist offline   Mit Zitat antworten
Alt 14-07-2010, 14:35   #3 (permalink)
Neuer User
 
Benutzerbild von Timyy
 
Registriert seit: Nov 2009
Beiträge: 223
Zitat:
Bei allem nötigen Respekt, wie soll man bei drei Zeilen Code eine Aussage treffen können?
naja, ich habe ja auch meinen letzten beitrag verlinkt. In diesem stehet noch mehr als hier. Ich fand es überflüssig hier nocheinmal alles zu schreiben, wenn ich doch auch einen anderen beitrag verlinken kann.

Trotz dessen hier mal der code:

PHP-Code:
var pixelAnzahl:int 100;
var 
pixelRadius:Number 1;

stage.addEventListener(MouseEvent.CLICKklick);

function 
klick(evt:MouseEvent){
    for(var 
0pixelAnzahli++){
        var 
kreis:MovieClip = new MovieClip();
        
        
kreis.graphics.beginFill(0xff99331);
        
kreis.graphics.drawCircle(mouseXmouseYpixelRadius);
        
        
kreis.addEventListener(Event.ENTER_FRAMEbewegung);
        
        
kreis.speedX = (-Math.random()*(2-(-2)+1)); 
        
kreis.speedY = (-Math.random()*(2-(-3)+1));
        
        
addChild(kreis);
    }
}

function 
bewegung(evt:Event){
    
evt.target.+= evt.target.speedX;
    
evt.target.+= evt.target.speedY;
    
    
evt.target.speedY += 0.02;
    
evt.target.speedX -= (evt.target.speedX)/15;
    
    
evt.target.alpha -= 0.001;
    if(
evt.target.alpha <= 0){
        
//removeChild(evt.target);
        //removeChild(evt.target as MovieClip);
    
}


Geändert von Timyy (14-07-2010 um 16:05 Uhr)
Timyy ist offline   Mit Zitat antworten
Alt 14-07-2010, 18:33   #4 (permalink)
Neuer User
 
Benutzerbild von Timyy
 
Registriert seit: Nov 2009
Beiträge: 223
Weiss niemand wie ich ein Objekt entferne dass ich zuvor per ActionScript erstellt habe?

Ich habe bisher viele methoden ausprobiert, doch bei allen hängt sich flash auf und reagiert nicht mehr oder gibt eine fehlermeldung aus:


removeChild( getChildByName("kreis") )

removeChild(evt.target as MovieClip);

evt.target.removeChild(this);

evt.target.removeChild(evt.target);

removeChild(evt.target);


Ich hoffe jemand weiss eine Lösung für dieses Problem.

Geändert von Timyy (14-07-2010 um 18:44 Uhr)
Timyy ist offline   Mit Zitat antworten
Alt 14-07-2010, 22:28   #5 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
deine Perfomance-probleme verdankst du Event.ENTER_FRAME. Damit solltest du sparsamer umgehen, und nicht jedem einzelnen Punkt einen eigenen Event-listener geben.

removeChild(evt.target as MovieClip); ist zwar korrekt, doch entfernst du nicht den Event-listener.

hier mal eine performantere Version:
ActionScript:
  1. var pixelAnzahl:int = 100;
  2. var pixelRadius:Number = 1;
  3. var pixelContainer:Sprite = new Sprite();
  4.     pixelContainer.addEventListener(Event.ENTER_FRAME, bewege);
  5. addChild(pixelContainer);
  6.  
  7. stage.addEventListener(MouseEvent.CLICK, klick);
  8.  
  9. function klick(evt:MouseEvent):void {
  10.     for(var i = 0; i < pixelAnzahl; i++){
  11.         var kreis:MovieClip = new MovieClip();
  12.             kreis.graphics.beginFill(0xff9933, 1);
  13.             kreis.graphics.drawCircle(0, 0, pixelRadius);
  14.        
  15.             kreis.x = mouseX;
  16.             kreis.y = mouseY;
  17.            
  18.             kreis.vx = Math.random() * 4 - 2;
  19.             kreis.vy = Math.random() * 6 - 3;
  20.        
  21.         pixelContainer.addChild(kreis);
  22.     }
  23. }
  24.  
  25. function bewege(evt:Event):void {
  26.     var i:int = pixelContainer.numChildren;
  27.     while(i-- > 0){
  28.         var kreis:MovieClip = pixelContainer.getChildAt(i) as MovieClip;
  29.        
  30.         kreis.x += kreis.vx;
  31.         kreis.y += kreis.vy;
  32.        
  33.         kreis.vy += .02;
  34.         kreis.vx *= 1.0667;
  35.        
  36.         kreis.alpha -= .001;
  37.        
  38.         if(kreis.alpha <= 0){
  39.             pixelContainer.removeChild(kreis);
  40.         }
  41.     }
  42. }
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist gerade online   Mit Zitat antworten
Alt 15-07-2010, 14:45   #6 (permalink)
Neuer User
 
Benutzerbild von Timyy
 
Registriert seit: Nov 2009
Beiträge: 223
Vielen Dank!

Funktioniert einwandfrei
Timyy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
addchild, removechild

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
removeChild(); Timyy ActionScript 3 6 11-07-2010 14:42
removeChild Frischling ActionScript 3 7 18-11-2009 08:50
[Flash CS4] add & removeChild? aphratec Flash Einsteiger 15 23-04-2009 22:34
removeChild MC thiagojonas ActionScript 3 2 23-02-2009 15:13
[Flash CS3] AS3 - flv in mc - removeChild Duke79 Flash Einsteiger 2 17-11-2008 16:33


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

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


Copyright ©1999 – 2012 Marc Thiele