Volledige versie bekijken : [opgelost] Functie start niet, waarom?
Heedless
%Europe/Berlin %611 %2006, 14:39
in de volgende code wil ik een functie declareren en direct oproepen (het moet wel een functie zijn omdat hij later nog vaker geroepen moet worden)
Als ik deze code start krijg ik wel "Werkt" te zien, maar geen "boe". Maar als ik deze functie in een ander (leeg) fla bestand plak zonder de if (afstand>40)doet hij het wel.
Maar het kan er niet aan liggen dat die afstand nooit 40 wordt, want de 2e trace werkt wel...
Wat is er mis mee?if (afstand>40) {
function koe(){
trace ("boe");
}
koe();
trace ("Werkt");
}
Invisible
%Europe/Berlin %618 %2006, 14:51
Je moet de functie uit het if-statement halen. Dan werkt het wel.
Dus:
afstand = 60;
function koe() {
trace("boe");
}
if (afstand > 40) {
koe();
trace("Werkt");
}
Heedless
%Europe/Berlin %623 %2006, 14:57
Heb ik net al geprobeerd, en werkt inderdaad, maar ik wou dat liever niet, maar ik zal het wel gewoon doen, dan werkt het teminste
Maar waarom werkt het anders niet? Want het lijkt me wel een goede code
"als afstand > 40 dan is de functie beweeg zo en zo, en die moet dan meteen gestart worden"
BernardV
%Europe/Berlin %625 %2006, 15:01
Het kan wel zo, alleen ik vind het niet echt netjes:
afstand=60;
if (afstand>40) {
koe = function(){
trace ("boe");
}
koe();
trace ("Werkt");
}
psychonikeo
%Europe/Berlin %626 %2006, 15:01
het maakt niet uit waar je een functie neerzet (bij wijze van spreke dan). Deze wordt uitsluitend gebruikt op het moment dat je m aanroept. Waar het niet werkt, geen idee, maar het is niet nodig om hem daar neer te zetten.
Een functie maakt je ook als je iets meerdere keren wil doen. In plaats van elke keer de hele inhoud van de functie te schrijven hoe je nu alleen maar het koe(); neer te zetten. Terwijl de daadwerkelijke functie heel ergens anders kan staan.
Invisible
%Europe/Berlin %633 %2006, 15:12
afstand=60;
if (afstand>40) {
koe = function(){
trace ("boe");
}
koe();
trace ("Werkt");
}
Zou dus net zo goed kunnen zijn:
afstand=60;
if (afstand>40) {
trace ("boe");
trace ("Werkt");
}
Stuk overzichtelijker in langere codes.
Heedless
%Europe/Berlin %732 %2006, 17:34
Nee, dat kon niet :) die trace ("boe"); is natuurlijk maar een voorbeeld, er staat vel meer code in, en die wil ik, los van andere code in datzelfde if-stukje, op kunnen roepen.
Maar ik heb hem nu buiten de if staan en dat werkt. Opgelost dus :)
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.