PDA

Volledige versie bekijken : function + unloadmovie


LargoWinch
%Europe/Berlin %093 %2008, 03:14
Hallo, ik heb twee vragen, de eerste gaat over de unloedmovienum. Ik gebruik een dertigtal movies en ik wil dat alle movies unloaden als een andere movie geladen wordt. Ik doe nu iedere movie apart unloaden, maar das maar omslachtig, dus zou ik dat graag in een functie zien. Ik wou gewoon een genaamde functie aanmaken en daarin unloadmovienum 1 tot 30 doen, maar dan is het probleem dat iedere keer de movie die moet worden geladen ook bij die 1 tot 30 zit. Hoe haal ik die te laden movie dan uit die functie?
(moeilijke omschrijving, dus hopelijk snappen jullie het)

De tweede gaat over het aanroepen van een functie.
Als ik volgende code gebruik dan werken mijn movies zoals ik het wil:

menu.werking.onRollOver=function()
{
if (kindmov == true) {
menu.dominique.onEnterFrame=function()
{
this._y -= 4;
if(this._y <= 5)
{
delete this.onEnterFrame;
}

}
menu.tzoetebieke.onEnterFrame=function()
{
this._y -= 4;
if(this._y <= -15)
{
delete this.onEnterFrame;
}

}
menu.dominiquebis.onEnterFrame=function()
{
this._y -= 4;
if(this._y <= -5)
{
delete this.onEnterFrame;
}

}
kindmov = false;
}
if (werkingmov == false) {
menu.openingsuren.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.opvang.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.voeding.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.dagverloop.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 20)
{
delete this.onEnterFrame;
}

}
menu.veiligheid.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.fotos2.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
werkingmov = true;
}

Maar aangezien ik een deel van de functie meerdere keren moet gebruiken maak ik een aparte genaamde functie aan die ik dan kan aanroepen, maar dan wekrt het niet meer. Iemand een idee?
Genaamde functie:

function KDVweg(){
if (kindmov == true) {
menu.dominique.onEnterFrame=function()
{
this._y -= 4;
if(this._y <= 5)
{
delete this.onEnterFrame;
}

}
menu.tzoetebieke.onEnterFrame=function()
{
this._y -= 4;
if(this._y <= -15)
{
delete this.onEnterFrame;
}

}
menu.dominiquebis.onEnterFrame=function()
{
this._y -= 4;
if(this._y <= -5)
{
delete this.onEnterFrame;
}

}
kindmov = false;
}
}

en die zit dan in de volgende functie.
menu.werking.onRollOver=function()
{
KDVweg;
if (werkingmov == false) {
menu.openingsuren.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.opvang.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.voeding.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.dagverloop.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 20)
{
delete this.onEnterFrame;
}

}
menu.veiligheid.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
menu.fotos2.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
werkingmov = true;
}

}

Jan
%Europe/Berlin %452 %2008, 11:50
Hallo, ik heb twee vragen, de eerste gaat over de unloedmovienum. Ik gebruik een dertigtal movies en ik wil dat alle movies unloaden als een andere movie geladen wordt. Ik doe nu iedere movie apart unloaden, maar das maar omslachtig, dus zou ik dat graag in een functie zien. Ik wou gewoon een genaamde functie aanmaken en daarin unloadmovienum 1 tot 30 doen, maar dan is het probleem dat iedere keer de movie die moet worden geladen ook bij die 1 tot 30 zit. Hoe haal ik die te laden movie dan uit die functie?
(moeilijke omschrijving, dus hopelijk snappen jullie het)

unloadMovieNum van 1 tot 30;
loadMovieNum 17

Je gebruikt daarenboven beter de MovieClipLoader class om externe movie in te laden. En waarom ga je die telkens unloaden? Dus om 3 swf's te zien heb ik bij jou 100 swf's geloaded.
Ofwel laad je alles in 1 keer en laadt je alles in een mc ipv level en dan gebruikt je mcZoveel._visible=false en mcZoveel._visible=true om bepaalde wel en andere niet te tonen.
Ofwel laadt je telkens enkel de swf die je nodig hebt.



De tweede gaat over het aanroepen van een functie.
Als ik volgende code gebruik dan werken mijn movies zoals ik het wil:


