Ga naar inhoud

[Flash ActionScript] Variabele gebruiken in een getProperty


Aanbevolen berichten

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)
Link naar reactie
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
Link naar reactie
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
Link naar reactie
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
Link naar reactie
Het hieronder afgebeelde (psd->)schema geeft aan wat er moet gebeuren. Voor achtergrondinfo zie vorige post: [img:93a9600298]http://www.gomotion.nl/forum/psd-opruimspel.gif[/img:93a9600298] Omdat er dus meerdere 'opbergbakken' zijn, moeten deze met een variabele benaderd kunnen worden. deze var. heet 'parentnaam'. Met parentnaam en childtarget kan vergeleken worden of het huidige te verslepen item bij de opberkbak hoort. Is dit nog te volgen? Het is nu al zo dat als we een vaste waarde voor parentnaam nemen het foutloos werkt. De vraag is dus: Hoe luidt de syntax voor deze vergelijking? Wederom alvast bedankt voor de moeite.nl Wouter en Djurre
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...