Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-05-2007, 21:32   #1 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Instanz verschwindet nach setInterval()

Hallo zusammen!

Ich habe ein Problem, mit dem ich mich nun schon ne Zeitlang rumschlage und keine Lösung finde. Dazu folgendes Script:
PHP-Code:
F_setIMGSwap = function(mc:MovieClip,many:Number,time:Number):Void
{
    
mc.anzahl many;
    
setInterval(F_nextIMGtime*1000mc);
    
trace(mc.con_kat_img1);
}
F_nextIMG = function(mc:MovieClip)
{
    
trace(mc.con_kat_img1);
    var 
aktDepth:Number mc.getNextHighestDepth() -1;
    var 
aktImage:MovieClip mc.getInstanceAtDepth(aktDepth);

Frage:
Warum wird in der ersten Funktion im Trace der richtige Wert bzw. die richtige Instanz ausgegeben, aber in der zweiten Funktion wird plötzlich ein "undefined" ausgegeben ????
Das kapier ich nicht.
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 09-05-2007, 10:31   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Vorsicht mit unbenannten Funktionen. Wenn du mit unbenannten Funktionen (blabla=function(){}) arbeitest, sollte die Funktion vorher im Script bekannt sein. Sonst nimm besser benannte Funktionen, bspw.
PHP-Code:
function F_nextIMG(mc:MovieClip){//... 
Wenn es daran nicht lag, poste mal deine FLA.
  Mit Zitat antworten
Alt 09-05-2007, 11:32   #3 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Daran lags leider nicht.

Ich kann Dir auch nicht die ganze FLA posten, die ist echt zu heftig.
Aber hier mal das Script aus der Instanz Bild1:

PHP-Code:
// Variablen definieren
var arr_katIMGPath:Array = new Array();
var 
arr_katIntro:Array = new Array();
var 
arr_katMenu:Array = new Array();
var 
arr_katName:Array = new Array();
var 
kat_anzahl:Number 0;                                // Anzahl der Kategorien (Zähler)
var kat_mov_part_step:Number 14;                        // Abstand in Pixeln zwischen den Kategorie-Filmen
var katName:String "";


// trace(xml_products);

// **************************************
// XML-Objekt auslesen
// **************************************
// KATEGORIE BILDER PFAD
var arrCount:Number 0;
for(var 
i=0i<xml_products.childNodes.lengthi++)
{
    var 
kat_item xml_products.childNodes[i].nodeName.toString();
    var 
kat_name xml_products.childNodes[i].attributes.name.toString();
    if(
kat_item == "category")
    {
        
arr_katName.push(kat_name);
        
kat_anzahl++; // Kategorien zählen
        
for(var a=0a<xml_products.childNodes[i].childNodes.lengtha++)
        {
            var 
kat_node xml_products.childNodes[i].childNodes[a].nodeName.toString();
            if(
kat_node == "katpic")
            {
                
arr_katIMGPath[arrCount] = new Array();
                var 
string:String xml_products.childNodes[i].childNodes[a].firstChild.toString();
                
arr_katIMGPath[arrCount] = string.split(",");
                
arrCount++;
            }
        }
    }
}
// **************************************
// KATEGORIE EINLEITUNGSTEXT
for(var i=0i<xml_language.childNodes.lengthi++)
{
    var 
kat_item xml_language.childNodes[i].nodeName.toString();
    if(
kat_item == "categories")
    {
        for(var 
a=0a<xml_language.childNodes[i].childNodes.lengtha++)
        {
            var 
kat_node xml_language.childNodes[i].childNodes[a].nodeName.toString();
            if(
kat_node == "category")
            {
                for(var 
b=0b<xml_language.childNodes[i].childNodes[a].childNodes.lengthb++)
                {
                    var 
kat_node_intro xml_language.childNodes[i].childNodes[a].childNodes[b].nodeName.toString();
                    if(
kat_node_intro == "introduction")
                    {
                        
arr_katIntro.pushf_utf8Convertxml_language.childNodes[i].childNodes[a].childNodes[b].firstChild.toString() ) );
                    }
                }
            }
        }
    }
}
// **************************************
// KATEGORIE MENUEPUNKTE
for(var i=0i<xml_language.childNodes.lengthi++)
{
    var 
page_item xml_language.childNodes[i].nodeName.toString();
    if(
page_item == "pages")
    {
        for (var 
a=0a<xml_language.childNodes[i].childNodes.lengtha++)
        {
            var 
pages_page:String xml_language.childNodes[i].childNodes[a].nodeName.toString();
            var 
page_name:String xml_language.childNodes[i].childNodes[a].attributes.name.toString();
            if(
pages_page == "page" && page_name == "main")
            {
                for(var 
b=0b<xml_language.childNodes[i].childNodes[a].childNodes.lengthb++)
                {
                    var 
pages_page_item xml_language.childNodes[i].childNodes[a].childNodes[b].nodeName.toString();
                    var 
pages_page_menu xml_language.childNodes[i].childNodes[a].childNodes[b].attributes.name.toString()
                    if(
pages_page_item == "menu" && pages_page_menu == "kat")
                    {
                        for(var 
c=0c<xml_language.childNodes[i].childNodes[a].childNodes[b].childNodes.lengthc++)
                        {
                            
arr_katMenu.pushf_utf8Convertxml_language.childNodes[i].childNodes[a].childNodes[b].childNodes[c].firstChild.toString() ) );
                        }
                    }
                }
            }
        }
    }
}

