Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-03-2006, 01:48   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 96
Ausrichtung im Browserfenster

Hallo zusammen. Hätte da mal ne Frage an die Spezialisten.

Bin gerade dabei eine HP zu realisieren, bei der sich das „swf“ an die Browsergröße anpasst. Auf dieser Seite, soll sich das „footer_menue“ immer horizontal im Browserfenster zentrieren. Soweit nichts Außergewöhnliches.

Habe das mit folgendem Script gelöst:


//////////////

Stage.scaleMode = "noScale";
Stage.align = "LT";


footer_instanz.onResize = function() {
this._width = Stage.width;
this._y = (Stage.height - 35)
};

Stage.addListener(footer_instanz);
footer_instanz.onResize();


footer_menue_instanz.onResize = function() {
this._x = Stage.width/2-this._width/2;
this._y = (Stage.height - 35)
};

Stage.addListener(footer_menue_instanz);
footer_menue_instanz.onResize();

//////////////////


Funktioniert auch ganz gut soweit. (Siehe Anhang)

Meine Frage: Wie kann ich das anstellen, dass sich das „footer_menue“ nicht sofort neu ausrichtet wenn ich die Fenstergröße verändere, sondern erst nach kurzer Verzögerung langsam die neue Position einnimmt. Als Beispiel fällt mir da folgende Site ein: http://green.colorize.net/

Hat da jemand ne Idee? Wäre euch sehr dankbar.
Angehängte Dateien
Dateityp: zip ausrichtung.zip (5,6 KB, 45x aufgerufen)
n.stirner ist offline   Mit Zitat antworten
Alt 13-03-2006, 15:16   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!

Such mal nach "Easing". Ein einfaches Beispiel:
PHP-Code:
this.mc.onEnterFrame = function() {
    if (
Math.round(this._x) != 400) {
        
this._x += (400-this._x)/10;
    } else {
        
this._x 400;
        
delete this.onEnterFrame;
    }
}; 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 13-03-2006, 15:23   #3 (permalink)
Custom Title
 
Registriert seit: Aug 2001
Beiträge: 467
Also erstmal könntest Du mal auf 31 fps gehen

Ich hab die neue Datei angehängt.
Hier der Code:

PHP-Code:
Stage.scaleMode "noScale";
Stage.align "LT";


footer_instanz.onResize = function() {
    
this._width Stage.width;
    
this._y = (Stage.height 35)
};

Stage.addListener(footer_instanz);
footer_instanz.onResize();


footer_menue_instanz.onResize = function() {
    
//this._x = Stage.width/2-this._width/2;
    //this._y = (Stage.height - 35)
    
tx Stage.width/2-this._width/2;
    
ty = (Stage.height 35)
    
newTween(this,tx,ty);
}

Stage.addListener(footer_menue_instanz);
footer_menue_instanz.onResize();

