7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    nikolas

    Hulp gevraagd: Flash actionscript 2: drag meerdere movieclip

    Ik ben een student reclame en heb een (fictieve) online advertentie bedacht voor pritt.
    Het is het makkelijkst indien je eerst deze advertentie hier bekijkt.

    Nu wil ik hier ook een echte demo van maken.
    Ik heb de hele site in flash gezet en alles opgedeeld in verschillende movieclips. Het is dus de bedoeling dat wanneer je over de movieclips gaat, deze blijven plakken aan de cursor. Alsof ze aan de prittstick hangen.

    Tot nu toe heb ik het volgende gedaan:
    In het eerste (en enige) frame heb ik hiervoor deze code (as 2.0) gebruikt:

    [code:1:4193653565]Mouse.hide();

    startDrag(cursor, true);
    cursor.onEnterFrame = function() {
    this._x = _root._xmouse;
    this._y = _root._ymouse;
    };

    mc01.onRollOver = function() {
    this.startDrag();
    this._rotation = 35;
    this._x = _root.xvalue = _root._xmouse – 210;
    this._y = _root.yvalue = _root._ymouse – 190;
    }; [/code:1:4193653565]

    Wanneer ik een tweede element wil laten “kleven” dacht ik dus deze code te gebruiken:
    [code:1:4193653565]Mouse.hide();
    startDrag(cursor, true);
    cursor.onEnterFrame = function() {
    this._x = _root._xmouse;
    this._y = _root._ymouse;
    };
    mc01.onRollOver = function() {
    this.startDrag();
    this._rotation = 35;
    this._x = _root.xvalue = _root._xmouse – 210;
    this._y = _root.yvalue = _root._ymouse – 190;
    };
    mc02.onRollOver = function() {
    this.startDrag();
    this._rotation = -5;
    this._x = _root.xvalue = _root._xmouse – 5;
    this._y = _root.yvalue = _root._ymouse – 5;
    };[/code:1:4193653565]
    Maar dit lukt niet! De cursor kan nooit twee movieclips tegelijkertijd “draggen”.

    Ik ken niet veel van flash en zeker niet van actionscript, maar ik was al enorm blij dat ik tot hier gekomen was.
    Hoe kan ik dit probleem oplossen?
    Ik zou jullie 1000x dankbaar zijn!

    Grtz,

    Nikolas

    Bijdrager
    W0utR

    Bij het begin van je movie maak je een array die all mc’s erin zet.
    Telkens wanneer je over een mc gaat, haal je die uit de array en steekt hem in een andere array.

    In een mousemove of enterframe loop je dan constant door die array en hang hun positie vast aan de muis

    Bijdrager
    www.project-euh.com

    Persoonlijk zou ik dit liever in AS3 doen maar goed:

    W0utR had al een goede oplossing, maar je kunt ook een lege MC maken die je een startDrag geeft. Vervolgens plaats je alle zaken waar je overheen gaat in die MC, bewegen ze vanzelf mee.

    Bijdrager
    nikolas

    Enorm hard bedankt voor jullie reacties!

    Klinkt allemaal heel logisch, maar nadat ik google ten hulp heb gevraagd zou ik toch nog steeds niet weten hoe ik zo’n stukje actionscript in elkaar moet steken.

    Ik ken namelijk heel weinig (zo goed als niets) van actionscript, maar ik zou dit toch enorm graag willen afwerken.

    Kunnen jullie me hierbij helpen? Welke codes moet ik in wel frame zetten?

    Ik ruil bezorg ik jullie een gratis bak bier! :lol:

    Bijdrager
    www.project-euh.com

    Zie je PB

    Bijdrager
    nikolas

    http://www.project-euh.com heeft mij enorm hard geholpen, waarvoor dank!

    Hier kunnen jullie het resultaat tot hiertoe zien:
    >klik<

    De code om dit alles te verwezenlijken (met actionscript 3.0):

    [code:1:dc63dd8319]Mouse.hide();

    //maak een lege spraat aan en plaats die op de stage en drag deze
    var drag:Sprite = new Sprite();
    this.addChild(drag);
    drag.startDrag(true);

    //nog wat muis dingen
    drag.mouseChildren = false;
    drag.mouseEnabled = false;

    //voeg de pritt toe
    drag.addChild(cursor);
    cursor.x = 0;
    cursor.y = 0;

    //kopieer deze voor alle movieclips die draggable zijn
    mc01.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
    mc02.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
    mc03.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);

    //hier wordt het mouseover event afgevangen
    function mouseOverHandler(event:MouseEvent)
    {
    var displayObject:DisplayObject = event.currentTarget as DisplayObject;
    if(displayObject)
    {
    //hier zorgen we ervoor dat ie niet meer reageerd op mouse over en voegen we hem toe aan de drag clip
    displayObject.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
    displayObject.x -= drag.x;
    displayObject.y -= drag.y;
    drag.addChildAt(displayObject, drag.numChildren-1);

    switch(displayObject)
    {
    case mc01:
    {
    displayObject.rotation = 12;
    displayObject.x = -300;
    displayObject.y = -100;
    break;
    }
    case mc02:
    {
    displayObject.rotation = -15;
    displayObject.x = -5;
    displayObject.y = 20;
    break
    }
    case mc03:
    {
    displayObject.rotation = -5;
    displayObject.x = -5;
    displayObject.y = 0;
    break
    }
    }

    }
    }
    [/code:1:dc63dd8319]

    Bijdrager
    nikolas

    Ik heb nog een extra vraag waarvoor ik nu niet speciaal een nieuw topic wil openen…

    Hoe krijg ik het voor elkaar om er voor te zorgen dat wanneer ik de escape-knop indruk dat de movie dan verspringt daar een volgend frame (frame 2). En dit met actionscript 3?

    Alvast bedankt!

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.