Flash As3 vraag

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • scidhuv
  • Registratie: Februari 2009
  • Laatst online: 07-01-2024
Waarschuwing: Ik ben nog zeeer nieuw met Flash (en alle andere ook tbh ;)) dus als ik domme dingen doe dan is dat misschien niet zo gek.

Als er op een knop gedrukt word moet er naar een ander frame gesprongen worden, waar een MC aan de muis vast komt te zitten. Deze moet dan op bepaalde posities vast "snappen" en bij een linker muis klik ook daar blijven. Ik krijg het eerste deel allemaal goed, alleen de MC plakt na luttle microseconden weer aan de muis vast, wat niet moet (moet pas gebeuren bij het verlaten van de "holder" die gebruikt word om de MC aan vast te snappen):
frame 10

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
singlewallBtn_btn.addEventListener(MouseEvent.CLICK,singlewallClick);

function singlewallClick(event:MouseEvent):void{

    gotoAndStop(15);

addEventListener(Event.ENTER_FRAME,singlewallSet);

function singlewallSet(e:Event):void{

    singlewallClp_clp.x=mouseX;
    singlewallClp_clp.y=mouseY;

}
}

Dan is de code op frame 15
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import fl.transitions.Tween;
import fl.transitions.easing.*;

var snaptoX:Tween;
var snaptoY:Tween; 

holder4Clp_clp.addEventListener(MouseEvent.MOUSE_OVER, snapinplace4);
holder4Clp_clp.addEventListener(MouseEvent.MOUSE_OUT, backtodrag4);

// Snap in place

function snapinplace4(evt:MouseEvent):void {

    singlewallClp_clp.stopDrag();
    snaptoX = new Tween(singlewallClp_clp, "x", Strong.easeOut, singlewallClp_clp.x, holder4Clp_clp.x, 0.1, true);
    snaptoY = new Tween(singlewallClp_clp, "y", Strong.easeOut, singlewallClp_clp.y, holder4Clp_clp.y, 0.1, true);

    singlewallClp_clp.stopDrag();

}
function backtodrag4(evt:MouseEvent):void
{
    singlewallClp_clp.startDrag();
}


Ik denk zelf dat het komt door de function van frame 10 (ENTER_FRAME), die immers continu door blijft gaan. Ik weet echter niet hoe ik hem moet stoppen, of dit anders aan moet pakken. Ik heb al verschrikkelijk veel sites bekeken maar word er alleen maar confuus van :P
Schijnt nergens een simpele lijst te zijn met alle opties (wellicht is er een Event.ExecuteOnceAtEnterFrame of whatever? :> )

Heeft iemand wellicht een oplossing voor mij?

Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Nu online
Gewoon een boolean aanmaken waarin je bijhoudt of hij gesnapt is of niet? :-) As hij true is niet tweenen naar muispositie in je enterFrame event.
Of je onEnterFrame event weggooien als hij naar zijn positie is gesnapt en weer aanmaken als je erop klikt. Dan kun je je onEnterFrame enkel nergens anders meer voor gebruiken.

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • 0 Henk 'm!

  • lukaso
  • Registratie: Augustus 2004
  • Laatst online: 24-08 01:53
je ENTER_FRAME blijft uiteraard gewoon doorlopen, daar zul je iig iets aan moeten aanpassen.

ik denk dat je fout hem vooral zit in het feit dat je zowel gebruik maakt van stopDrag()/startDrag() als het handmatig plaatsen van je displayObject(in singlewallSet).

makkelijkste oplossing lijkt me dan ook om in singlewallSet ook gewoon gebruikt te maken van startDrag().


verder:
-ik heb niet zoveel ervaring met het verdelen van code over frames, lijkt me niet heel handig. Als je het allemaal op 1 plek had staan, kon je in snapinplace4() gewoon removeEventListener(Event.ENTER_FRAME,singlewallSet) aanroepen.
-Btn_btn, Clp_clp, wut?