Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-02-2006, 13:35   #1 (permalink)
[Flash - Fan]
 
Benutzerbild von ElPower
 
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 50
interval stoppt einfach nicht

Hallo,

Ich habe einen Intervall gestartet und will den selben dann weiter unten wieder beenden... eigendlich müsste das so gehen:
(Nicht das superprofi-script..)
PHP-Code:
//Subnavigation
function subnavi (xmySec){
    
removeSubnavi();//vorheriges Submenu entfernen
    
var subX = -1// Abstand von der Urinstanz
    
var = -1;
    var 
subSecNum mySec;//wählen der passenden subNavigation
    
var subSectionCount subcat[subSecNum].length-1;//Zählen der subNavigationspunkte
    
[COLOR="Red"]var subInterval setInterval(subnaviAnordnen250);[/COLOR]//die navigationspunkte im intervall einblenden
}
// Anordnen der Subnavi
function subnaviAnordnen(xmySec) {
    
_root.reiter.submenu._x subEinrueck;//Einrückung zum HauptnaviPunkt
    
_root.reiter.submenu.submenuItemBase.duplicateMovieClip("submenuItem_"+ii);//Den Submenu-Button in Anzahl der Subnavigationspunkte Duplizieren
    
_root.reiter.submenu["submenuItem_"+i].subSecName subcat[subSecNum][i];//Submenünamen lesen und einstellen
    
_root.reiter.submenu["submenuItem_"+i].subSecLink subcat_form[subSecNum][i];//Verlinkung lesen und einstellen
    
_root.reiter.submenu["submenuItem_"+i].thumbLink klein[subSecNum][i];//Submenü-Thumbnail-Verlinkung lesen und einstellen
    
_root.reiter.submenu["submenuItem_"+i].currentSec subSecNum;//thumbnail-oberkategorie weitergeben
    
_root.reiter.submenu["submenuItem_"+i].currentI i;//thumb-id weitergeben

    //Die SubNavigationspunkte nebeneinander u. untereinander anordnen
    
subX += random(3) == 1//zufällige Lücken erzeugen
    
_root.reiter.submenu["submenuItem_"+i]._x = (subX%umbruch)*(w+submenuWidthSpacing);//horizontale anordnung
    
_root.reiter.submenu["submenuItem_"+i]._y Math.floor(subX/umbruch)*(h+submenuHeightSpacing);//vertikale anordnung zeilenumbruch bei "umbruch"
    
    
if(>= subSectionCount) {//falls die anzahl der navigationspunkte erreicht ist
        
[COLOR="Red"]clearInterval(subInterval);[/COLOR]//den intervall löschen
        
trace("clear Interval");
    }
    
i++;

...das Trace wird auch aufgerufen, aber der Interval stoppt nicht.

Eine kleine Hilfe dazu wäre Super.
Vielen Dank und beste Grüsse,
ElP.
ElPower ist offline   Mit Zitat antworten
Alt 28-02-2006, 13:40   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Die Variable in der du das Intervall speicherst ist lokal, also nur in der Funktion "subnavi" bekannt und somit kann dein Intervall nicht gelöscht werden.
Du müsstest die Variable ausserhalb der Funktion anlegen damit du auf diese zugreifen kannst.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 28-02-2006, 13:48   #3 (permalink)
[Flash - Fan]
 
Benutzerbild von ElPower
 
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 50
Thumbs up

Danke Redner!
Ich vermutete schon eine Problem in Richtung Pfade etc... bin
aber einfach nicht darauf gekommen.

Zur Vollständigkeit noch mal das 'funktionierende' Script:

PHP-Code:
//Subnavigation
function subnavi (xmySec){
    
removeSubnavi();//vorheriges Submenu entfernen
    
var subX 0// Abstand von der Urinstanz
    
var 0;
    var 
subSecNum mySec;//wählen der passenden subNavigation
    
var subSectionCount subcat[subSecNum].length-1;//Zählen der subNavigationspunkte
    
var subInterval setInterval(subnaviAnordnen250);//die navigationspunkte im intervall einblenden
    // Anordnen der SubnaviPunkte
    
function subnaviAnordnen(xmySec) {
        
_root.reiter.submenu._x subEinrueck;//Einrückung zum HauptnaviPunkt
        
_root.reiter.submenu.submenuItemBase.duplicateMovieClip("submenuItem_"+ii);//Den Submenu-Button in Anzahl der Subnavigationspunkte Duplizieren
        
_root.reiter.submenu["submenuItem_"+i].subSecName subcat[subSecNum][i];//Submenünamen lesen und einstellen
        
_root.reiter.submenu["submenuItem_"+i].subSecLink subcat_form[subSecNum][i];//Verlinkung lesen und einstellen
        
_root.reiter.submenu["submenuItem_"+i].thumbLink klein[subSecNum][i];//Submenü-Thumbnail-Verlinkung lesen und einstellen
        
_root.reiter.submenu["submenuItem_"+i].currentSec subSecNum;//thumbnail-oberkategorie weitergeben
        
_root.reiter.submenu["submenuItem_"+i].currentI i;//thumb-id weitergeben
    
        //Die SubNavigationspunkte nebeneinander u. untereinander anordnen
        
subX += random(3) == 1//zufällige Lücken erzeugen
        
_root.reiter.submenu["submenuItem_"+i]._x = (subX%umbruch)*(w+submenuWidthSpacing);//horizontale anordnung
        
_root.reiter.submenu["submenuItem_"+i]._y Math.floor(subX/umbruch)*(h+submenuHeightSpacing);//vertikale anordnung zeilenumbruch bei "umbruch"
        
        
if(>= subSectionCount) {//falls die anzahl der navigationspunkte erreicht ist
            
clearInterval(subInterval);//den intervall löschen
            
trace("clear Interval");
        }
        
i++;
    }

Beste Grüsse,
ElP.
ElPower ist offline   Mit Zitat antworten
Alt 28-02-2006, 13:57   #4 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Würde ich nicht so machen, immer wenn die Funktion "subnavi" aufgerufen wird erstellt diese die Funktion "subnaviAnordnen"...

So solltest du das machen:
PHP-Code:
var id;
function 
subnavi(){ ... }
function 
subnaviAnordnen(){ ... } 
Dann kannst du nämlich das Intervall in "id" speichern und von beiden Funktionen ansprechen.
Oder du übergibst die Variable mit dem Intervall der Funktion "subnaviAnordnen" als Parameter.
__________________
ERROR: Signature is too large

Geändert von rendner[i] (28-02-2006 um 13:58 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 28-02-2006, 14:20   #5 (permalink)
[Flash - Fan]
 
Benutzerbild von ElPower
 
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 50
Das war auch mein Ansatz, ich habe es jetzt auch noch mal so arangiert, aber es funktioniert wieder nicht...
PHP-Code:
var subInterval;

function 
subnavi (xmySec){

    ...

    
_root.subInterval setInterval(subnaviAnordnen100);
}

function 
subnaviAnordnen(xmySec) {

    ...

    if(
>= subSectionCount) {
        
clearInterval(_root.subInterval);
    }


Ich habe schon im Buch nachgeschaut, aber nicht gefunden..gibt
es sowas wie

PHP-Code:
var subInterval = new Interval () 
Danke und beste Grüsse, ElP.
ElPower ist offline   Mit Zitat antworten
Alt 28-02-2006, 14:36   #6 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Das geht!
PHP-Code:
var idNumber;

function 
sub(): Void
{
    
id setIntervalsubN100 );
    
    
trace"Interval started." );
}

function 
subN(): Void
{
    
trace"--enter subN--" );
    
    
clearIntervalid );
    
    
trace"Interval cleared." );
}

