Volledige versie bekijken : Full Browser Flash: Easing bij resize
tijmen_4real
%Europe/Berlin %817 %2008, 19:37
Hoi !
Na het zoeken via Google en de zoekfunctie op dit forum, heb ik niet echt een oplossing kunnen vinden voor mijn probleem:
Ik ben bezig met een Full Browser website.
Deze is gemaakt met de tutorial (http://www.gotoandlearn.com/player.php?id=31) van gotoAndLearn.com, waarbij ik mijn eigen elementen heb ingepast.
Nu gaan deze elementen (MovieClips) bij een resize van de browser wel naar de gewenste positie, alleen wil ik dat dit wat vloeiender verloopt, met een easing.
Op Google kwam ik steeds terecht bij de Tween Class, maar ik hoop dat er ook een andere manier is ??
Greetz,
Tijmen_4Real 8D
michelsteege
%Europe/Berlin %875 %2008, 21:00
nou er zijn nog wel wat manieren door het te gaan maken met onEnterFrames of de flash tween class gebruiken maar ik kan deze aanraden: http://hosted.zeh.com.br/mctween/index.html
of tweener van de zelfde maker het is echt de beste en fijnste manier naar mijn mening ;)
tijmen_4real
%Europe/Berlin %302 %2008, 07:15
Nu wil het wel werken, maar moet ik nog bepalen wat de huidige x en y coördinaat zijn van de betreffende MovieClip.
var xTween:Tween = new Tween(center_mc, "_x", Strong.easeOut, ?? , Stage.width/ 2, 2, true);
var yTween:Tween = new Tween(center_mc, "_y", Strong.easeOut, ?? , Stage.height/ 2, 2, true);
Simpel invullen van center_mc._x werkte niet.
Hoe kan ik de huidige coördinaat van deze MC (center_mc) bepalen, zodat ik dit uitgangspunt in de Tween Class kan gebruiken ?
De coördinaat moet in dit geval berekent worden wanneer er de Stage resized...
Mijn bron voor de Tween Class (tip!) (http://www.kirupa.com/developer/actionscript/tween.htm)
tijmen_4real
%Europe/Berlin %632 %2008, 15:10
** OPGELOST **
Ik heb voor iedere MC een variabele aangemaakt die de coördinaar opslaat:
var xCenter:Number = center_mc._x;
tijmen_4real
%Europe/Berlin %644 %2008, 15:28
Waarom wil dit dan weer niet werken ?
import mx.transitions.Tween;
import mx.transitions.easing.*;
// stop de movie
stop();
//////////////////////// coördinaten van MovieClips bepalen
// center_mc
var xCenter = center_mc._x;
var yCenter = center_mc._y;
trace(xCenter);
trace(yCenter);
// schild_mc
var xSchild = schild_mc._x;
var ySchild = schild_mc._y;
trace(xSchild);
trace(ySchild);
// menu_mc
var xMenu = menu_mc._x;
var yMenu = menu_mc._y;
trace(xMenu);
trace(yMenu);
// welkom_mc
var xWelkom = welkom_mc._x;
var yWelkom = welkom_mc._y;
trace(xWelkom);
trace(yWelkom);
//////////////////////// CENTEREN BIJ AANVANG
// center_mc
center_mc._x = Stage.width /2;
center_mc._y = Stage.height /2;
center_mc._height = Stage.height;
// schild_mc
schild_mc._x = Stage.width /2;
schild_mc._y = 170;
// menu_mc
menu_mc._x = 0;
menu_mc._y = 50;
// welkom_mc
welkom_mc._x = Stage.width /2;
welkom_mc._y = 360
var stageL:Object = new Object();
stageL.onResize = function() {
fillBG();
//////////////////////// CENTEREN BIJ RESIZE
// center_mc
center_mc._height = Stage.height;
var xCenterTween:Tween = new Tween(center_mc, "_x", Strong.easeOut, xCenter , Stage.width/ 2, 1, true);
var yCenterTween:Tween = new Tween(center_mc, "_y", Strong.easeOut, yCenter , Stage.height/ 2, 1, true);
// schild_mc
var xSchildTween:Tween = new Tween(schild_mc, "_x", Strong.easeOut, xSchild , Stage.width/ 2, 1, true);
var ySchildTween:Tween = new Tween(schild_mc, "_x", Strong.easeOut, ySchild , 170, 1, true);
// menu_mc
var xMenuTween:Tween = new Tween(menu_mc, "_x", Strong.easeOut, xMenu , 0, 1, true);
var yMenuTween:Tween = new Tween(menu_mc, "_x", Strong.easeOut, yMenu , 50, 1, true);
// welkom_mc
var xWelkomTween:Tween = new Tween(welkom_mc, "_x", Strong.easeOut, xWelkom , Stage.width/ 2, 1, true);
var yWelkomTween:Tween = new Tween(welkom_mc, "_x", Strong.easeOut, yWelkom , 360, 1, true);
}
Stage.addListener(stageL);
Ik krijg geen foutmeldingen van de AS, en de trace werkt (bij aanvang) goed.
Want nu werken alleen de Tweens van de center_mc, en de andere 3 MovieClips belanden ergens links in het scherm ? P)
Ik begrijp er effe niets meer van....
Voorbeeld (http://www.katwijk13.nl)
p.s.= een Array is hier zeker wel aanbevolen, maar hoe ?
Jan
%Europe/Berlin %687 %2008, 16:29
Stage.onResize wordt voortdurend getriggerd als je het browserwindow aan het verkleinen/vergroten bent. Het is niet zo dat pas bij het loslaten die onResize ge-invoked wordt. Vergelijk het een beetje met een onEnterFrame. En je wil eigenlijk niet zo veel keer per seconde een nieuwe tween starten. En al zeker niet met telkens dezelfde beginwaarde voor je tween. Als je hiermee toch wil doorgaan laat je best elke tween starten op de waarde die elke mc op dat moment heeft:
stageL.onResize = function()
{
fillBG();
//////////////////////// CENTEREN BIJ RESIZE
// center_mc
center_mc._height = Stage.height;
var xCenterTween:Tween = new Tween(center_mc, "_x", Strong.easeOut, center_mc._x , Stage.width/ 2, 1, true);
var yCenterTween:Tween = new Tween(center_mc, "_y", Strong.easeOut, center_mc._y , Stage.height/ 2, 1, true);
// schild_mc
var xSchildTween:Tween = new Tween(schild_mc, "_x", Strong.easeOut, schild_mc._x , Stage.width/ 2, 1, true);
var ySchildTween:Tween = new Tween(schild_mc, "_x", Strong.easeOut, schild_mc._y , 170, 1, true);
// menu_mc
var xMenuTween:Tween = new Tween(menu_mc, "_x", Strong.easeOut,menu_mc._x , 0, 1, true);
var yMenuTween:Tween = new Tween(menu_mc, "_x", Strong.easeOut, menu_mc._y , 50, 1, true);
// welkom_mc
var xWelkomTween:Tween = new Tween(welkom_mc, "_x", Strong.easeOut, welkom_mc._x , Stage.width/ 2, 1, true);
var yWelkomTween:Tween = new Tween(welkom_mc, "_x", Strong.easeOut, welkom_mc._y , 360, 1, true);
}
Maar eigenlijk 'hoor' je gewoon te doen:
stageL.onResize = function()
{
center_mc._x=(Stage._width-center_mc._width)/2;//heb je wel geen easing...
}
Jan
tijmen_4real
%Europe/Berlin %724 %2008, 17:22
Bedankt, hij werkt!
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.