ActionScript 3 - 在不同帧之间保存movieclip“state”

时间:2013-05-25 17:51:46

标签: actionscript-3 flash button movieclip

我们正在使用FLash CS6和AS3为大学考试开发原型。

我们正在建立一个管理医院食品服务的设备,但我们遇到了处理食物选择按钮及其相关状态的问题。

我们有几个MOVIECLIPS作为按钮(每个动画片段有3种状态:无效,向下和选择)可供选择的每种食物,但是当我们转到另一帧以在菜单的不同页面之间切换时,我们将失去选择在上一页......

切换到其他页面时,如何保存动画片段的状态?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

通常,最好将数据(例如您在文档类中描述的内容)存储为跟踪信息。如果您需要使用Framescripts,那些通常应限于无法从文档类/其他类合理执行的任务,例如时间轴事件,MovieClip事件侦听器和状态更改。

解决这个问题的最简单方法是拥有一个存储食物选择的类,其中包含可以设置和检索此数据的函数。然后,当您加载按钮实例时,使用类中存储的数据来设置按钮的状态。

这是一个过于简单的例子,使用单个标志布尔值。我建议使用另一个系统进行存储,例如XML,数组或自定义对象。在这种情况下,您还希望将类功能更改为所有可能的条目,而不仅仅是一个。

package
{
    public class food
    {
        var pizza:Boolean = false;

        public function addFood():void
        {
            pizza = true;
        }

        public function removeFood():void
        {
            pizza = false;
        }

        public function checkFood():Boolean
        {
            return pizza;
        }
    }
}

然后,您可以使用一个功能来设置按钮的状态,该功能可能会放在您的舞台上。我假设,因为你正在使用MovieClip,你有不同状态的不同帧。我假设“1”未选中且“2”被选中,并且MovieClip是“pizzaButton”。

同样,您需要扩展此功能以处理多个按钮,而不只是一个按钮。

import food;
function updateButton():void
{
    var flag:Boolean = food.checkFood();
    if(flag)
    {
        pizzaButton.gotoAndStop(2);
    }
    else
    {
        pizzaButton.gotoAndStop(1);
    }
}
顺便说一句,adaam在评论中绝对正确。 SimpleButtons可能比MovieClip更好地用于此目的,但这取决于您拥有的按钮的性质。我会调查一下。这个方法大部分都适用于SimpleButtons,除了你的代码会改变对象的状态,而不是它的框架。