// **************************************
// Kategoriefilme aufbereiten
// **************************************
// Anzahl der Kategorien checken und den
// originalen Film entsprechend kopieren
switch( kat_anzahl )
{
    case 
4:
        
kat_mov.kat_mov_part1.duplicateMovieClip("kat_mov_part2",kat_mov.getNextHighestDepth());
            
kat_mov.kat_mov_part2._x kat_mov.kat_mov_part1._x kat_mov.kat_mov_part1._width kat_mov_part_step;
            
kat_mov.kat_mov_part2._y kat_mov.kat_mov_part1._y;
        
kat_mov.kat_mov_part1.duplicateMovieClip("kat_mov_part3",kat_mov.getNextHighestDepth());
            
kat_mov.kat_mov_part3._x kat_mov.kat_mov_part2._x kat_mov.kat_mov_part2._width kat_mov_part_step;
            
kat_mov.kat_mov_part3._y kat_mov.kat_mov_part2._y;
        
kat_mov.kat_mov_part1.duplicateMovieClip("kat_mov_part4",kat_mov.getNextHighestDepth());
            
kat_mov.kat_mov_part4._x kat_mov.kat_mov_part3._x kat_mov.kat_mov_part3._width kat_mov_part_step;
            
kat_mov.kat_mov_part4._y kat_mov.kat_mov_part3._y;
        break;
    case 
3:
        
kat_mov.kat_mov_part1.duplicateMovieClip("kat_mov_part2",kat_mov.getNextHighestDepth());
            
kat_mov.kat_mov_part2._x kat_mov.kat_mov_part1._x kat_mov.kat_mov_part1._width kat_mov_part_step;
            
kat_mov.kat_mov_part2._y kat_mov.kat_mov_part1._y;
        
kat_mov.kat_mov_part2.duplicateMovieClip("kat_mov_part3",kat_mov.getNextHighestDepth());
            
kat_mov.kat_mov_part3._x kat_mov.kat_mov_part2._x kat_mov.kat_mov_part2._width kat_mov_part_step;
            
kat_mov.kat_mov_part3._y kat_mov.kat_mov_part2._y;
        break;
    case 
2:
        
kat_mov.kat_mov_part1.duplicateMovieClip("kat_mov_part2",kat_mov.getNextHighestDepth());
            
kat_mov.kat_mov_part2._x kat_mov.kat_mov_part1._x kat_mov.kat_mov_part1._width kat_mov_part_step;
            
kat_mov.kat_mov_part2._y kat_mov.kat_mov_part1._y;
        break;
}

// KAT_MOV Film zentrieren
kat_mov._x Stage.width/kat_mov._width/2

// **************************************
// Funktionen
// **************************************
function F_setIMGSwap(mc:MovieClip,many:Number,time:Number):Void
{
    
mc.anzahl many;
    
setInterval(F_nextIMGtime*1000mc);
    
trace(mc.con_kat_img1);
}
function 
F_nextIMG(mc:MovieClip)
{
    
trace(mc.con_kat_img1);
    var 
aktDepth:Number mc.getNextHighestDepth() -1;
    var 
aktImage:MovieClip mc.getInstanceAtDepth(aktDepth);
}


