0

別のムービークリップの子であるムービークリップがあります。最初の(親)ムービークリップでstartDrag()とstopDrag()を使用しますが、ネストされたムービークリップは移動しません。なんで?

ステージ上の関連コード:

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);
}
4

1 に答える 1

2

この簡単なプログラムをテスト用に作成し、Flash Developで期待どおりに動作します。ステージ上の任意の場所でマウスを押すと、メインスプライトと子ビットマップがあり、メインスプライトがドラッグされて子ビットマップが移動されます。

ですから、フラッシュプロフェッショナルとリンケージのワークフローで何かが起こっていると思います。マウスイベントハンドラーがトリガーされていることを確認して、いくつかのブレークポイントを設定してデバッグします。

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();
        }

    }

}
于 2012-06-21T17:42:33.133 に答える