PDA

Volledige versie bekijken : 'Drag 'n Drop' met 1 target


FvB
%Europe/Berlin %636 %2010, 15:17
Hallo mensen...

Ik wil een sleep/drag 'n drop-functie maken, waarbij je 4 movieclips apart kan slepen naar een target. Als je een movieclip loslaat bij de target, dan moet de hele movie naar een ander frame gaan (en bij elke movieclip is dat een ander frame). Het is dus een soort sleepmenu, ofzo.
Als je een movieclip loslaat als hij nog niet het target raakt, dan moet ie terug gaan naar zijn originele positie. De movieclips mogen trouwens ook best buttons zijn.

Weet iemand van jullie een manier/manieren waarop je dit kan doen, of een site o.i.d. waar ik dat kan vinden. Ik kan namelijk geen manier vinden, en ook geen site.

Wel heb ik ergens dit gevonden...
var startX:Number;
var startY:Number;

knop.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
knop.addEventListener(MouseEvent.MOUSE_UP, dropIt);


function pickUp(event:MouseEvent):void {
knop.startDrag(true);
event.target.parent.addChild(event.target);
startX = event.target.x;
startY = event.target.y;
}
function dropIt(event:MouseEvent):void {
event.target.stopDrag();
var myTargetName: string = "target" + event.target.name;
var myTarget: displayObject = getChildByName(myTargetName);
if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget){
event.target.removeEventListener(MouseEvent.MOUSE_ DOWN, pickUp);
event.target.removeEventListener(MouseEvent.MOUSE_ UP, dropIt);
event.target.buttonMode = false;
event.target.x = myTarget.x;
event.target.y = myTarget.y;
} else {
event.target.x = startX;
event.target.y = startY;
}

}

...maar dat is voor 1 movieclip en 1 target (en het script doet het niet).

Alvast bedankt..

Schuldenaar
%Europe/Berlin %913 %2010, 21:55
myMovieClip.addEventListener(MouseEvent.MOUSE_DOWN , onStartDrag);
myMovieClip.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);

myMovieClip2.addEventListener(MouseEvent.MOUSE_DOW N, onStartDrag);
myMovieClip2.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);

function onStartDrag(evt:MouseEvent):void {
evt.target.startDrag();
}
function onStopDrag(evt:MouseEvent):void {
evt.target.stopDrag();
}


Of evt.currentTarget.startDrag();

Maar het verschil weet ik zelf niet zo goed:(

Voor te kijken of hij het target raakt, werk je met een If-structuur en een hitTestObject.



movieclip.addEventListener(Event.ENTER_FRAME,contr oleerHit);

function controleerHit(event:Event):void
{
var movieclip:MovieClip = MovieClip(event.target);
for(var i=0;i<this.numChildren;i++)
{
var dsp:DisplayObject = this.getChildAt(i);
if(dsp is Target)
{
if(movieclip.hitTestObject(dsp))
{
gotoAndPlay(3)
}
}
}
}