Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash CS5 Professional

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-11-2011, 00:55   #1 (permalink)
Mediendesigner
 
Benutzerbild von izanagi
 
Registriert seit: Jan 2007
Ort: Köln
Beiträge: 418
childs aus Frame 2 tauchen in Frame 3 auf

Moin,

also ich steig da gerad nicht hinter.
Ich habe in meinem Game Objekte,Gegenstände,Deko in Frame 2(eines MCs)
platziert. Sie bilden Raum 1. Das gleiche nochmal in Frame 3 für Raum 2

Das ganze eben auf der Bühne, damit ich schön Levels editieren kann. Beim Starten werden alle Childs von der Bühne entfernt und per AS3 initialisiert und im Array generiert. Damit habe ich halt besseren Zugriff als mit den Bühnen Childs. (ausserdem kann man Gegenstände aus Raum 1 in Raum 2 mitnehmen)

Beim Wechsel im nächsten Raum werden wieder alle Objekte der Bühne aufgesaugt und removed. Ins Array transferiert. Es sei denn der Raum wurde bereits betreten und initialisiert... dann einfach nur removed.

PROBLEM bei mir ist nun, das die Objekte der Bühne von Raum 2 auch im Raum 1 auftauchen, obwohl die bei Frame 3 garnicht platziert sind.
Sie haben aber wohlbemerkt den gleichen Instanznamen.
Ums besser zu verstehen:

[frame2] = obj_typ1_1, obj_typ1_2, obj_typ1_3, obj_typ2_1, obj_typ2_2
[frame3] = obj_typ1_1, obj_typ1_2, obj_typ2_1,obj_typ2_2 obj_typ3_1, obj_typ3_2, obj_typ3_3

Beim Laden werden alle 5 Childs kopiert und ins Array verfrachtet, danach gelöscht von der Bühne.
Beim Wechsel zu Frame 3 werden 7 Childs kopiert und ins Array verfrachtet, danach gelöscht von der Bühne.

Leider tauchen in Frame 3 einige Childs von Frame 2 mit auf und werden dummerweise auch ins Array gepackt.


Bedanke mich für Aufmerksamkeit.
ps: ich bin echt nicht Lernfaul, aber ich sitze nun 14 stunden daran und kapiers nicht.

Geändert von izanagi (24-11-2011 um 00:56 Uhr)
izanagi ist offline   Mit Zitat antworten
Alt 01-12-2011, 13:20   #2 (permalink)
Mediendesigner
 
Benutzerbild von izanagi
 
Registriert seit: Jan 2007
Ort: Köln
Beiträge: 418
da kann mir wohl niemand helfen
izanagi ist offline   Mit Zitat antworten
Alt 01-12-2011, 13:33   #3 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Wenn man ein in der Zeitleiste positioniertes Element per Script transformierst oder in der Anzeigeliste verschiebst, löst man es von der Zeitleiste. Es verschwindet daher auch nicht mehr, wenn man einen Frame ansteuert, in dem es ursprünglich garnicht vorhanden war...

Wenn Du das verhindern willst, müsstest Du ...
  • ... die Objekte entweder auf der Zeitleiste in einem Symbol unterverschachteln, dass Du dann nicht per Script bearbeitest...
  • ...oder nach jedem Frame all das per Script entferenen, was im nächsten Frame nicht zusehen sein soll.
__________________
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 gerade online   Mit Zitat antworten
Alt 01-12-2011, 22:07   #4 (permalink)
Mediendesigner
 
Benutzerbild von izanagi
 
Registriert seit: Jan 2007
Ort: Köln
Beiträge: 418
Danke für die Sonne Martin
Wäre ich echt nicht drauf gekomm das es sich von der TM löst sobald es vom Script berührt wird. Sehr cool jetzt versteh ich das auch.

Zitat:
die Objekte entweder auf der Zeitleiste in einem Symbol unterverschachteln, dass Du dann nicht per Script bearbeitest...
danke das werde ich mal probieren

