Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-02-2008, 17:46   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
Movieclips Koordinaten geben, plus Resize Listener, der diese nicht verändert

Blöder Titel, recht einfache Frage.

Für die Startanimation auf einer Website will ich einen Balken plus ein Logo aus dem oberen Bildschirmrand herauslaufen lassen. Damit die beiden Elemente nicht schon vorher dastehen, würde ich sie gerne auf y: - ihre höhe setzen.

Bei Verändern der Bühnengröße (das ganze ist full screen) sollen die Koordinaten dann aber richtig angepasst werden. Nun "übertönen" die Koordinaten im Stage-Listener anscheinend die Koordinaten, die ich zuvor angebe.

Wie kann ich das lösen?

Ein Blick auf das File wird das ganze denk ich anschaulicher machen.

download

Danke für wirklich jeden brauchbaren Tipp, weiß grad echt nicht weiter.

Schönen Abend aus Österreich und nicht vergessen, 20:30 geht's los!
gmadesign ist offline   Mit Zitat antworten
Alt 07-02-2008, 02:12   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Zitat:
Zitat von gmadesign Beitrag anzeigen
..20:30 geht's los!
fussball? erwachsene leut, die gegen einen ball und sich selbst treten - interessiert mich nicht.

nee, da ist nichts anschaulich. keine ahnung, was du erreichen willst. vielleicht nochmal anderst beschreiben?

davon mal abgesehen, die angaben unter
//Koordinaten beim Start (ohne Resize)
...
kannst du dir spahren, da du diese mit
lstrn.onResize();
überschreiben lässt.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 07-02-2008, 11:18   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
Hey!

Wieder mal ne Schlappe für uns, interessiert aber keinen

Es geht um eine Startanimation quasi. Und zwar in diesem Ablauf:

1. Preloader (bild 1, hat mit dem Problem nichts zu tun)
2. Full Screen Foto fadet ein (funktioniert, nur soll sonst nichts zu sehen sein)
3. Roter Balken kommt von oben
4. Logo darüber, auch von oben,
5. Navigation fadet ein
6. inhalt wird in den inhalt_mc geladen

Worum es geht, ist, dass der rote Balken und das logo schon zu beginn dastehen, weil ihre Koordinaten im resize-listener ja auch so angegeben werden. Nur bei der Introanimation sollen sie erst aus dem Nichts kommen und dann erst dastehen.

Ich hab nur keine Ahung, wie ich das realisiere. Ich hoffe, nun ist es etwas klarer.

Danke!!!
gmadesign ist offline   Mit Zitat antworten
Alt 07-02-2008, 14:08   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ergänze eine variable, die bestimmt, ob und wer wie gezeigt wird. z.b.

intro_ist_gelaufen=false;

... nach ablauf deiner introanimation
intro_ist_gelaufen = true;

und entsprechend dieser einstellung das resize-programm steuern.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 10-02-2008, 11:17   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
hab die Prüfvariable jetzt eingebaut, es funktioniert aber leider nicht. Ich denke, es könnte an den Gültigkeitsbereichen liegen, hab da auch schon einiges herumprobiert, hat aber nichts funktioniert.

Schau mal, hier ist der Code, du siehst wahrscheinlich auf einen Blick, was ich da falsch mache...:

PHP-Code:
var ist_gelaufen:Boolean;
ist_gelaufen false;

//Resize-Listener bei Veränderung der Bühnengröße
if(ist_gelaufen=true){

var 
lstrn Object = {}; 
lstrn.onResize = function() : Void
{     
    
bg_mc._x Stage.width-Stage.width
    
bg_mc._y Stage.height-Stage.height
    
bg_mc._width Stage.width
    
bg_mc._height Stage.height;
    
    
inhalt_mc._x Stage.width/2-412.5;
    
inhalt_mc._y = ((Stage.height-balken_rot_mc._height)/2) + balken_rot_mc._height-197;
    
    
balken_rot_mc._x Stage.width/2;
    
balken_rot_mc._y Stage.height Stage.height balken_rot_mc._height/2
    
balken_rot_mc._width Stage.width
    
    
da_capo_logo_mc._x Stage.width/6;
    
da_capo_logo_mc._y Stage.height Stage.height da_capo_logo_mc._height/2;;
    
    
navigation_mc._x da_capo_logo_mc._x+170;
    
navigation_mc._y 100;
    
    
sound_mc._x navigation_mc._x+navigation_mc._width+30;
    
sound_mc._y 100;
}; 

Stage.addListenerlstrn ); 
lstrn.onResize();
};



