PDA

Volledige versie bekijken : Tekenen van de selectie bij een woordzoeker


educasoft
%Europe/Berlin %350 %2009, 08:24
Hoy,

Sorry als titel beetje raar klinkt maar ik wil eigenlijk het volgende doen.
Ik zou graag een mooie woordzoeker maken. Zo een beetje als http://www.flashcomponents.net/component/word_search_game_2.html

Alleen zou ik willen met afgeronde hoekjes werken ipv een rechthoek om te selecteren (woorden aan te duiden). Aangezien je ook diagonaal kunt woorden aanduiden is dit dus iets moeilijker dan gewoon maar eventjes een vierkant spriteje op de stage te slepen en de 4 hoekjes te verplaatsen.


Daarom vraag ik me af hoe ik dat best kan doen. Ik zou namelijk de begincoordinaat van de selectie opslaan bij de onmouseDown en terwijl ik dan aan het MouseMoven ben zou ik de (tussentijdse) eindcoordinaat hebben. Tussen die 2 coordinaten zou ik dan in feite de selectie willen doen.

Vraagt dat veel tekenwerk, of zou ik daarvoor eventueel gewoon 1 enkele lijn kunnen tekenen met afgeronde hoeken en een zekere lijndikte ?


Alle hulp is meer dan welkom. Zoals je vermoedelijk kunt zien ben ik nog vrij nieuw in deze materie, maar ik heb wel een kleine 15 jaar programmeerervaring waaronder 7 jaar director en nu reeds enkele maandjes Flash (onlangs CS4 gekocht)


Met dank,

Bart

Dauntless
%Europe/Berlin %407 %2009, 09:46
Dit kan je doen door inderdaad gewoon een lijn te tekenen.

Zet de dikte op 15, eventueel de alpha op .5 en teken 1 lijn van begin tot eind. (Tekenen gebeurt met lineStyle, moveTo en lineTo; Allemaal eigenschappen van de Graphics class)

educasoft
%Europe/Berlin %546 %2009, 13:07
OK begrepen.

Ik zie hier wel dat die methodes effectief de lijn TEKENEN op een sprite.

Nu is het wel zo dat die lijn gestart wordt (begincoordinaat) als ik de mousedown heb, maar zolang ik de muisbutton niet weer loslaat moet flash dus iedere frame opnieuw een de getekende lijn refreshen met als eindcoordinaat de huidige muiscursor.

Pas als de muisknop dan weer omhoog gaat is de lijn definitief.

Maar hoe zou ik dan kunnen in al die andere frames te werk gaan om tekens de lijn te updaten zonder dat je de lijn van de vorige frame nog ziet?


Mvg,

Bart

Neuro
%Europe/Berlin %565 %2009, 13:35
je zal de graphics elke frame moeten clearen, dus zoiets:

private function onMove(event:MouseEvent):void
{
line.graphics.clear()
line.graphics.lineStyle(15,0,0.5)
line.graphics.moveTo(beginX,beginY)
line.graphics.lineTo(mouseX,mouseY)

}

Dauntless
%Europe/Berlin %567 %2009, 13:36
Je maakt 1 Sprite aan die je bovenop je speelveld legt. Je kan dan bij MOUSE_MOVE tekenen in de graphics property van de Sprite. Eerst clear() je alles (zodat de vorige lijn verdwijnt) en daarna teken je de nieuwe lijn. Merk op dat clear(); ook je lineStyle() reset.

educasoft
%Europe/Berlin %585 %2009, 14:03
All right, wat een prachtige support hier.

Wij hebben Flash gekozen om onze volgende educatieve titel te maken. Tot voor kort gebruikten we daarvoor DIRECTOR, maar dat geeft iets te veel potentiële problemen daar er enkele dikke bugs zitten in director shockwave player. Op 10000 klanten moet je rekenen dat we toch een 200 klanten hebben die initieel myserie hebben met deze shockwave speler en die moeten we dan via allerlei instructies helpen om de cd toch draaiende te krijgen.
Dat proberen we nu met flash te vermijden.


Nogmaals dank voor deze snelle support. Ik denk dat ik een regular van flashfocus.nl ga worden.


Mvg,

Bart

educasoft
%Europe/Berlin %603 %2009, 14:29
Dauntless, bedoel je met een sprite trouwens een movieclip? of bedoel je iets anders dat ik moet bovenop mijn letterveld slepen ?

Dat is me namelijk nog niet 100% duidelijk aangezien ik het toch een zekere grootte ga moeten geven hé.

Dauntless
%Europe/Berlin %670 %2009, 16:05
Een sprite kan je niet aanmaken in Flash zelf, enkel met AS. Een Sprite is eigenlijk een movieclip met maar 1 frame.

var mySprite:Sprite = new Sprite();
mySprite.name = "mySprite";
this.addChild(mySprite);
En vervolgens kan je tekenen in mySprite.graphics.

Uiteraard kan je ook een lege movieclip op je stage slepen en daar in tekeken, maar dat is iets minder mooi.

Het is voor vectoren ook niet nodig om eerst een breedte en hoogte aan te geven (Dit is waarschijnlijk een verschil met director). Als je met bitmaps gaat werken (Bitmap & BitmapData class) is dit dan weer wel nodig.