Zitat:
...oder nach jedem Frame all das per Script entferenen, was im nächsten Frame nicht zusehen sein soll.
komisch genau das mach ich ja. Bevor es zum nächsten Frame geht,
sind alle Childs aus der Timeline (nicht die Array Objekte) entfernt.
Die tauchen trotzdem wieder im nächsten auf.
izanagi ist offline   Mit Zitat antworten
Alt 02-12-2011, 11:11   #5 (permalink)
Mediendesigner
 
Benutzerbild von izanagi
 
Registriert seit: Jan 2007
Ort: Köln
Beiträge: 418
Zitat:
Wenn man ein in der Zeitleiste positioniertes Element per Script transformierst oder in der Anzeigeliste verschiebst,
Kannst du das genauer erklären? Zählt da auch schon das einholen von XY Koordinaten ? Denn eigentlich mach ich nichts anderes als zu prüfen ob das Objekt exisitiert auf der Bühne und dann die XY Koordinate nehme um den Array Klon diese zu geben.

Also zählt bereits das "Ansprechen" per Script ? Oder erst wenn ich es bewege, ums von der Timeline zu reißen.

Geändert von izanagi (02-12-2011 um 11:14 Uhr)
izanagi ist offline   Mit Zitat antworten
Alt 02-12-2011, 11:17   #6 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.164
Zitat:
Zitat von izanagi Beitrag anzeigen
Kannst du das genauer erklären? Zählt da auch schon das einholen von XY Koordinaten ?
Nein, aber das Setzen der selbigen.

Zitat:
Zitat von izanagi Beitrag anzeigen
Denn eigentlich mach ich nichts anderes als zu prüfen ob das Objekt exisitiert auf der Bühne und dann die XY Koordinate nehme um den Array Klon diese zu geben.
Ich hatte Dich so verstanden, dass Du die Instanzen selbst in das Array schiebst und addChild und removeChild anwendest?! Letzteres löst sie von der Zeitleiste!

Poste einfach mal den zugehörigen Code, dann kann ich Dir sagen, welcher konkrete Befehl dafür verantwortlich ist, dass die Objekte aus der Zeitleiste gelöst werden und weiter existieren...
__________________
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 gerade online   Mit Zitat antworten
Alt 02-12-2011, 12:04   #7 (permalink)
Mediendesigner
 
Benutzerbild von izanagi
 
Registriert seit: Jan 2007
Ort: Köln
Beiträge: 418
Ne ich klau mir nur die Koordinaten und prüfe ob sie existieren.
Zitat:
die Instanzen selbst in das Array schiebst
Das wäre cool, wie geht denn das ? (vermutlich sag ich gleich, achja stimmt ich doof)


Mein Code

