0

在 flash cs6 中,我绘制了一个 flash 影片剪辑,其中我将导出设置设置为 abc.Gameboard。在游戏板内部,我有一堆片段(符号:片段),我将它们导出为 abc.Piece - 基类都设置为 MovieClip 和类文件。该作品具有诸如命中,过度等框架标签。我的问题是访问代码中的作品,以便我可以例如。gotoAndPlay("mine") - 目前该事件仅触发一次,这是板上的最后一块。我可以在最后一块上设置框架动作,但想弄清楚如何为每一块做同样的事情。

我像这样在舞台上添加了一个游戏板

var gb:Gameboard = new Gameboard();
gb.name = "gb001";
contextView.addChild(gb);

然后

contextView.addEventListener(Event.ADDED, thingAdded);

private function thingAdded(event:Event):void
{
    var type:String = event.target.toString();
    switch(type)
    {
        // this runs only once - i want it to run for each piece that is inside the symbol
        case "[object Piece]":

        var p:MovieClip = event.target as Piece;
        p.gotoAndPlay("mine");
        break;
    }
}

或者如果有更好的方法会很棒..这看起来很笨重

编辑:有关我如何尝试构建游戏板的更多信息在 illustrator 中绘制形状集合 - 将其遮盖(游戏板区域)。以图形形式导入 Flash。将图形转换为几个影片剪辑符号(因此 JSFL 可以向下钻取并访问蒙版片段) - 运行 JSFL 脚本并创建 00 片段。然后我在 Piece 和 Gameboard 上设置导出设置,并将 Gameboard 添加到 contextView。

4

2 回答 2

0

实际上,我曾经写过一篇关于这个的整篇文章ADDED对于添加的每个 DisplayObject,该事件应触发一次。你确定你没有使用ADDED_TO_STAGE,它不会冒泡吗?如果您正在使用ADDED_TO_STAGE,那么您需要将 useCapture 标志设置为 true 以使其为所有孩子触发。

如果您想让 RobotLegs 参与该过程,可能更好的方法是简单地为您希望以不同方式表现的每个特定按钮创建一个“标记”类,然后为每个将管理行为的类注册一个中介. Robotlegs 已经内置了用于监听 ADDED_TO_STAGE 并执行此操作的钩子。

但是,您也可以考虑将 Flash IDE 用于它的用途,即把东西放在舞台上。在这种情况下,您的 GameBoard 实例将在您的主文档类的构造函数中准备好,您可以使用它做任何您想做的事情。

MPO 是Gameboard外部的逻辑不应该知道或关心它在内部是如何工作的,老实说,它可能甚至不应该是 GameBoard 的责任来处理简单的东西,比如状态和事物上的按钮。这应该取决于按钮本身。如果按钮不需要切换或任何超出 SimpleButton 处理的东西,您可以在库中将按钮实例声明为 Button 而不是 MovieClip,并免费获得所有这些东西,而不是自己编写代码。

成为一名优秀的编码员的一部分是能够找出编码所有内容的方法。

于 2013-03-03T19:49:30.567 回答
0

in their Gameboard inside Piece? I want know exactly your Gameboard Structure.

If you're right. try this:

function thingAdded(e:Event):void
{
    if(!e.target is Gameboard) return;

    var mc:Gameboard = Gameboard(e.target);

    var i:int = 0;
    while(i<mc.numChildren)
    {
        if( mc.getChildAt(i) is Piece)
        {
            var piece:Piece = Piece(mc.getChildAt(i));

            piece.gotoAndStop(2);
        }
        i++;
    }
}

Here is my Sample code: Gameboard

于 2013-03-03T11:55:09.057 回答