PDA

Volledige versie bekijken : SWF's werken niet volledig in geheel


AVB
%Europe/Berlin %599 %2008, 14:23
Beste mensen,

Op dit moment ben ik bezig met een Flash-movie bestaande uit losse SWF's die in een lege MC worden geladen, dit werkt.

Apart werken de SWF's allemaal zoals het hoort, maar wanneer ik ze ik ze in het geheel plaats werken ze niet volledig, dus wanneer ze worden ingeladen in de lege MC.

Dit is de structuur:
Index
- SWF 1
- SWF 2
- SWF 3
- SWF 4

AnnaAngel
%Europe/Berlin %609 %2008, 14:38
Zonder code / foutmeldingen kunnen we weinig.

Maar het meest voorkomende reden als ingeladen SWFs niet meer werken is gebruik van "_root" in de SWFs. _root verwijst naar de eerste tijdlijn... draait de SWF alleen dan is het zijn eigen tijdlijn. Maar wordt de SWF ingeladen dan verwijst _root naar de tijdlijn van de SWF die alle andere inlaad. Dit kan voor problemen met de scope veroorzaken.

AVB
%Europe/Berlin %617 %2008, 14:49
Ok, dan zal ik daar even naar kijken, maar ik wanneer ik ergens _root heb staan kan ik dit dan gewoon verwijderen, of moet ik het vervangen door een ander statement?

Hieronder de codes van de scripts die niet werken wanneer de SWF wordt geladen in de lege MC

Slideshow:

StartSlideShow();

function StartSlideShow() {
naam2 = "NL/foto"+teller1+".jpg"; //Het aanmaken van de naam foto_x.jpg
//-----------------------------------------------------------------------------------------
TimerFadeIn = setInterval(FadeIn, InSpeed); //Start de interval timer voor de FadeIn functie
trace("Start FadeIn"); //Functie FadeIn wordt elk "Inspeed" in ms uitgevoerd.
//----------------------------------
trace("klaar");
naam1 = "NL/foto"+teller1+".jpg"; //Het aanmaken van de naam foto_x.jpg voor de eerste foto
_root.doos1_mc.loadMovie(naam1); //Plaats deze in doos1_mc
_root.doos1_mc._x = (HorizontaalMidden-breed1); //Plaats doos1_mc._x zo op het scherm dat de foto in het midden staat
_root.doos1_mc._y = (VertikaalMidden-hoog1); //Plaats doos1_mc._y zo op het scherm dat de foto in het midden staat
_root.doos1_mc._alpha = 0; //Zet de alpha op 0 zodat de foto niet zichtbaar is

//----------------------------------
if (teller1 == aantal) { //Als teller gelijk is aan aantal
trace("x");
teller1 = 1; //dan is de teller 1;
} else { //in elk ander geval
teller1 = teller1+1; //verhoog de teller met 1
}
if (teller2 == aantal) { //Als teller gelijk is aan aantal
trace("x");
teller2 = 1; //dan is de teller 1;
} else { //in elk ander geval
teller2 = teller2+1; //verhoog de teller met 1
}
}
//-------------------------------------------------------------------
function FadeIn() {
_root.doos1_mc._alpha = _root.doos1_mc._alpha+1;//Verhoog de alpha waarde van doos1_mc met 1
trace(_root.doos1_mc._alpha);
if (_root.doos1_mc._alpha>100) { //als de alpha grooter is dan 100
clearInterval(TimerFadeIn); //schakel TimerFadeIn uit
trace("FadeIn Done");
TimerShow = setInterval(Show, showtime); //Start interval timer voor de functie Show
trace("Start Showin"); //De functie Show wordt nu elke "showtime" in ms uitgevoerd
}
}
//--------------------------------------------------------------------
function FadeOut() {
_root.doos1_mc._alpha = _root.doos1_mc._alpha-1;//Verlaag de alpha waarde van doos1_mc met 1
trace(_root.doos1_mc._alpha);
if (_root.doos1_mc._alpha<0) { //als de alpha waarde minder is dan nul
clearInterval(TimerFadeOut); //schakel TimerFadeOut uit
trace("FadeOut Done");
StartSlideShow(); //Voer de Functie ToonFotos uit
}
}
//--------------------------------------------------------------------
function Show() {
TimerFadeOut = setInterval(FadeOut, OutSpeed); //Start interval timer voor de functie FadeOut
//De functie FadeOut wordt nu elke "Outspeed" in ms uitgevoerd
clearInterval(TimerShow); //Schakel de TimerShow uit
trace("Showin Done");
trace("Start Fadeout");
}
//-------------------------------------------------------------------
function StopSlideShow(){
clearInterval(TimerFadeIn);
clearInterval(TimerShow);
clearInterval(TimerFadeOut);
}

stop();



De volumeregelaar:

onClipEvent (load) {
boven = _y;
onder = _y+40;
}
onClipEvent (enterFrame) {
if (slepen == true) {
_root.geluid.setVolume(40-(_y-boven));
_root.huidigvol = _root.geluid.getVolume();
}
}

AVB
%Europe/Berlin %620 %2008, 14:53
Thanx voor de reactie, de Slideshow werkt nu wel, nadat ik _root overal heb weggehaald.

Bij de volumeregelaar werkt dit helaas niet, enig idee waarom?

AnnaAngel
%Europe/Berlin %622 %2008, 14:56
Wat je kan doen is op de tijdlijn in de eerste frame var root = this; neerzetten en alle _root vervangen voor root

Een andere oplossing kan zijn met _parent te werken. Kan je in de help van flash (f1) opzoeken :)

Een andere oplossing zou ook nog "_lockroot" kunnen zijn (weer verwijs ik naar de flashhelp) maar een betere manier zou zijn om helemaal geen "_root" te gebruiken... en in plaats daarvan met _parent te werken

----

omdat je bij de volume regelaar op het symbool zelf code zet (wat overigens een slechte manier is .. probeer alles op de tijdlijn te zetten) als je daar _root weghaalt verwijs je alleen in dat symbool zelf. Als je naar de variabele die op de tijdlijn staat wil verwijzen moet je _parent gebruiken