// **************************************
// Kategoriefilme mit Daten füllen
// **************************************
for(var i=0i<kat_anzahli++)
{
    var 
nummer:Number i+1;
    var 
kat_mc:MovieClip kat_mov["kat_mov_part"+nummer];

    
// ------------------------------------
    // Kategorie-Namen übergeben
    
kat_mc.katName arr_katName[i]; 
Ende Teil1
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 09-05-2007, 11:33   #4 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
PHP-Code:
    // ------------------------------------
    // Bilder laden
    
var arrayLaenge arr_katIMGPath[i].length;
    if(
arr_katIMGPath[i].length 1)
    {
        for(var 
a=1a<arrayLaengea++)
        {
            
duplicateMovieClip(kat_mc.con_kat_img0,"con_kat_img"+a,kat_mc.getNextHighestDepth());
        }
        for(var 
a=0a<arrayLaengea++)
        {
            var 
bild kat_mc["con_kat_img"+a];
            
kat_mc.f_loadIMG(arr_katIMGPath[i][a],bild,156,242);
        }
        
F_setIMGSwap(kat_mc,arrayLaenge,_root.katImgDelay);
    }
    else
    {
        
kat_mc.f_loadIMG(arr_katIMGPath[i][0],kat_mc.con_kat_img0,156,242);
    }
    
// ------------------------------------
    
    // Einführungstext einsetzen
    
kat_mc.txt_kat_text arr_katIntro[i];
    
    
// Schaltflächen-Texte belegen
    
for(var a=0a<4a++)
    {    
        var 
sf_nummer:Number a+1;
        var 
sf_mc:MovieClip kat_mc["sf_katmenu_"+sf_nummer];
        
sf_mc.kat nummer;
        
sf_mc.txt arr_katMenu[a];
    }
    
    
// Schaltflächen-Funktionen zuordnen
    
kat_mc.sf_katmenu_1.onRollOver = function():Void
    

        
fwechsel(this,kat_menu_startColor,kat_menu_destColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil1,kat_menu_arrowStartCol,kat_menu_arrowDestCol,kat_menu_colorSteps); 
    };
    
kat_mc.sf_katmenu_1.onRollOut = function():Void
    

        
fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil1,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps); 
    };
    
kat_mc.sf_katmenu_1.onPress = function():Void
    

        
_root.ketegorieName this._parent.katName;
        
_root.kategorie this.kat_root.F_changePages("produkte","katMENU");
        
fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps);
        
fwechsel(this._parent.menupfeil1,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps); 
    };
    
    
kat_mc.sf_katmenu_2.onRollOver = function():Void
    

        
fwechsel(this,kat_menu_startColor,kat_menu_destColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil2,kat_menu_arrowStartCol,kat_menu_arrowDestCol,kat_menu_colorSteps); 
    };
    
kat_mc.sf_katmenu_2.onRollOut = function():Void
    

        
fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil2,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps); 
    };
    
kat_mc.sf_katmenu_2.onPress = function():Void
    

        
_root.ketegorieName this._parent.katName;
        
_root.kategorie this.kat_root.F_changePages("vorteile","katMENU");
        
fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil2,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps);
    };
    
    
kat_mc.sf_katmenu_3.onRollOver = function():Void
    

        
_root.legende.F_moveObjectTo(1,_root.legende.MoveTo,_root.pageMoveFaktor);
        
fwechsel(this,kat_menu_startColor,kat_menu_destColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil3,kat_menu_arrowStartCol,kat_menu_arrowDestCol,kat_menu_colorSteps); 
    };
    
kat_mc.sf_katmenu_3.onRollOut kat_mc.sf_katmenu_3.onDragOut = function():Void
    

        
_root.legende.F_moveObjectTo(1,_root.legende.StartY,_root.pageMoveFaktor);
        
fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil3,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps); 
    };
/*    kat_mc.sf_katmenu_3.onPress = function():Void
    { 
        _root.ketegorieName = this._parent.katName;
        _root.kategorie = this.kat; _root.F_changePages("eigenschaften","katMENU");
        fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps); 
        fwechsel(this._parent.menupfeil3,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps);
    };
*/    
    
