Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-01-2008, 11:31   #1 (permalink)
.........................
 
Benutzerbild von flamingo
 
Registriert seit: Jan 2002
Ort: berlin
Beiträge: 734
Variablen und for-Schleife

Habe das Problem, dass ich innerhalb einer for-Schleife nicht korrekt die Variable angesprochen bekomme.

PHP-Code:
for (var i=0anzahli++) {
        
this.attachMovie("nav_mc""nav_mc"+ii, {_x:100+(i*30), _yi*15 });
        
trace ("nav_mc"+i);
        
        
this["nav_mc"+i].onRollOver = function() {
            
_root["ty"+i] = 300;
            
trace ("rollOver"+i);
        }

beim ersten trace bekomme ich sehr wohl aus Ausgabe nav_mc0, nav_mc1, nav_mc2, ...

beim zweiten trace bekomme ich aber immer (bei allen Rollovers der angelegten MC's) aus Ausgabe rollOver7.

Habe ich die Variablen richtig geschrieben? Spreche ich mit this["nav_mc"+i] auch wirklich alle erzeugten MCs an? Also auf jedem MC soll ein anderer rollOver stehen.

was mache ich falsch?

Danke für Hilfe,
flam
flamingo ist offline   Mit Zitat antworten
Alt 16-01-2008, 11:34   #2 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Der Scope der RollOver-Funktion liegt innerhalb des Buttons, wo es kein i gibt.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 16-01-2008, 11:54   #3 (permalink)
.........................
 
Benutzerbild von flamingo
 
Registriert seit: Jan 2002
Ort: berlin
Beiträge: 734
habe ich das richtig verstanden, dass es in der rollOver-Funktion nicht auf das i zugreifen kann?

Wie kann ich das aber doch machen, bzw. wie kann ich den Wert der Variable in den Button bekommen?
flamingo ist offline   Mit Zitat antworten
Alt 16-01-2008, 12:01   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Ist auch so eine immer wiederkehrende Frage...
PHP-Code:
for (var i=0anzahli++) { 
        
this.attachMovie("nav_mc""nav_mc"+ii, {_x:100+(i*30), _yi*15 }); 
        
trace ("nav_mc"+i); 
        
this["nav_mc"+i].id i
        this
["nav_mc"+i].onRollOver = function() { 
            
_root["ty"+this.id] = 300
            
trace ("rollOver"+this.id); 
        } 

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 16-01-2008, 13:44   #5 (permalink)
.........................
 
Benutzerbild von flamingo
 
Registriert seit: Jan 2002
Ort: berlin
Beiträge: 734
das bringt mich wieder mal ein stückchen weiter, aber noch nicht ans Ziel.

Gilt das gleiche mit den Variablen auch für onEnterFrame und onRollOver?

Dann versuche ich noch etwas rum und ansonsten melde ich mich noch einmal.
flamingo ist offline   Mit Zitat antworten
Alt 16-01-2008, 14:08   #6 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Eigentlich ist es sehr logisch.
Der onRollOver Event wird dem Button-MC angehängt, die Funktion zum onRollOver-Event (quasi der Listener) befindet sich also "im" Button. Innerhalb der Listenerfunktion ist "this" also der Button, nicht die Zeitleiste.

Aber auch ein _parent (Also ein Bezug auf die Zeitleiste vom Button aus) bringt dich nicht weiter, denn wenn der Event gefeuert wird, ist i in _parent natürlich längst der letzte Wert für i in der for-Schleife.

Für alle anderen Events gilt genau das selbe.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 16-01-2008, 14:17   #7 (permalink)
.........................
 
Benutzerbild von flamingo
 
Registriert seit: Jan 2002
Ort: berlin
Beiträge: 734
ich raffs einfach nicht

könntet ihr bitte noch einmal drübergucken? Ich hab auch mal die fla drangehängt. Vielleicht hilfts. Was funktioniert: es bewegt sich; aber leider bewegen sich alle Slider auf einmal. Sie sollen aber einzeln "rutschen". Beim trace bekomm ich ausgegeben über welchem MC ich gerade mit der Maus bin, aber ich bekomme ihn nicht angesteuert.

PHP-Code:
stop();

    for (var 
i=0anzahli++) {
        
        
// navigations-MC
        
var navi this.attachMovie("nav_mc""nav_mc"+ii, {_x:100+(i*30), _yi*15 });
        
trace ("nav_mc + i:    " this["nav_mc" i]);
        
trace ("Variable navi: " navi);
        
trace ("-----------------------------------------");
               
        
// thumb
        
this["nav_mc" i].nav_btn.thumb_mc.loadMovie("img/navigation/thumb0"+i+".jpg");
        
        
        
// text navigation 01
        
var my_fmt:TextFormat = new TextFormat();
        
my_fmt.font "Profile Light";
        
my_fmt.size 14;
        
my_fmt.color 0x999999;
        
this["nav_mc" i].createTextField("mytext"+ii0000);
        
this["nav_mc" i]["mytext" i].setNewTextFormat(my_fmt);
        
this["nav_mc" i]["mytext" i].selectable false;
        
this["nav_mc" i]["mytext" i].autoSize true;
        
this["nav_mc" i]["mytext" i].text anz[i];
                
        
        
// steuerung navigation 01
                // variable für onLoad, onEnterFrame, onRollOver vorbereiten
                
this["nav_mc" i].id i;
        
        
navi.onLoad = function() {
            
_root["ty"+this.id] = _y;
        }
        
        
navi.onEnterFrame = function() {
            
dy _root["ty"+this.id] - _y;
            
_y += dy 50;
        }
        
        
navi.onRollOver = function() {
            
_root["ty"+this.id] = 200;
                        
            
trace ("rollOver: " this.id);
            
trace (this.id);
        }
    } 
Ich glaub das Prob ist echt "einfach" nur der korrekte Pfad "vom und zum" richtigen MC.....

fla kann ich nicht hochladen weil zu groß (xml und thumbs müssen ja dabei sein), deswegen hier ein Link: http://www.benrenner.de/austausch/fl...bild_laden.zip

vielen Dank,
flam
flamingo ist offline   Mit Zitat antworten
Alt 16-01-2008, 14:31   #8 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Uhh, ein EnterFrame, das permanent läuft und mit einem NaN klarkommen muss, bis was geliefert wird.
Und navi hat kein onLoad-Event (guck mal in der Hilfe unter onLoad).

Und warum benutzt du nicht auch vor den Events navi, um dir die hundert "this["nav_mc" + i]" zu sparen?

So würds gehn, dann kannst du das mit der id auch grad ganz weglassen.
PHP-Code:
stop();

for (var 
0i<anzahli++) {

    
// navigations-MC
    
var navi this.attachMovie("nav_mc""nav_mc"+ii, {_x:100+(i*30), _y:i*15});
    
trace("nav_mc + i:    "+this["nav_mc"+i]);
    
trace("Variable navi: "+navi);
    
trace("-----------------------------------------");

    
// thumb
    
navi.nav_btn.thumb_mc.loadMovie("img/navigation/thumb0"+i+".jpg");


    
// text navigation 01
    
var my_fmt:TextFormat = new TextFormat();
    
my_fmt.font "Profile Light";
    
my_fmt.size 14;
    
my_fmt.color 0x999999;
    
navi.createTextField("mytext"+i,i,0,0,0,0);
    
navi["mytext"+i].setNewTextFormat(my_fmt);
    
navi["mytext"+i].selectable false;
    
navi["mytext"+i].autoSize true;
    
navi["mytext"+i].text anz[i];


    
// steuerung navigation 01
    // variable für onLoad, onEnterFrame, onRollOver vorbereiten

    
navi.onRollOver = function() {
        var 
ty:Number 200;

        
this.onEnterFrame = function() {
            var 
dy:Number ty-this._y;
            
this._y += dy/50;
            if (
Math.abs(this._y-ty)<1) {
                
this._y 200;
                
delete this.onEnterFrame;
            }
        };

    };

__________________
we will stop enhancing the truth in 3, 2, ...

Geändert von SpecOps-12 (16-01-2008 um 14:32 Uhr)
SpecOps-12 ist offline   Mit Zitat antworten
Alt 16-01-2008, 15:05   #9 (permalink)
.........................
 
Benutzerbild von flamingo
 
Registriert seit: Jan 2002
Ort: berlin
Beiträge: 734
wow... so aufgeräumt

funktioniert super... jetzt muss ich mich da erstmal durchverstehen.

danke,
flam
flamingo ist offline   Mit Zitat antworten
Alt 16-01-2008, 16:12   #10 (permalink)
.........................
 
Benutzerbild von flamingo
 
Registriert seit: Jan 2002
Ort: berlin
Beiträge: 734
Thumbs up

bin total am Boden...

denke ich habs gerafft und dann versuche ich das nächste und häng wieder durch

ich will beim rollOver eines MCs ja alle vorhandenen MCs bewegen. Ich bekomme jetzt aber nur den einen angesteuert.

PHP-Code:
navi.onRollOver = function() {
     var 
ty:Number 200;
     
_level0.nav_mc0.ty 200 
mag er aber nicht.
Natürlich soll das später irgendwie an die for-Schleife mit ran, aber um es zu verstehen ist es besser so direkt.

Tip? Vielleicht auch mal ein Tutorial- oder Buchtip. Weil irgendwie muss ich das jetzt langsam mal verstehen.
flamingo ist offline   Mit Zitat antworten
Alt 17-01-2008, 08:13   #11 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Was willst du denn mit dem

_level0.nav_mc0.ty = 200

erreichen?
Das das der andre MC sich bewegt?
Das tut er natürlich nicht, denn das onEnterFrame wird nur beim onRollOver angeschmissen und nach beendigung des "Tweens" wieder beendet (Und das ist auch gut so).

Es gibt eine wunderbare Erfindung für viele Instanzen mit gleichen oder ähnlichen Eigenschaften: Klassen.
Ich weiß, das Wort wirkt wie ein großes Schreckgespenst, aber es ist überhaupt nicht so schwer wie man glaubt
Und deine ganzen Pfadsorgen würden sich wohl weitestgehend erledigen.

Zum Fortbilden:

Ich kann nur immer wieder alle gotoAndLearn.com-Tutorials empfehlen. Lee Brimelow erklärt großartig und wenn man die Tutorials auch macht und sich nicht nur die Daten saugt und den Code kopiert, dann kann man es allein mit gotoAndLearn von 0 bis zum gehobenen Mittelklasse-Flasher bringen.

Und dann die Essential-Bücher von Moock. Sind wohl sowas wie die Flash-Bibeln.
Ich weiß ehrlich gesagt nicht, ob es besseres gibt, habs nicht ausprobiert. Keith Peters ist noch ganz groß, aber das hat weniger mit allgemeinem AS-Verständnis als mit reinen Physik- und Animationstechniken zu tun.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 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 03:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele