PDA

Volledige versie bekijken : muis binnen cirkelvormig gebied slepen


fabgar
%Europe/Berlin %494 %2006, 11:52
Hi,

Ik ben bezig een soort virtueel XY pad te maken, wat er op neer komt dat je een object (ball) binnen een cirkelvormig gebied kan slepen maar niet er buiten.

ik heb wel een idee hoe er aan te beginnen, bij click and drag ... constant de mouse(x,y) checken met de straar van de circel ...
het probleem is om dit smooth de doen, zodat de muis zich langs de omtrek van de cirkel beweegt wanneer je hier tegenaan sleept. nu gebeurt dit nog all chaotisch, soms stopt de drag, soms gaat de muis lichtjes over de cirkel.

heeft iemand zoiets ooit al eens gemaakt ? waar zou ik zulke voorbeelden kunnen vinden ?
heeft iemand een idee, hoe zo'n 'drag within circle but don't exceed it' algoritme er zou kunnen uitzien ?

bedankt

groeten

Macs
%Europe/Berlin %512 %2006, 12:18
het mooie van een cirkel is dat de rand overal even ver van het middelpunt is ;)
Dus een methode is om de afstand van de bal tot het middelpunt telkens (onMouseMove, of onEnterFrame oid) te berekenen (met de stelling van Pythagoras :)) en als deze groter is dan de afstand tot de rand stopDrag() aan te roepen....
succes

division
%Europe/Berlin %609 %2006, 14:38
Ah kom op macs, waarom zei je nu Pythagoras? :P Kheb juist examen wiskunde gehad -.-

Misschien met hittest? werkt normaal altijd...

kevinrommen
%Europe/Berlin %616 %2006, 14:48
ik zou ook pythagoras doen. Dat is de meest mooie manier qua scripting. Dat is een goede test voor je. Met hittest werkt natuurlijk ook maar pythagoras is mooi stukje wiskunde. Verder als je het in processing gaat maken is het makkelijker daar kan je de dist() functie gebruiken. Maar dat is alleen van toepassing als je een voorbeeld wil maken

groet, KEvin

Erwinzzz
%Europe/Berlin %819 %2006, 19:40
ik zou ook pythagoras doen. Dat is de meest mooie manier qua scripting. Dat is een goede test voor je. Met hittest werkt natuurlijk ook maar pythagoras is mooi stukje wiskunde. Verder als je het in processing gaat maken is het makkelijker daar kan je de dist() functie gebruiken. Maar dat is alleen van toepassing als je een voorbeeld wil maken

groet, KEvin
Bovendien werkt hitTest bij ronde figuren niet helemaal goed, omdat hij er een soort van vierkant van maakt.

Ordell
%Europe/Berlin %823 %2006, 19:45
Dat heeft te maken met de boundingbox, dan dien je de shapeflag in hittest op true te zetten:

"shapeFlag: Boolean A Boolean value specifying whether to evaluate the entire shape of the specified instance (true), or just the bounding box (false)."

fabgar
%Europe/Berlin %452 %2006, 11:52
Hi,

ik ben blij met de vele reacties van mensen die blijkbaar weten hoe het moet ... in theorie dan toch :)
thanx

Ik heb een site gevonden met een voorbeeld waar ik uiteindelijk iets meer mee kon doen, en ik dacht waarom deel ik dit handig stukje code niet ...

http://www.ultrashock.com/ff.htm?http://www.ultrashock.com/flas/Detailed/201.html


greetz

Macs
%Europe/Berlin %481 %2006, 12:33
Is het Pythagoras? ;)