kat_mc.sf_katmenu_4.onRollOver = function():Void
    

        
fwechsel(this,kat_menu_startColor,kat_menu_destColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil4,kat_menu_arrowStartCol,kat_menu_arrowDestCol,kat_menu_colorSteps); 
    };
    
kat_mc.sf_katmenu_4.onRollOut = function():Void
    

        
fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil4,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps); 
    };
    
kat_mc.sf_katmenu_4.onPress = function():Void
    

        
_root.ketegorieName this._parent.katName;
        
_root.kategorie this.kat_root.F_changePages("zubereitung","katMENU");
        
fwechsel(this,kat_menu_destColor,kat_menu_startColor,kat_menu_colorSteps); 
        
fwechsel(this._parent.menupfeil4,kat_menu_arrowDestCol,kat_menu_arrowStartCol,kat_menu_colorSteps);
    };

Auf der Bühne liegt ein MC mit dem Instanznamen "kat_mov" und in diesem ein MC mit dem Namen "kat_mov_part1", der dupliziert wird.
In desem liegen dann z.B. der Bild-Container "con_kat_img0", der je nach anzahl der angegebenen Bilder im XML vervielfältigt wird, was ja auch funktioniert.
Aber wie schon gesagt, nach dem setInterval verschwindet diese duplizierte Instanz einfach.
__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 09-05-2007, 12:02   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Was passiert, wenn du das Intervall so aufrufst:
PHP-Code:
setInterval(this,"F_nextIMG"time*1000mc); 
  Mit Zitat antworten
Alt 09-05-2007, 13:00   #6 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
Das ändert leider nichts.
wahrscheinlich wird der container von irgendwas überschrieben, denn er ist einfach nicht mehr da.
Ich habe das ganze jetzt mal mit Arrays gemacht, um sicherzustellen, dass die Pfade auch wirklich da sind. Aber die Instanz existiert definitiv nicht mehr zu diesem Zeitpunkt:

PHP-Code:

function F_setIMGSwap(arrNo:Number,many:Number,time:Number):Void
{
    
mc.anzahl many;
    
trace("VORHER: "+arr_katIMGcon[arrNo]);
    
arr_intervals[arrNo] = setInterval(this,"F_nextIMG"time*1000arrNo);
}
function 
F_nextIMG(arrNo:Number):Void
{
    
trace("JETZT: "+arr_katIMGcon[arrNo]);
    var 
aktDepth:Number mc.getNextHighestDepth() -1;
    var 
aktImage:MovieClip mc.getInstanceAtDepth(aktDepth);

__________________
AS3 Lernhilfen
TheFreeman ist offline   Mit Zitat antworten
Alt 09-05-2007, 13:24   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Könnte aber auch ein Objektpfad-Problem sein. Was geben diese traces aus?
PHP-Code:
function F_setIMGSwap(arrNo:Number,many:Number,time:Number):Void
{
    
mc.anzahl many;
    
trace("VORHER: "+arr_katIMGcon[arrNo]);
    
trace("this="+this);
    
arr_intervals[arrNo] = setInterval(this,"F_nextIMG"time*1000arrNo);
}
function 
F_nextIMG(arrNo:Number):Void
{
    
trace("JETZT: "+arr_katIMGcon[arrNo]);
    
trace("this nach Intervall="+this);
    var 
aktDepth:Number mc.getNextHighestDepth() -1;
    var 
aktImage:MovieClip mc.getInstanceAtDepth(aktDepth);

  Mit Zitat antworten
Alt 09-05-2007, 14:47   #8 (permalink)
Gedankengestalter
 
Benutzerbild von TheFreeman
 
Registriert seit: May 2002
Ort: Bayern
Beiträge: 486
OK. Ich habe den Fehler gefunden.
Ich weiss zwar nicht, warum das so ist, aber wenn der duplizierte Container beladen wird verschwindet auch sein Instanzname.
Jetzt habe ich eben im COntainer noch nen Container gemacht und belade diesen und schon gehts.

Ich danke Dir vielmals für Deine Mühe. *hutzieh*
__________________
AS3 Lernhilfen
TheFreeman 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



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

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


Copyright ©1999 – 2012 Marc Thiele