0

这实际上是一个愚蠢的问题,但是有没有一种可能的方法来保存电影剪辑的某个状态?例如,我动态添加了一个名为 big_mc 的电影剪辑,然后在 big_mc 内部包含三(3)个较小的电影,称为 child_mc1 和 child_mc2 以及一个 close_big从舞台上删除 big_mc,当我单击 child_mc1 和 child_mc2 中的任何一个时,child_mc 将在我单击 child_mc 之前消失。

所以场景是当我单击 child_mc1 将其从场景中移除时,接下来我将单击 close_big 影片剪辑以从舞台上移除 big_mc 并保存它自己的状态,所以下次我运行 SWF 文件并动态添加big_mc 到阶段,child_mc1 仍将丢失,而 child_mc2 仍将显示(即使我关闭 SWF 文件,也应保存状态)。请帮助..非常感谢。

主时间线中的代码:

    var big_mc:mother_mc = new mother_mc;

    add_big_btn.addEventListener(MouseEvent.CLICK, call_big);

    function call_big(e:MouseEvent):void
    {
            addChild(big_mc);
    }

big_mc 里面的代码:

    child_mc1.addEventListener(MouseEvent.CLICK, remove_child1);
    child_mc2.addEventListener(MouseEvent.CLICK, remove_child2);
    close_big.addEventListener(MouseEvent.CLICK, bye);


    function remove_child1(e:MouseEvent):void
    {
            removeChild(child_mc1);
    }

    function remove_child2(e:MouseEvent):void
    {
            removeChild(child_mc2);
    }

    function bye(e:MouseEvent):void
    {
            this.parent.removeChild(this);
    }
4

1 回答 1

0

您想从SharedObject开始,正如 Adob​​e 所说,“用于在用户的计算机或服务器上读取和存储有限数量的数据”。保存 MovieClip 的“状态”更加复杂。

你想保存什么呢?x 属性?也许是阿尔法?一切?每个对象都以默认状态存储在您的 swf 中。Flash IDE 中的库项目在技术上是微型类,正如我们实例化它们的方式所证明的那样。假设您创建了一个名为 的东西customButton,您可以像这样在屏幕上(或一个)生成数千个:

var foo:customButton = new customButton();

与手写类一样,它的副本customButton是在编译之前使用您在其上定义的所有属性创建的。如果你想改变这些属性,你必须解决每一个你想要不同的问题。

从广义上看,假设您想在每次加载 swf 时保存按钮的位置。使用getLocal()加载,并使用flush()保存。

var settings:Object = SharedObject.getLocal("foo");

function updateState(e:Event):void {
    myButton.x = settings.x;
    myButton.y = settings.y;
} 

function saveState():void {
    settings.x = myButton.x;
    settings.y = myButton.y;
    settings.flush();
}

这并非不可能;根本没有按钮解决方案。如果您愿意,您可以编写一个迭代所有 DisplayObjects 的函数,并将每个相关属性加载/保存到您的 SharedObject 中。不过,可能有点矫枉过正。

于 2013-10-28T21:16:48.640 回答