使用actionscript动态添加多个动画片段符号:如何?

时间:2014-03-10 15:12:17

标签: actionscript-3 flash addchild

我有一个名为“Main”的movieclip符号,我试图将其用作添加其他动画片段的空基。

我还有两个名为“A”和“B”的影片剪辑符号,其中包含.png图像。

当我的动作脚本告诉他们时,我试图动态显示两个动画片段符号“A”和“B”。在下面的代码中,movieclip“A”显示正常,而movieclip“B”则不显示。

package  {

import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Main extends MovieClip {

    var A:Symbol_A;
    var B:Symbol_B;

    public function Main() {
        A = new Symbol_A();
        addChild(A);

        A.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
    }

    function MouseUp(event:MouseEvent):void
    {
        B = new Symbol_B();
        addChild(B);
    }
}

}

我一定错过了什么!

我已经阅读了几个关于addChild的内容,但我不确定它有多少适用于我。我在这里发布的帖子是尝试集中搜索有关动态添加动画片段的信息,所以我非常感谢任何对此事有建议的人。

编辑:我不再相信这段代码有任何问题。这是一个愚蠢的错字,给我带来了麻烦。我不确定是要删除问题,标记答案,还是留下来!

1 个答案:

答案 0 :(得分:0)

首先检查您的Symbol_A是否可点击。只需在trace("Mouse up triggered!")方法中添加MouseUp即可。也许某些显示对象位于Main上,因此无法接收MouseEvent。此外,如果两个符号包含相同的图像,您将看不到差异,尝试在另一个位置添加Symbol_B

这里有一个例子,每次你点击方块(显示对象里面的图像,就像你的情况一样)将在随机位置再添加一个对象:

package {

    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class StackOverflow extends Sprite {

        public function StackOverflow() {
            addEventListener(Event.ADDED_TO_STAGE, onAdded);
        }

        private function setup():void {
            var simpleMc:Sprite = createWithImage(100, 100);
            addChild(simpleMc);
            simpleMc.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
        }

        private function createWithImage(width:int, height:int):Sprite {
            var result:Sprite = new Sprite();
            var bitmapData:BitmapData = new BitmapData(width, height, false, Math.random() * 0xFFFFFF);

            result.addChild(new Bitmap(bitmapData));
            return result;
        }

        private function onDown(e:MouseEvent):void {
            var addOneMore: Sprite = createWithImage(100, 100);
            //place object under that are already in the list
            addChildAt(addOneMore, 0);
            addOneMore.x = stage.stageWidth * Math.random();
            addOneMore.y = stage.stageHeight * Math.random();
        }

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

            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            setup();
        }
    }
}