sub(); 
Zitat:
Ich habe schon im Buch nachgeschaut, aber nicht gefunden..gibt
es sowas wie

PHP-Code:
var subInterval = new Interval ()
Was soll das machen?
Man könnte eventuell selber eine Klasse schreiben die dann bestimmte Methoden hatt.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 28-02-2006, 16:17   #7 (permalink)
[Flash - Fan]
 
Benutzerbild von ElPower
 
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 50
Klassen müssen in diesem Fall nicht erstellt werden, mir würde es reichen erstmal das Script so zum laufen zu bringen...
(Ausserdem bin ich mit dem Erstellen eigener Klassen etc. noch nicht vertraut.)

Ich komme einfach nicht weiter...vielleicht findest Du ja den Fehler, meiner Ansicht nach ist alles wie in Deinem (natürlich funktionierendem) Beispiel:

PHP-Code:
var subInterval:Number;

//Subnavigation
function subnavi (mySec){
    
removeSubnavi();//vorheriges Submenu entfernen
    
subX 0// Abstand von der Urinstanz
    
var 0;
    var 
subSecNum mySec;//wählen der passenden subNavigation
    
var subSectionCount subcat[subSecNum].length-1;//Zählen der subNavigationspunkte
    
subInterval setInterval(subnaviAnordnen50mySec);//die navigationspunkte im intervall einblenden
}
// Anordnen der SubnaviPunkte
function subnaviAnordnen(mySec) {
    
reiter.submenu._x subEinrueck;//Einrückung zum HauptnaviPunkt
    
reiter.submenu.submenuItemBase.duplicateMovieClip("submenuItem_"+ii);//Den Submenu-Button in Anzahl der Subnavigationspunkte Duplizieren
    
reiter.submenu["submenuItem_"+i].subSecName subcat[subSecNum][i];//Submenünamen lesen und einstellen
    
reiter.submenu["submenuItem_"+i].subSecLink subcat_form[subSecNum][i];//Verlinkung lesen und einstellen
    
reiter.submenu["submenuItem_"+i].thumbLink klein[subSecNum][i];//Submenü-Thumbnail-Verlinkung lesen und einstellen
    
reiter.submenu["submenuItem_"+i].currentSec subSecNum;//thumbnail-oberkategorie weitergeben
    
reiter.submenu["submenuItem_"+i].currentI i;//thumb-id weitergeben

    //Die SubNavigationspunkte nebeneinander u. untereinander anordnen
    
subX += random(2) == 1//zufällige Lücken erzeugen
    
reiter.submenu["submenuItem_"+i]._x = (subX%umbruch)*(w+submenuWidthSpacing);//horizontale anordnung
    
reiter.submenu["submenuItem_"+i]._y Math.floor(subX/umbruch)*(h+submenuHeightSpacing);//vertikale anordnung zeilenumbruch bei "umbruch"
    
    
if(>= subSectionCount) {//falls die anzahl der navigationspunkte erreicht ist
        
clearInterval(subInterval);//den intervall löschen
        
trace("clear Interval");
    }
    
i++;

Vielen Dank und beste Grüsse,
ElP.

PS: das ganze ist Teil einer xml-gesteuerten Navi
ElPower ist offline   Mit Zitat antworten
Alt 28-02-2006, 16:44   #8 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Das gleiche Problem macht doch dein i, dieses erstellst du in der Funktion "subnavi" lokal (!) aber du verwendest dieses in der anderen Funktion auch...und die Variable mit der du i vergleichst ist auch in der anderen Funktion nur sichtbar.

Das heißt das die Funktion "subnaviAnordnen" gar nicht wissen kann das i = 0 ist und was überhaupt "subSectionCount" für einen Wert hat.

Damit du auch siehst was ich mein, hier ein Beispiel:
PHP-Code:
function a(): Void
{
    var 
iNumber 100;
    
trace"function a: i= " );
}

function 
b(): Void 

    
trace"function b: i= " ); 
}

a();
b(); 
__________________
ERROR: Signature is too large
rendner[i] 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:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele