Skip to main content
Known Participant
July 2, 2013
Answered

How to reuse function to be triggered by several eventlisteners?

  • July 2, 2013
  • 1 reply
  • 656 views

The first line works, and adds the movieclip "MyMC" from the library through AS Linkage.

I would like to reuse the function so i can replace MyMC with MyMC2, MyMC3 etc..

Any idea how this is done?

layer3Holder.myMC.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC2.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC3.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC4.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

function moveMC(e:MouseEvent){

    var newMC:MyMC = new MyMC();

    layer3Holder.addChild(newMC);

    newMC.x=250;

    newMC.y=250;

          newMC.addEventListener( MouseEvent.DOUBLE_CLICK, onDoubleClick );

          newMC.addEventListener(MouseEvent.MOUSE_DOWN, dragMC);  

          newMC.addEventListener(MouseEvent.MOUSE_UP, dropMC);

          newMC.addEventListener(MouseEvent.MOUSE_OUT, dropMC);

          newMC.addEventListener(TransformGestureEvent.GESTURE_ZOOM, gestureZoomHandler);

          newMC.addEventListener(TransformGestureEvent.GESTURE_ROTATE, gestureRotateHandler);

          newMC.mouseChildren = false;

          newMC.doubleClickEnabled = true;

}

function onDoubleClick(e:MouseEvent){

          e.currentTarget.parent.removeChild(e.currentTarget);

}

function dragMC(e:MouseEvent){

    e.currentTarget.startDrag();

}

function dropMC(e:MouseEvent){

    e.currentTarget.stopDrag();

}

function gestureZoomHandler(e:TransformGestureEvent):void

{

          e.currentTarget.scaleX *= e.scaleX;

          e.currentTarget.scaleY *= e.scaleX;

}

function gestureRotateHandler(e:TransformGestureEvent):void

{

          e.currentTarget.rotation += e.rotation;

}

This topic has been closed for replies.
Correct answer kglad

assuming those mousedown dispatcher references are also names, you can use:


layer3Holder.myMC.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC2.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC3.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC4.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

var newMC:MovieClip;

function moveMC(e:MouseEvent){

// do something with previous newMC's?

// code here.

if(e.currentTarget.name.substr(4).length>0){
var C:Class=Class(getDefinitionByName("MyMC"+e.currentTarget.name.substr(4)));
newMC=new C();
} else {
newMC=new MyMC();
}

    layer3Holder.addChild(newMC);

    newMC.x=250;

    newMC.y=250;

          newMC.addEventListener( MouseEvent.DOUBLE_CLICK, onDoubleClick );

          newMC.addEventListener(MouseEvent.MOUSE_DOWN, dragMC);  

          newMC.addEventListener(MouseEvent.MOUSE_UP, dropMC);

          newMC.addEventListener(MouseEvent.MOUSE_OUT, dropMC);

          newMC.addEventListener(TransformGestureEvent.GESTURE_ZOOM, gestureZoomHandler);

          newMC.addEventListener(TransformGestureEvent.GESTURE_ROTATE, gestureRotateHandler);

          newMC.mouseChildren = false;

          newMC.doubleClickEnabled = true;

}

}

function onDoubleClick(e:MouseEvent){

          e.currentTarget.parent.removeChild(e.currentTarget);

}

function dragMC(e:MouseEvent){

    e.currentTarget.startDrag();

}

function dropMC(e:MouseEvent){

    e.currentTarget.stopDrag();

}

function gestureZoomHandler(e:TransformGestureEvent):void

{

          e.currentTarget.scaleX *= e.scaleX;

          e.currentTarget.scaleY *= e.scaleX;

}

function gestureRotateHandler(e:TransformGestureEvent):void

{

          e.currentTarget.rotation += e.rotation;

}

1 reply

kglad
Community Expert
kgladCommunity ExpertCorrect answer
Community Expert
July 2, 2013

assuming those mousedown dispatcher references are also names, you can use:


layer3Holder.myMC.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC2.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC3.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

//layer3Holder.myMC4.addEventListener(MouseEvent.MOUSE_DOWN, moveMC);

var newMC:MovieClip;

function moveMC(e:MouseEvent){

// do something with previous newMC's?

// code here.

if(e.currentTarget.name.substr(4).length>0){
var C:Class=Class(getDefinitionByName("MyMC"+e.currentTarget.name.substr(4)));
newMC=new C();
} else {
newMC=new MyMC();
}

    layer3Holder.addChild(newMC);

    newMC.x=250;

    newMC.y=250;

          newMC.addEventListener( MouseEvent.DOUBLE_CLICK, onDoubleClick );

          newMC.addEventListener(MouseEvent.MOUSE_DOWN, dragMC);  

          newMC.addEventListener(MouseEvent.MOUSE_UP, dropMC);

          newMC.addEventListener(MouseEvent.MOUSE_OUT, dropMC);

          newMC.addEventListener(TransformGestureEvent.GESTURE_ZOOM, gestureZoomHandler);

          newMC.addEventListener(TransformGestureEvent.GESTURE_ROTATE, gestureRotateHandler);

          newMC.mouseChildren = false;

          newMC.doubleClickEnabled = true;

}

}

function onDoubleClick(e:MouseEvent){

          e.currentTarget.parent.removeChild(e.currentTarget);

}

function dragMC(e:MouseEvent){

    e.currentTarget.startDrag();

}

function dropMC(e:MouseEvent){

    e.currentTarget.stopDrag();

}

function gestureZoomHandler(e:TransformGestureEvent):void

{

          e.currentTarget.scaleX *= e.scaleX;

          e.currentTarget.scaleY *= e.scaleX;

}

function gestureRotateHandler(e:TransformGestureEvent):void

{

          e.currentTarget.rotation += e.rotation;

}

Rhov23Author
Known Participant
July 2, 2013

Thanks alot!

kglad
Community Expert
Community Expert
July 2, 2013

you're welcome.