function 
startAnimation() :Void {
    
//Hintergrund laden
    
bg_mc.loadMovie("bg/home.jpg");
    
//Hintergrund einfacden
    
var bg_fade Tween = new Tween (bg_mc"_alpha"Strong.easeOut01001.5true);
    
//danach Roten Balken auf alpha 85 setzen, danach vom oberen Bildschirmrand runtersliden lassen
    
bg_fade.onMotionFinished = function(){
    
this._parent.balken_rot_mc._alpha 85;
    var 
roterBalken Tween = new Tween (balken_rot_mc"_y"Strong.easeOut, -130651true );
    
    
//Wenn der Rote Balken unten ist, soll das Logo runtersliden
        
roterBalken.onMotionFinished = function() :Void {
            var 
logo_tween Tween = new Tween (da_capo_logo_mc"_y"Strong.easeOut, -152760.5true);
        
                
logo_tween.onMotionFinished = function() :Void {
                    new 
Tween (sound_mc"_alpha"Strong.easeOut01001true);
                    var 
navi_tween Tween = new Tween (navigation_mc"_alpha"Strong.easeOut01001true);
                    

                    
navi_tween.onMotionFinished = function() :Void {
                        
inhalt_mc.loadMovie("swf/home.swf");
                        
ist_gelaufen true;
                        
                                                    };  
                                                };
                                        };
                                    };
}; 
Wär dir sehr dankbar, wenn du mir dazu noch was sagen könntest, was mir eventuell weiterhilft.