PHP-Code:
function objekteladen(){
if (
Raumdaten[raumaktiv].objektecheck==false){
    
Raumdaten[raumaktiv].objektecheck=true;
        
    for(var 
checktyp 1checktyp <= 20checktyp++) { // jeden Typ fragen
    
for(var checkobj 1checkobj <= maxobjektcheckobj++) {
                
    if(
Level["objekt_typ"+checktyp+"_"+checkobj] ) { //wenn auf Spiekarte
        
    
for(var newobj 1newobj <= maxobjektnewobj++) { // suche nächsten freien
    
        
if (Objekt[newobj]==undefined || Objekt[newobj]== null ) {
        
        var 
cname="Objekt_typ"+checktyp;
        var 
styleClassName:Class=Class(getDefinitionByName(cname)) as Class;
            
        
Objekt[newobj] = new styleClassName();
        
Objekt[newobj].id=objektid;objektid++;
        
Objekt[newobj].kennung=checkobj;//eindeutige identifizierung für sonderobjekte
        
Objekt[newobj].typ=checktyp;
        
Objekt[newobj].zustandmodus=objektskills[checktyp].zustandmodus;
        
Objekt[newobj].hindernis=objektskills[checktyp].hindernis;
        
Objekt[newobj].Level["objekt_typ"+checktyp+"_"+checkobj].x;
        
Objekt[newobj].Level["objekt_typ"+checktyp+"_"+checkobj].y;
        
Objekt[newobj].xpunkt=Objekt[newobj].x;
        
Objekt[newobj].ypunkt=Objekt[newobj].y;
        
Objekt[newobj].inkontakt=0;
        
Objekt[newobj].ghostmode=objektskills[checktyp].ghostmode;
        
Objekt[newobj].aktiv=true;
        
Objekt[newobj].objektkontakt=0;
        
Objekt[newobj].energie=objektskills[checktyp].energie;
        
Objekt[newobj].godmode=objektskills[checktyp].godmode;
        
Objekt[newobj].material=objektskills[checktyp].material;
        
Objekt[newobj].gegenstand=objektskills[checktyp].gegenstand;
        
Objekt[newobj].imraum=raumaktiv;
        
Objekt[newobj].ground=objektskills[checktyp].ground;
        
Objekt[newobj].interaktionen=objektskills[checktyp].interaktionen;
        
Level.addChild(Objekt[newobj]);

        
Objekt[newobj].width Level["objekt_typ"+checktyp+"_"+checkobj].width;
        
Objekt[newobj].height Level["objekt_typ"+checktyp+"_"+checkobj].height;
        
Objekt[newobj].Level["objekt_typ"+checktyp+"_"+checkobj].x;
        
Objekt[newobj].Level["objekt_typ"+checktyp+"_"+checkobj].y;

        
            
newobj=9999;
        }
        
    }
//for3

    
}
    }
//for2
    
}//for1

    
objekteweg(); // Timeline leeren
}


function 
objekteweg(){
    for(var 
put =  Level.numChildren-1put >=0put--) {// RÜCKWÄRTS LÖSCHEN !!!
        
if(Level.getChildAt(put).id>=0){//bei gescripten Objekte nichts machen

        
} else {
        
Level.removeChildLevel.getChildAt(put) );
        
System.gc();
        }
        
    }

}
//func 
Der Wechsel zum anderen Frame verläuft so, hier nur ein Beispiel:

PHP-Code:
    mainloopstop();
    
raumloader.visible=true;
    
vonraum =raumaktiv;
    
raumaktiv=3// zu Raum  gehen
    
Objekt[0].imraum=raumaktiv;
    
objekteweg();
    
this.Level.gotoAndStop(raumaktiv);
    
objekteladen();
    
raumloader.visible=false;
    
mainloopstart(); 

Geändert von izanagi (02-12-2011 um 12:05 Uhr)
izanagi ist offline   Mit Zitat antworten
Alt 02-12-2011, 12:29   #8 (permalink)
Mediendesigner
 
Benutzerbild von izanagi
 
Registriert seit: Jan 2007
Ort: Köln
Beiträge: 418
Du meinst sicher

Objekt[newobj] = new MovieClip();
Objekt[newobj]= Level["objekt_typ"+checktyp+"_"+checkobj] as MovieClip;

irgendwie hatte ich da Probleme gehabt bei. Zumindest nachträglich beim benutzen.
izanagi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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
Aktueller Frame soll angesprochen werden, springt aber ein Frame weiter framic ActionScript 1 2 13-12-2006 09:00
Bei Sprung auf vorherieges Frame bleibt MC von späterem Frame stehen sara11 Flash Einsteiger 12 23-10-2006 19:43
Dynamisch von kleinem HTML Frame ins _parent Frame wechseln? Blubbie Flash MX 0 26-09-2002 09:22
ifframeloaded mit target im anderen frame (frame.ziel.frame) ? andilab Flash 4 und Flash 5 5 09-01-2002 07:37
3 frames-von einem frame(flash) zum anderen frame(html), wie?? Flash-Husker Flash 4 und Flash 5 1 10-12-2001 18:34


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele