Volledige versie bekijken : _x functie
robertjoon
%Europe/Berlin %006 %2007, 00:08
Hi all,
Ik ben een beetje aan het spelen met de _x functie, maar het wil niet helemaal lukken.
Het probleem is dat de mask ( _x ) zich blijkbaar niet verplaatst.
Misschien zie ik iets over het hoofd, maar heb iig voor het gemak ff de fla geupt.
FLA (http://www.RobertJoon.com/FF/x_test.fla)
Hoop dat iemand me even uit de brand kan helpen, ben namelijk aardig goed bezig ( voor mijn doen )
groetjes !
robertjoon
%Europe/Berlin %023 %2007, 00:34
ok ben ff achter wat gekomen, dit is de code:
var xChange = 197;
var xStart = 190;
myInterval = setInterval(preload,100);
function preload() {
var current = _root.getBytesLoaded();
var total = _root.getBytesTotal();
var pctLoaded = Math.round(current/total*100);
mask_mc._x = xStart - xChange/100*pctLoaded;
if (current >= total) {
gotoAndStop("main",1);
clearInterval(myInterval);
}
}
maar als ik (xStart - xChange/100*pctLoaded) doe ( 190 - 197 = -7 : 100 = 0.07 x 100 doe kom ik uit op 7 en niet op 197. dus hoe doe ik dat anders dan dat ik de xStart boven de 197 zet ? ( nu is ie namelijk mooi in het midden van de pagina ) )
of zit ik nu helemaal in de verkeerde richting te denken :#
Mr. Black
%Europe/Berlin %514 %2007, 12:21
how about this:
stop();
var startx:Number = mask_mc._x;
var endx:Number = startx+mask_mc._width;
var distance:Number = endx-startx;
var total:Number = _root.getBytesTotal();
var current:Number;
var pctLoaded:Number;
var speed:Number;
function preload() {
current = _root.getBytesLoaded();
pctLoaded = current/total*100
speed = distance/100*pctLoaded;
mask_mc._x = startx+speed
if (current == total) {
trace('downloaded');
clearInterval(myInterval);
}
}
myInterval = setInterval(preload, 100);
je hoeft getBytesTotal niet elke keer opnieuw uit te rekenen ;) .
succes nog (met je site?)
robertjoon
%Europe/Berlin %590 %2007, 14:10
hi !
Bedankt voor het script, ik moet er eens goed naar kijken, want het is heel anders geschreven dan ik doe volgens mij.
Waarom, hoef je de getBytesTotal niet keer op keer te berekenen ?
Nee ik ben niet echt met een site bezig, ik probeer meer wat truc's binnen flash te leren zodat ik niet elke keer met vragen hoef te komen :)
Mr. Black
%Europe/Berlin %617 %2007, 14:48
srry, was helemaal vergeten wat uitleg te geven :# .
maar alsnog:
stop();
var startx:Number = mask_mc._x;
var endx:Number = startx+mask_mc._width;
var distance:Number = endx-startx;
var total:Number = _root.getBytesTotal();
var current:Number;
var pctLoaded:Number;
var speed:Number;
maakt variabelen. jij maakte altijd in de functie die variabelen weer opnieuw; dat gaat niet echt
opschieten. gewoon een keertje maken, en telkens aanpassen.
wrom getBytesTotal niet iedere keer opnieuw te bereken? simpel. getBytesLoaded veranderd iedere keer,
maar getBytesTotal blijft gewoon hetzelfde (bijv. 2000 bytes), daar komen niet telkens bytes bij, in tegenstelling tot getBytesLoaded.
startx is waar de mask in het begin staat. endx is waar de rechterkant van mask dan op dat moment staat (waar de linkerkant op het einde moet staan).
vervolgens rekent hij de afstand uit tussen die twee.
function preload() {
current = _root.getBytesLoaded();
pctLoaded = current/total*100
speed = distance/100*pctLoaded;
mask_mc._x = startx+speed
if (current == total) {
trace('downloaded');
clearInterval(myInterval);
}
}
myInterval = setInterval(preload, 100);
speed = de afstand gedeelt door 100 keer het aantal procent dat al geladen is, en dit telt hij bij de startx op (waar mask begon).
speed wordt dus steeds groter, omdat pctLoaded dat ook wordt.
hoop dat het nu een beetje duidelijk is :D
succes
robertjoon
%Europe/Berlin %035 %2007, 00:50
Bedankt ! is gelukt !
ik probeer em zelf even verder uit te breiden. nogmaals heel erg bedankt !
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.