menu.werking.onRollOver=function()
{
KDVweg;
}
Om een functie te invoken/op te roepen moet je de brackets erachter zetten. Anders is het gewoon een referentie naar de functie maar wordt ze niet uitgevoerd.Dus:
menu.werking.onRollOver=function()
{
KDVweg();
}
Je zou trouwens beter met instance namen werken als holder1, holder2, holder3 ipv tzoetebieke en van die dingen.
Dan kan je een array en for loops gebruiken ipv dat je alles zo moet uittypen.
Of je moet iets doen met
menu.werking.onRollOver=function()
{
KDVweg();
if (werkingmov == false)
{
for (var i:MovieClip in menu)
{
menu[i].onEnterFrame=function()
{

this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
}
werkingmov = true;
}
}
En je kan trouwens ook:
menu.werking.onRollOver=function()
{
KDVweg;
if (werkingmov == false)
{
menu.openingsuren.onEnterFrame=menu.opvang.onEnter Frame=menu.voeding.onEnterFrame=menu.dagverloop.on EnterFrame=menu.veiligheid.onEnterFrame=menu.fotos 2.onEnterFrame=function()
{
this._y += 3.8;
if(this._y >= 19)
{
delete this.onEnterFrame;
}

}
werkingmov = true;
}

}

Groeten,
http://users.telenet.be/jansurf/cwo.pngJan

Dutch'ed
%Europe/Berlin %453 %2008, 11:52
Ik wou gewoon een genaamde functie aanmaken en daarin unloadmovienum 1 tot 30 doen, maar dan is het probleem dat iedere keer de movie die moet worden geladen ook bij die 1 tot 30 zit.

Je weet neem ik aan het nummer van het clipje dat je laadt? If not, dan zou ik dat eerst eens uitvogelen (this._name en dan de naam eraf splitten zodat je een nummer overhoudt).. Vervolgens kan je met 2 for loopjes de rest unloaden..

stel var myNum:Number = mcNummer, dan worden de for loops iets van

for(i=0; i<myNum; i++){
unloadMovie(this["mc"+i]);
}

for (i=(myNum+1); i<30; i++){
unloadMovie(this["mc"+i]);
}

Mocht je niet zo goed weten hoe een for loop werkt, google het, dan wordt mijn as gelijk duidelijk..

LargoWinch
%Europe/Berlin %480 %2008, 12:31
Bedankt, weer enkele handige tips tussen.
Ik heb gezien wat ik fout deed bij de functie en dat was:

KDVweg;
gebruiken ipv.
KDVweg();.

Wat een verschil maken die 2 haakjes toch :)

LargoWinch
%Europe/Berlin %608 %2008, 15:36
Het unloaden met de for loop werkt niet.
ik gebruik dus de volgende code waarbij ik het nummer van het huidige level zelf ingeef:

loadMovieNum("voorstelling.swf", 1);
var myNum:Number = 1
for (i=0; i<myNum; i++) {
unloadMovie(this["mc"+i]);
}
for (i=(myNum+1); i<30; i++) {
unloadMovie(this["mc"+i]);
}
De movie wordt geladen, maar de huidige movie wordt niet ontladen. Wel zie ik dat een movie die op level 200 staat dan wel wordt ontladen.
Is het mogelijk om een level ook visible te maken of gaat dit enkel via MC's? Ik vermoed van niet want ik heb toch niks gevonden daarover.

Jan
%Europe/Berlin %668 %2008, 17:03
Als je laad via loadMovieNum(levelNummer) dan moet je ook 'ontladen' via unloadMovieNum(levelNummer) ipv inloadMovie(mcInstance) want die gebruik je als je laadt via loadMovie(mcInstance)
Misschien eens op F1 drukken en de help lezen hierover.
En gebruik de MovieClipLoader class ipv weinig handige loadMovieNum()
Groeten,
Jan

Dutch'ed
%Europe/Berlin %832 %2008, 20:58
Sorry, maar d'r stond ook 'stel' en 'iets van', waarbij mc de generieke naam van je clip is en i het bijbehorende nummer, wat je dus nog steeds niets zal zeggen op deze manier.

De bedoeling is dan ofwel te kiezen voor de loadMovie en dus een generieke naam mee te geven aan je clip plus nummer, ofwel je kiest de loadMovieNum en gaat dan alleen met behulp van de i (het nummer) unloaden..

Let wel dat de for loops zoals ik ze neerzette voorbeelden zijn die gebaseerd zijn op generieke loadMovie namen. Bij loadMovieNum dus even opletten dat je level0 niet unload..

LargoWinch
%Europe/Berlin %885 %2008, 22:15
Hallo,

hier ben ik nog eens, ik gebruik de functie voor de movies te unloaden, die ik aan het werk heb gekregen, maar ik wil die functie voor het volgende ook gebruiken. Als ik een movie laad, dan wil ik niet dat hij hem twee keer laad als op de button wordt geklikt dus werk ik met voorwaarden.
Heb probleem hierbij is dat ik niet iedere keer voorwaarde1 = false;voorwaarde2 = false;... wil typen en daarom wil ik volgende functie gebruiken:

var movit:Number = 3;
for (i=0; i<movit; i++) {
mov[i] = false;
}
for (i=(movit+1); i<199; i++) {
mov[i] = false;
}
mov3 = true;


Het is de bedoeling om enkel mov3 gelijk te zetten aan true en alle andere mov1 tot mov199 gelijk te zetten aan false, maar dat lukt niet.

Ik wou dezelfde functie met een onenterframe op de eerste frame te zetten om alles false te zetten behalve mov1, maar dat lukt ook niet, maar ik denk dat ik met de onenterframe functie het verkeerde gebruik.

groeten

Jan
%Europe/Berlin %898 %2008, 22:33
Het handigste is meestal gewoon alles op false te zetten en dan die ene terug op true:
var movit:Number = 3;
for (i=0; i<199; i++)
{
mov[i] = false;
}
mov[movit]=true;//of mov[3]=false;

Zo kan het ook:
var movit:Number = 3;
for (i=0; i<199; i++)
{
if(i==movit)
{
mov[i]=true;
}
else
{
mov[i] = false;
}
}

Groeten,
http://users.telenet.be/jansurf/cwo.pngJan

LargoWinch
%Europe/Berlin %574 %2008, 14:46
Het eerste scriptje is inderdaad handig, maar het lukt mij niet. Kan het iets te maken hebben met het feit dat ik op frame 1 de volgende acties zet?

mov1 = true;
mov2 = false;
mov3 = false;
mov4 = false;
mov5 = false;

Want het menu doet net hetgeen wat daar staat en dus niet wat het script zegt.