Danke
gmadesign ist offline   Mit Zitat antworten
Alt 10-02-2008, 13:06   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ist_gelaufen = false;
if(ist_gelaufen=true){

= ist eine zuweissung und kein test.
und selbst wenn, was soll das an dieser stelle bewirken? eine zeile höher hast du definiert das diese variable false sein soll. das wird sich bis eine zeile weiter kaum geändert haben.

wenn du lstrn.onResize am anfang nicht aufrufen wolltest, dann bräuchtest du ja nur den aufruf dazu, das lstrn.onResize() nicht ausführen.

denk nochmal darüber nach, was du überhaupt machen willst.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 10-02-2008, 15:22   #7 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
jaja, bin schon draufgekommen, dass es kein test ist und habs dann geändert.

Jetzt ist es so (eigentlich logisch), dass sich alles am linken oberen Rand ausrichtet, da ja noch kein resize-listener ausgeführt wird.

Ich will haben, dass der background geladen wird, ohne dass logo und roter balken bereits sichtbar sind. deshalb sollten die beiden oberhalb der bühne stehen, alles andere darf sich dann aber schon resizen, sonst hab ich's links oben, statt in der mitte. Jetzt brauch ich aber einen denkanstoß. Wenn ich nicht am ende der Startanimation die variable auf true stelle, dann nachdem der rote balken runterfährt?

Hmm, seh ich das halbwegs richtig? Wie ich das jetzt umsetze, ist eine andere Frage. Kann ich denn den resize-listener hinstellen, wo ich will???

Danke vielmals für deine Denkanstöße.
gmadesign ist offline   Mit Zitat antworten
Alt 10-02-2008, 16:12   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
onResize soll vor dem intro was anderes machen, als danach.
ist das wirklich so schwer zu verstehen?
Code:
lstrn.onResize = function() : Void 
{ if (ist_gelaufen) { 
  // tue, was immer du machen willst, nachdem das intro durch ist
  } else {
  // tue, was immer du machen willst, bevor das intro gelaufen ist
  }
}
Stage.addListener( lstrn );
damit wird die verbindung vom event zum programm das dieses event aufrufen soll geschaffen. da ist doch der ort, wo das programm steht, egal. verbunden ist verbunden.

eine alternative zum ist_gelaufen-flag wären zwei unterschiedliche "lstrn"-objekte. das eine für den einen fall, das andere für den anderen fall.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (10-02-2008 um 16:13 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 10-02-2008, 17:02   #9 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
Super. Danke für's erklären, bin etwas auf der Leitung gestanden...

Das Anliegen funkt jetzt so weit, ich hab aber ein Problem mit dem Hochskalieren des Background-Fotos.

Wenn ich es hochskaliere, per Listener, wird es nicht angezeigt, wenn ich die Angaben auskommentiere, sieht man es.. Komisch...

So sieht das jetzt aus.

PHP-Code:
//Varibale, die prüft, ob es sich um die Introanimation oder die Navigationsfunktion handelt und dementsprechend die Resize-Funktion aufruft

_global.ist_gelaufen;
ist_gelaufen == false;

var 
lstrn Object = {}; 
lstrn.onResize = function() : Void
{     

if(
_global.ist_gelaufen==true){
    
/*bg_mc._x = Stage.width-Stage.width; 
    bg_mc._y = Stage.height-Stage.height; */
   /* bg_mc._width = Stage.width; 
    bg_mc._height = Stage.height;*/
    
    
inhalt_mc._x Stage.width/2-412.5;
    
inhalt_mc._y = ((Stage.height-balken_rot_mc._height)/2) + balken_rot_mc._height-197;
    
    
balken_rot_mc._x Stage.width/2;
    
balken_rot_mc._y Stage.height Stage.height balken_rot_mc._height/2
    
balken_rot_mc._width Stage.width
    
    
da_capo_logo_mc._x Stage.width/6;
    
da_capo_logo_mc._y Stage.height Stage.height da_capo_logo_mc._height/2;;
    
    
navigation_mc._x da_capo_logo_mc._x+170;
    
navigation_mc._y 100;
    
    
sound_mc._x navigation_mc._x+navigation_mc._width+30;
    
sound_mc._y 100;
}
    else{
        
    
/*bg_mc._width = Stage.width; 
    bg_mc._height = Stage.height;*/
        
    
inhalt_mc._x Stage.width/2-412.5;
    
inhalt_mc._y = ((Stage.height-balken_rot_mc._height)/2) + balken_rot_mc._height-197;
    
    
navigation_mc._x da_capo_logo_mc._x+170;
    
navigation_mc._y 100;
    
    
sound_mc._x navigation_mc._x+navigation_mc._width+30;
    
sound_mc._y 100;
    }
}; 

Stage.addListenerlstrn ); 
lstrn.onResize(); 
Vielleicht hilft, es, das file zu sehen. hier zum downloaden.

Danke danke danke, kann ich nur sagen.
gmadesign ist offline   Mit Zitat antworten
Alt 10-02-2008, 17:27   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
das bild muss ja erstmal geladen werden, vorher kann'st du ihm keine grösse zuordnen.

nim anstatt loadMovie lieber loadClip mit onLoadComplete.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 10-02-2008, 21:04   #11 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
hab's jetzt insofern abgeändert:
PHP-Code:

function startAnimation() :Void {
    
//Hintergrund laden
    
bg_mc._alpha 0;
    
bg_mc.loadClip("bg/home.jpg");
    var 
mcLoader:MovieClipLoader = new MovieClipLoader();
    
mcLoader.addListener(this);
    
mcLoader.loadClip("bg/home.jpg"bg_mc);

function 
onLoadInit(mc:MovieClip) {
    var 
bg_fade Tween = new Tween (bg_mc"_alpha"Strong.easeOut01002true);
}

    
//Hintergrund einfacden
    
var bg_fade Tween = new Tween (bg_mc"_alpha"Strong.easeOut01002true);
    
//danach Roten Balken auf alpha 85 setzen, danach vom oberen Bildschirmrand runtersliden lassen
    
bg_fade.onMotionFinished = function(){
    
this._parent.balken_rot_mc._alpha 85;
    var 
roterBalken Tween = new Tween (balken_rot_mc"_y"Strong.easeOut, -130651true );

.
.
.

es funkt aber immer noch nicht mit dem hochskalieren. Aber danke trotzdem für den tipp mit loadClip.

das file ist immer noch unter obigem link auffindbar, aktualisiert natürlich. Du findest ja mit Sicherheit noch einen Fehler in meinem Vorgehen. Ich hoffe halt.

Tausend Dank! Ohne euch pros würden hunderte Stunden verschwendet werden ohne Ergebnis, das ist fix.
gmadesign ist offline   Mit Zitat antworten
Alt 10-02-2008, 23:09   #12 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
dann noch: das mc in das man reinläd wird überschrieben (ersetzt). normalerweisse halt ein swf, das selbst zu einem mc wird. wenn da noch was nicht geht wird's wohl daran liegen, dass das mc nach dem laden eine bild ist? probier es aus:

bg_mc.createEmptyMovieClip("bild",1);
mcLoader.loadClip("bg/home.jpg", bg_mc.bild);

...
das tweenen auf bg_mc lassen.

und natürlich darfst du das erst machen, nachdem das bild geladen wurde. das ist doch der eigentliche grund für das onLoadInit. warum steht da unter der function (was ein durcheinander?) der selbe tween nochmal?

und wo ist das geblieben?
bg_mc._width = Stage.width;
bg_mc._height = Stage.height;
wenn das bild geladen wurde, dann wird onLoadInit aufgerufen, dann kannst du die grösse des bildes ändern und das meinetwegen auch noch einsoften ... oder was immer dir inzwischen neu eingefallen ist ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (10-02-2008 um 23:20 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 11-02-2008, 08:59   #13 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
Danke voerst nochmal. Ich kann mir das erst am Nachmittag ansehen.

Ich hab den bg_mc aus dem Grund nicht dynamisch generiert, weil er in den ebenen immer über statt unter allem anderen gelegen ist.

Das was nachgeladen wird, ist eindeutig ein Bild, ein jpg nämlich.

Warum muss ich den Tween lassen? Ich will einfach haben, dass zu Beginnn mein Hintergrund einlädt und nach jedem Klick auf einen Navigationspunkt der alte background ausfadet und der neue ein.

Warum der Tween zwei mal steht.. klarer Fall von Fehler durch Copy Paste

Danke nochmal!
gmadesign ist offline   Mit Zitat antworten
Alt 13-02-2008, 20:09   #14 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 642
Hallo nochmal. Jetziger Status ist ein schwarzer Screen, auf dem die Musik spielt. Ich dachte eigentlich, ich hätte die Site jetzt fertig. Fehler wird keiner angezeigt, sonst aber leider auch nichts...

aktuell angepasste Startfunktion:

PHP-Code:
function startAnimation() :Void {
    
//Hintergrund laden
    
bg_mc._alpha 0;
    
bg_mc.createEmptyMovieClip("bild",1);
    
    var 
mcLoader:MovieClipLoader = new MovieClipLoader();
    
mcLoader.addListener(this);
    
mcLoader.loadClip("bg/home.jpg"bg_mc.bild);

function 
onLoadInit(mc:MovieClip) {
    
bg_mc._width Stage.width;
    
bg_mc._height Stage.height;
    var 
bg_fade Tween = new Tween (bg_mc"_alpha"Strong.easeOut01002true);
}

    
//danach Roten Balken auf alpha 85 setzen, danach vom oberen Bildschirmrand runtersliden lassen
    
bg_fade.onMotionFinished = function(){
    
this._parent.balken_rot_mc._alpha 85;
    var 
roterBalken Tween = new Tween (balken_rot_mc"_y"Strong.easeOut, -130651.5true ); 
Mach ich da irgendetwas falsch?

Danke für weiter Tipps!
gmadesign ist offline   Mit Zitat antworten
Alt 13-02-2008, 21:00   #15 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
wenn man einen fehler hat, dann überall mit trace testen, ob alle objekte da sind, so wie man sich das vorgestellt hat.

und/oder mit dem debugger (siehe meine signatur) schrittweisse das programm durchgehen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib 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 01:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele