拖动动画片段as3

时间:2012-06-21 16:50:11

标签: actionscript-3 flash actionscript drag

我有一个Movieclip,它是另一个movieclip的孩子。我使用startDrag()和stopDrag()与第一个(父)Movieclip,但嵌套的不会移动。为什么?

舞台上的相关代码:

var main:rt = new rt(); // rt being a class in my library, which extends MovieClip object.
addChild(main);

stage.addEventListener(MouseEvent.MOUSE_DOWN, stage_mousedownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseupHandler);


function stage_mousedownHandler(event_object:Event) {
    main.startDrag();       
}

function stage_mouseupHandler(event_object:Event) {
    main.stopDrag();
}

rt的构造函数代码:

public function rt() {

   var bmp_bar:Bitmap;
   var br_male:Bar_male; // Bar_male is a Bitmap in my library. (AS Linkage)

   bmp_bar = new Bitmap(br_male);
   this.addChild(bmp_bar);
}

1 个答案:

答案 0 :(得分:2)

制作这个简单的程序进行测试,它在Flash Develop中按预期工作,有一个主精灵和一个子位图当我在舞台上拖动任何地方时拖动主精灵并移动子位图。

所以我猜你的工作流程中有一些事情发生在flash专业和链接中。确保触发鼠标事件处理程序放置一些断点并进行调试。

package  
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.geom.Rectangle;

    public class Test extends Sprite
    {
        private var sp:Sprite = new Sprite();

        public function Test() 
        {
            addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
        }

        private function onAddedToStage(e:Event):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

            var bmpData:BitmapData = new BitmapData(100, 100,false,0x000000);
            bmpData.fillRect(new Rectangle(0, 0, 100, 100), 0xff0000);

            var bmp:Bitmap = new Bitmap(bmpData);

            sp.addChild(bmp);

            addChild(sp);

            stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
            stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
        }

        private function onMouseUp(e:MouseEvent):void 
        {
            sp.stopDrag();
        }

        private function onMouseDown(e:MouseEvent):void 
        {
            sp.startDrag();
        }

    }

}