【问题标题】:Adding multiple movieclip symbols dynamically with actionscript: how to?使用动作脚本动态添加多个影片剪辑符号:如何?
【发布时间】:2014-03-11 21:40:17
【问题描述】:

我有一个名为“Main”的影片剪辑符号,我正试图将其用作一个空基来添加其他影片剪辑。

我有两个额外的动画剪辑符号,分别名为“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 的文章,但不确定其中有多少适用于我。我在这里的帖子试图集中搜索有关动态添加影片剪辑的信息,因此我非常感谢任何对此问题提出建议的人。

编辑:我不再相信这段代码有什么问题。这是一个愚蠢的错字,给我带来了麻烦。我不确定是要删除问题、将其标记为已回答,还是直接保留!

【问题讨论】:

  • 这段代码没有问题。如果您没有收到任何错误,并且 A 在显示列表中没有其他对象覆盖它,那么我想您可以尝试 A.mouseEnabled = true 但默认值为 true,因此除非您更改它可能不是问题。否则你的代码没问题,这将不足以提供足够的信息。
  • 非常感谢 Bennett 的评论。你说我的代码没有问题让我发现了一个愚蠢的错字,这是我唯一的问题:(非常感谢!
  • 太棒了!很高兴你知道了。

标签: actionscript-3 flash addchild


【解决方案1】:

首先检查您的Symbol_A 是否可点击。只需在您的 MouseUp 方法中添加 trace("Mouse up triggered!")。也许某些显示对象位于您的 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();
        }
    }
}

【讨论】:

  • 事实证明,一个错字是我唯一的问题。我很欣赏这个很好的例子,但是,谢谢你发布它!
猜你喜欢
  • 2015-04-24
  • 2015-05-06
  • 2011-07-13
  • 2013-01-27
  • 2013-12-22
  • 2011-01-19
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
相关资源
最近更新 更多