function 
newTween(mc,x,y){
    
mc.tweenX.stop();
    
mc.tweenY.stop();
    
trace(mc+"  "+x+"   "+y);
    var 
easeType mx.transitions.easing.Regular.easeOut;
    var 
time 1;
    var 
targetX x;
    var 
targetY y;
    
mc.tweenX = new mx.transitions.Tween(mc"_x"easeTypemc._xtargetXtimetrue);    
    
mc.tweenY = new mx.transitions.Tween(mc"_y"easeTypemc._ytargetYtimetrue);

Angehängte Dateien
Dateityp: zip resize.zip (478 Bytes, 51x aufgerufen)
__________________
---::::: AVisioN :::::---
AVisioN ist offline   Mit Zitat antworten
Alt 14-03-2006, 00:12   #4 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 96
Auf ein Zweites...

„AVisioN“,vielen Dank für deine rasche Antwort.

Dein Script bringt mich schon mal ein gutes Stück weiter, auch wenn ich es nicht zu 100% nachvollziehen kann. Bin halt eher Grafiker… Bei all zu viel Logik steig ich wohl geistig aus.

Was ich vergessen hatte zu erwähnen. Das Menue darf sich nur in der Horizontalen ausrichten. Es muß also ständig innerhalb des schwarzen Rahmens bleiben. Hab`s grad schon probiert anzupassen. Na ja, beim Probieren ist es bis jetzt auch geblieben. Krieg`s nicht auf die Reihe.

Geändert von n.stirner (14-03-2006 um 00:14 Uhr)
n.stirner ist offline   Mit Zitat antworten
Alt 14-03-2006, 12:40   #5 (permalink)
Custom Title
 
Registriert seit: Aug 2001
Beiträge: 467
So vielleicht ?:
ActionScript:
  1. // Der Part ist klar denke ich
  2. Stage.scaleMode = "noScale";
  3. Stage.align = "LT";
  4.  
  5. //Auch klar denke ich - Wir legen fest dass der Footer "hören" soll ob die Stage "geresized";) wird---------------------------------
  6. footer_instanz.onResize = function() {
  7.     this._width = Stage.width; // machen den Footer so breit wie die Bühne
  8.     this._y = (Stage.height - 35) // Footer y Position soll um 35pix kleiner sein als die Bühnenhöhe
  9. };
  10.  
  11. Stage.addListener(footer_instanz); // Hier sagen wir ihm endgültig dass er "hören" soll ob Bühne ...
  12. footer_instanz.onResize(); // Hier rufen wir das resize Ding mauell auf da dass beim ersten Aufruf der swf Datei nicht passiert
  13. //-----------------------------------------
  14.  
  15. footer_menue_instanz.onResize = function() {
  16.     //this._x = Stage.width/2-this._width/2;
  17.     //this._y = (Stage.height - 35)
  18.     tx = Stage.width/2-this._width/2; // Hier rechnen wir die passende x position aus damit das menü mittig steht
  19.     this._y = (Stage.height - 35) // Hier rechnen wir die passende x position aus damit das menü mittig steht UND  SETZEN SIE SOFORT
  20.     newTween(this,tx); // Die gewünschte X- Position setzen wir nicht sofort sondern sagen dass er sich da hinbewegeb soll - dafür rufen wir new tween auf und übergeben die Ziel X Position
  21. }
  22.  
  23. Stage.addListener(footer_menue_instanz);
  24. footer_menue_instanz.onResize();
  25.  
  26. function newTween(mc,x,y){
  27.     mc.tweenX.stop(); // Hier stoppen wir den alten Tweeen falls es sich gerade noch bewegt - muss man nicht - besser ists aber
  28.     //mc.tweenY.stop();
  29.     trace(mc+"  "+x+"   "+y);
  30.     var easeType = mx.transitions.easing.Regular.easeOut; // Hier sagen wir WIE es sich bewegen soll - in dem Fall heisst das "Am Ende verlangsamen"
  31.     var time = 1; // Er soll in einer Sekunde an der Position sein
  32.     var targetX = x; // Das ist die X - Endposition
  33.     //var targetY = y;
  34.     mc.tweenX = new mx.transitions.Tween(mc, "_x", easeType, mc._x, targetX, time, true);   // Hier erstellen wir den Tween
  35.     //mc ist der MovieClip der getweent werden soll, "_x" ist die Eigenschaft die getweent werden soll
  36.     // easeType s.o. , mc._x ist der Startwert und targetX der Zielwert - heisst also "Tweene den mc von seiner jetzigen _x zu targetX
  37.     // time ist klar und true bedeutet "sofort abspielen"
  38.     //mc.tweenY = new mx.transitions.Tween(mc, "_y", easeType, mc._y, targetY, time, true);
  39. }

Angehängte Dateien
Dateityp: zip ausrichtung.zip (8,6 KB, 46x aufgerufen)
__________________
---::::: AVisioN :::::---
AVisioN ist offline   Mit Zitat antworten
Alt 14-03-2006, 13:38   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2005
Beiträge: 96
Feste Anfangsposition...

Ja, sehr gut. Genau so hatte ich mir das vorgestellt. Danke für deine Mühe. Möchte dich ungern noch mal damit nerven aber eine Sache fällt mir in diesem Zusammenhang noch auf.

Und zwar, dass sich das Menue beim aufrufen der „swf“ immer erstmal in die zentrierte X-Position animiert. Besser wäre, wenn das Menue von Anfang an zentriert ist (unabhängig der Browsergröße). Die Animation findet dann erst beim Vergrößern oder Verkleinern der Fenstergröße statt. Ist das realisierbar?

Hab mich wahrscheinlich jetzt etwas unglücklich ausgedrückt. Hoffe du verstehst trotzdem was ich meine. Danke nochmal...
n.stirner ist offline   Mit Zitat antworten
Alt 14-03-2006, 14:26   #7 (permalink)
Custom Title
 
Registriert seit: Aug 2001
Beiträge: 467
ICh glaub ich hab schon verstanden. 10min wirds aber dauern
__________________
---::::: AVisioN :::::---
AVisioN ist offline   Mit Zitat antworten
Alt 14-03-2006, 14:34   #8 (permalink)
Custom Title
 
Registriert seit: Aug 2001
Beiträge: 467
Je länger ich das anschau glaub ich dass eine Klasse nett wäre.
Aber so gehts auf jeden Fall mal.
ActionScript:
  1. Stage.scaleMode = "noScale";
  2. Stage.align = "LT";
  3.  
  4. footer_instanz.onResize = function() {
  5.     this._width = Stage.width;
  6.     this._y = (Stage.height - 35);
  7. };
  8.  
  9. Stage.addListener(footer_instanz);
  10. footer_instanz.onResize();
  11. //-----------------------------------------
  12.  
  13. footer_menue_instanz.onResize = function() {
  14.     tx = Stage.width/2-this._width/2;
  15.     this._y = (Stage.height - 35);
  16.     newTween(this,tx);
  17. }
  18. Stage.addListener(footer_menue_instanz);
  19. //footer_menue_instanz.onResize(); Die sorgt dafür das sich das Ding das erste mal bewegt - das kommt jetzt weg
  20. footer_menue_instanz.setFirstRunPosition = function(){
  21.     this._x = Stage.width/2-this._width/2;
  22.     this._y = (Stage.height - 35);
  23. }
  24. footer_menue_instanz.setFirstRunPosition();
  25.  
  26. function newTween(mc,x,y){
  27.     mc.tweenX.stop();
  28.     trace(mc+"  "+x+"   "+y);
  29.     var easeType = mx.transitions.easing.Regular.easeOut;
  30.     var time = 1;
  31.     var targetX = x;
  32.     mc.tweenX = new mx.transitions.Tween(mc, "_x", easeType, mc._x, targetX, time, true);
  33. }
Ich denke das war was Du meintest.. ?
__________________
---::::: AVisioN :::::---
AVisioN ist offline   Mit Zitat antworten
Alt 21-09-2006, 15:20   #9 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 38
nur mal so

hallo,

ich wollte nur mal kurz sagen das mir dein beitrag wahnsinnig viel
weitergeholfen hat.
ich suche schon seit ner ewigkeit nach dieser lösung.



vielen dank.
die kleene
die kleene ist offline   Mit Zitat antworten
Alt 21-09-2006, 17:18   #10 (permalink)
Custom Title
 
Registriert seit: Aug 2001
Beiträge: 467
Immer wieder gerne
(falls Du mich meinst)
__________________
---::::: AVisioN :::::---
AVisioN ist offline   Mit Zitat antworten
Alt 22-09-2006, 10:54   #11 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 38
und wie jetzt mit 2 mc`s ...?

hallo,

wie schaffe ich es denn das ein mc in der rechten ecke bleibt und ein anderer in der linken ??
irgendwie klappt das bei mir nur mit einer ecke...
mein ansatz ist wahrscheinlich auch falsch...



Code:
Stage.scaleMode = "noScale";
Stage.align = "LT";


footer_instanz.onResize = function() {
	this._width = Stage.width;
	this._y = (Stage.height - 27)
};

Stage.addListener(footer_instanz);
footer_instanz.onResize();


footer_menue_instanz.onResize = function() {
	//this._x = Stage.width/2-this._width/2;
	//this._y = (Stage.height - 35)
	tx = (Stage.width - 300 )
	ty = (Stage.height - 570)
	newTween(this,tx,ty);
}

Stage.addListener(footer_menue_instanz);
footer_menue_instanz.onResize();

function newTween(mc,x,y){
	mc.tweenX.stop();
	mc.tweenY.stop();
	var easeType = mx.transitions.easing.Regular.easeOut;
	var time = 1;
	var targetX = x;
	var targetY = y;
	mc.tweenX = new mx.transitions.Tween(mc, "_x", easeType, mc._x, targetX, time, true);	
	mc.tweenY = new mx.transitions.Tween(mc, "_y", easeType, mc._y, targetY, time, true);
}
//**************bis hier ist alles cool****************


//so geht`s anscheinend nicht...
//dieses ding soll eigentlich immer in der linken ecke bleiben !

logo.onResize = function() {
	//this._x = Stage.width/2-this._width/2;
	//this._y = (Stage.height - 35)
	tx = (Stage.width - 1000 )
	ty = (Stage.height - 150)
	newTween(this,tx,ty);
}

Stage.addListener(logo);
logo.onResize();

function newTween(mc,x,y){
	mc.tweenX.stop();
	mc.tweenY.stop();
	var easeType = mx.transitions.easing.Regular.easeOut;
	var time = 1;
	var targetX = x;
	var targetY = y;
	mc.tweenX = new mx.transitions.Tween(mc, "_x", easeType, mc._x, targetX, time, true);	
	mc.tweenY = new mx.transitions.Tween(mc, "_y", easeType, mc._y, targetY, time, true);
}
die kleene ist offline   Mit Zitat antworten
Alt 22-09-2006, 11:32   #12 (permalink)
Custom Title
 
Registriert seit: Aug 2001
Beiträge: 467
Also einen linksunten und einen rechtsunten und keinen mehr in der Mitte ?
__________________
---::::: AVisioN :::::---
AVisioN ist offline   Mit Zitat antworten
Alt 22-09-2006, 11:41   #13 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 38
*

ja...
geht das ?
die kleene ist offline   Mit Zitat antworten
Alt 22-09-2006, 12:05   #14 (permalink)
Custom Title
 
Registriert seit: Aug 2001
Beiträge: 467
Es geht alles

Ich musste den y-Tween noch einbauen - der war nur halb vorgesehen

Habe es Dir jetzt nochmal angehängt.
Hier sieht man aber gut dass man umbedingt eine Klasse bauen sollte. Dann könnte man z.B. sagen

PHP-Code:
var rightBox = new alignedClip(box_mc,bottomRight); 
Da würde man sich bei vielen Elementen sehr viel Arbeit sparen - und schöner wärs auch

So siehts jetzt aus (schau dir die datei auch an - da hab ich die clips eingebaut):
PHP-Code:
// Der Part ist klar denke ich
Stage.scaleMode "noScale";
Stage.align "LT";
//------------- nur wichtig für den footer. ich lass es mal drin --------------------------
footer_instanz.onResize = function() {
    
this._width Stage.width;
    
this._y = (Stage.height 35);
};
Stage.addListener(footer_instanz);
footer_instanz.onResize();
//-------------------------------------------------------------------

//------------------------ footer menu kram --------------------------
footer_menue_instanz.onResize = function() {
    
tx Stage.width/2-this._width/2;
    
this._y = (Stage.height 35);
    
newTween(this,tx,this._y);
}
Stage.addListener(footer_menue_instanz);
footer_menue_instanz.onResize();
//----------------------------------------------------------------------

//------------------- Kram für Logo rechts/oben -------------------------
box_bottomLeft.onResize = function(){
    
ty Stage.height this._height;
    
newTween(this,this._x,ty);
}
Stage.addListener(box_bottomLeft);
box_bottomLeft.onResize();
//-----------------------------------------------------------------------

//------------------- Kram für Logo rechts/oben -------------------------
box_bottomRight.onResize = function(){
    
tx Stage.width this._width;
    
ty Stage.height this._height;
    
newTween(this,tx,ty);
}
Stage.addListener(box_bottomRight);
box_bottomRight.onResize();
//-----------------------------------------------------------------------

//-------------------- Hilfsfunktion ------------------------------------
function newTween(mc,x,y){
    
mc.tweenX.stop();
    
mc.tweenY.stop();
    var 
easeType mx.transitions.easing.Regular.easeOut;
    var 
time 1;
    var 
targetX x;
    var 
targetY y;
    
mc.tweenX = new mx.transitions.Tween(mc"_x"easeTypemc._xtargetXtimetrue);
    
mc.tweenY = new mx.transitions.Tween(mc"_y"easeTypemc._ytargetYtimetrue);

Passt ?
Angehängte Dateien
Dateityp: zip ausrichtung.zip (9,5 KB, 41x aufgerufen)
__________________
---::::: AVisioN :::::---
AVisioN ist offline   Mit Zitat antworten
Alt 22-09-2006, 13:08   #15 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 38
:-)

jaaaaaaaaaaaaaaa.
danke danke.


jetzt ist alles perfekt.
die kleene 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:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele