matthewMedlem sedan okt. 2001166 inlägg Hejsan,
jag undrar hur jag gör en snygg fade på ett mc med actionscript?
Är helt ny på detta! men har iaf gjort ett försök.
function fadeOut()
{
if(targetClip._alpha<=0)
{
return true;
}
else
{
x=(targetClip._alpha) -1;
targetClip._alpha=x;
setInterval(fadeOut(), 1000);
status = "Status: " + targetClip._alpha;
}
}
btn_next.onRelease = function()
{
if(fadeOut())
displayObject(getNext());
};
Har också provat med setInterval(fadeOut(), 1000) i det rekursiva anropet.Bilden fadas direkt, så någon nertoning syns inte.vad kan jag göra?
mvh,
matt
Jag gjorde följande en gång:
mitt_mc.onEnterFrame = function(){
mitt_mc._alpha++;
if(mitt_mc._alpha >= 100){
trace("Klar...");
}
}
Sen är det att rekommendera att i ifsatsen när det är klart så att säga, att du då tar bort onEnterframe funktionen.
Det här är ytterliggare ett sätt, hur processorvänligt vet jag inte hur det är, men det är ett senare problem ;)
annars är nog en prototype att föredra.
// speed = hastigheten i millisekunder
// dec = hur mycket som ska "försvinna" åt gången
MovieClip.prototype.fadeOut = function(speed, dec) {
var alpha = 100;
fadeIt = function() {
if (_alpha<=0) {
clearInterval(itv);
} else {
alpha -= dec;
_alpha = alpha;
}
};
itv = setInterval(fadeIt, speed);
};
// aktivera funktionen på vilket mc som helst, t.ex.
hello.fadeOut(50, 10);
// 50 = speed och 10 = dec
matthewMedlem sedan okt. 2001166 inlägg Tack för ditt svar!!
men varför ska jag använda prototype?
Har ingen aning om vad det är!
Har skrivit om koden nu, fade functionen verkar fungera fast nu är det något annat som blir fel.
När jag en gång tryckt fram en bild så fadas den fram och tillbaka hela tiden. Den slutar aldrig... Kanske en logik miss men det tror jag inte.
function init(success)
{
if(success)
{
rootHandler=this.firstChild;
currentObject = rootHandler.firstChild;
if(currentObject != null)
displayObject(currentObject);
}
}
function displayObject(obj)
{
if(fadeOut();
targetClip.loadMovie(obj.attributes.imgURL);
if(fadeIn();
btn_next._visible = (currentObject.nextSibling != null)?1:0;
btn_previous._visible = (currentObject.previousSibling != null)?1:0;
}
function fadeOut()
{
return x =(targetClip._alpha--<=0)?true:(setInterval(fadeOut,600));
}
function fadeIn()
{
return x =(targetClip._alpha++>=100)?true:(setInterval(fadeIn,600));
}
function getNext()
{
return currentObject = currentObject.nextSibling;
}
function getPrevious()
{
return currentObject = currentObject.previousSibling;
}
btn_next.onRelease = function() {displayObject(getNext());};
btn_previous.onRelease = function() {displayObject(getprevious());};
Kan det bli fel om alphan sätts till ett negativt tal eller om det blir större än 100?
matthewMedlem sedan okt. 2001166 inlägg Nu vet jag hur prototype funkar... Det verkar användbart!!
Jag undrar fortfarande vad som händer om alphan sätts till ett negativt tal eller större än 100.
hmm undra om jag måste sätta clearInteraval?!
Mika3lMedlem sedan nov. 20018 492 inlägg Är det negativt blir det väl 0 och är det större än hundra blir det väl hundra?
varför ange ett negativt tal?
håll dig till tal mellan noll och hundra, finns väl ingen anledning att ange andra värden? ;)
om du nu inte vill "fada" tillbaka den...
då har jag ändrat prototypen lite åt dig, så att den känner av det automatiskt:
MovieClip.prototype.fade = function(speed, dec, method) {
var alpha = _alpha;
fadeIt = function () {
if (method == "in") {
if (_alpha>=100) {
clearInterval(itv);
} else {
alpha += dec;
_alpha = alpha;
}
} else if (method == "out") {
if (_alpha<=0) {
clearInterval(itv);
} else {
alpha -= dec;
_alpha = alpha;
}
}
};
itv = setInterval(fadeIt, speed);
};
dittMC.fade(100, 10, "out");
dittMC.fade(100, 10, "in");