Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[Flash ActionScript] Variabele gebruiken in een getProperty

nssadmin
7 antwoorden
  • Goeiemorgen,

    Kan iemand mij ook uitleggen hoe ik een variabele, die ik al eerder tijdens een onPress-actie van een andere MC gevuld heb, gebruiken in een getProperty-functie voor een MC?

    Voorbeeldje:

    [code:1:b12f778773](Action for krant1mon)


    on(press,rollOver)
    {
    //hier wordt de variabele gedefinieerd

    variabelenaam="krant1mon";

    }

    (Andere MC: papierbakmoff)
    //hier wordt de variabele aangeroepen

    onClipEvent(mouseMove)
    {
    if (getProperty("/variabelenaam", _droptarget) eq "/papierbakmoff")
    {
    setProperty("/papierbakmon", _visible, 100);
    }
    }
    [/code:1:b12f778773]

    Mijn collega Wouter en ik hebben er al een aantal boeken op nageslagen, maar zijn er nog niet echt wijzer geworden, terwijl dit toch een vrij logische/simpele optie zou moeten zijn, toch
    Is de syntax verkeerd of moet de variabele als 'global' bekend staan en als dit het geval is; hoe doe je dit dan? :oops:

    Alvast bedankt voor de reacties,

    Djurre (en Wouter natuurlijk)
  • oh oh oh

    [code:1:a1a89207ac]

    on(press,rollOver)
    {
    //hier wordt de variabele gedefinieerd

    variabelenaam="krant1mon";

    }

    (Andere MC: papierbakmoff)
    //hier wordt de variabele aangeroepen

    onClipEvent(mouseMove)
    {
    if (getProperty("/variabelenaam", _droptarget) eq "/papierbakmoff")
    {
    setProperty("/papierbakmon", _visible, 100);
    }
    }
    [/code:1:a1a89207ac]

    Er klopt weinig van deze code. Ik neem aan dat je probeert een object te slepen en dan bij het loslaten de droptarget wil bekijken? Waarom gebruik je dan OnClipEvent(mouseMove) die constant wordt uitgevoerd als de muis beweegt? Zolang je muis beweegt is er helemaal geen dropTarget. Die is er alleen als je een startDrag() en vervolgens weer een stopDrag() aanroept. En waarom gebruik je Flash 4 syntax? _visible kent geen waarde 100, alleen 1 of 0. 100 Hoort thuis bij _alpha.

    ik denk dat dit beter werkt:

    [code:1:a1a89207ac]
    onClipEvent (mouseDown) {

    if(this.hitTest(_root._xmouse,_root._ymouse,true))
    {
    this.startDrag();
    this.drag = true;
    }
    }

    onClipEvent (mouseUp) {

    if(this.drag)
    {
    stopDrag();
    this.drag = false;

    var name = eval(this._droptarget)._name;
    if(name == 'papierbakmoff')
    {
    _root.papierbakmon._visible = 1;
    }
    }
    }
    [/code:1:a1a89207ac]

    Dan gebruik je dus ook geen button meer
  • Hoi Jurriaan,

    Het betreft inderdaad een drag/drop-spel, genaamd Opruimspel.
    Het is hierbij de bedoeling dat de gebruiker een park schoon houdt door met de muis items (een lege fles, een oude krant etc.) naar de bijbehorende 'afgifte-punten' te slepen.
    De oude krant bijvoorbeeld kan alleen in de 'oud-papierbak' gegooid worden en de lege fles alleen in de glasbak.
    Hier moet dus een vergelijking plaatsvinden of het item wel het goede target heeft.
    Als de krant over de oud-papierbak zweeft tijdens het slepen, moet de papierbak daarbij oplichten.

    Ons idee was dus om de itemnaam en het bijbehorende target variabel te maken tijdens de onClick om deze vervolgens te gebruiken bij de onMouseOver van het target.
    Zo hoef je niet voor álle items een apart script te schrijven en kan er een controle op target-'juistheid' plaatsvinden.

    De problemen beginnen als we deze variabele(n) aan willen roepen in de
    getProperty tijdens de onMouseOver van het target (de papierbak bijv.).
    Deze blijven dan leeg (als we de debugger moeten geloven).

    Roepen we de variabelen() verkeerd aan, definieren we ze niet goed of is het een ander probleem?


    Bedankt :D


    Wouter en Djurre
  • Of je die variabele wel of niet goed aanroept kan ik niet echt beoordelen. Als die button met daarin on(press,rollOver) in de main timeline staat zou het moeten werken, staat die button in een movieclip, dan niet. Je zegt in de code voor die button: variabelenaam = 'xx'; Dan wordt er lokaal voor de tijdlijn waar de button staat een variabele 'variabelenaam' gemaakt. Dat wil zeggen, staat die button in een movieclip, dan moet je de variabele benaderen met [i:e1ff69cbc9]movieclipnaam.variabelenaam[/i:e1ff69cbc9].

    Verderop gebruik je /variabelenaam. Volgens flash4 syntax zou het dan moeten zijn /:variabelenaam, dat is de variabele variabelenaam in de main timeline. In flash 5/mx zou dat worden: _root.variabelenaam. In ieder geval ga je er daar vanuit dat die variabele in de main timeline staat. Staat die variabele daar niet, dan gaat het dus sowieso niet werken.

    Maar goed, het script gaat toch niet werken zoals julie dat willen. Zoals ik al zei, _droptarget kun je alleen opvragen nadat er een stopDrag() heeft plaatsgevonden en dus niet als je nog aan het slepen bent. Waar jullie naar op zoek zijn is hitTest(). Daarmee kun je controleren of je een andere clip raakt.

    Een kleine aanpassing in het vorige script:

    [code:1:e1ff69cbc9]
    onClipEvent (load) {

    this.target = _root.prullenbak;

    }

    onClipEvent (mouseDown) {

    if(this.hitTest(_root._xmouse,_root._ymouse,true))
    {
    this.startDrag();
    this.drag = true;
    }
    }

    onClipEvent (mouseUp) {

    if(this.drag)
    {
    stopDrag();
    this.drag = false;
    }

    }

    onClipEvent (enterFrame) {

    if(this.drag)
    {
    if(this.hitTest(target))
    target._alpha = 100
    else
    target._alpha = 30;
    }

    }
    [/code:1:e1ff69cbc9]

    In de onClipEvent(load) geef je een target op, dat is het enige wat je per clip moet veranderen. Verder kijkt het script, als er gesleept wordt, met onClipEvent(enterFrame) of je die target raakt. Zo ja, dan wordt de alpha aangepast.

    Dit voorbeeldje staat hier:
    http://www.jurriaan.org/flash/dragover.fla
    http://www.jurriaan.org/flash/dragover.swf
  • Bedankt voor de hulp :D

    Wouter en Djurre
  • Overigens:

    Kan ik de MovieClip zelf ook variabel maken?
  • hoe bedoel je ……..

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.