1

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

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

对于可以选择的每种食物,我们有几个 MOVIECLIPS 作为按钮(每个动画剪辑都有 3 种状态:非活动、关闭和选择),但是当我们转到另一个帧在菜单的不同页面之间切换时,我们会丢失前一个所做的选择页...

当切换到另一个页面时,我们如何保存影片剪辑的状态?

谢谢您的帮助!

4

1 回答 1

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;
        }
    }
}

然后,您可以拥有一个设置按钮状态的函数,该按钮可能会放置在您的舞台上。我假设,因为您使用的是 MovieClips,所以对于不同的状态,您有不同的帧。我假设“1”未选中,“2”已选中,MovieClip 是“pizzaButton”。

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

import food;
function updateButton():void
{
    var flag:Boolean = food.checkFood();
    if(flag)
    {
        pizzaButton.gotoAndStop(2);
    }
    else
    {
        pizzaButton.gotoAndStop(1);
    }
}

顺便说一句,亚当在评论中是绝对正确的。为此,SimpleButtons 可能比 MovieClips 更有效,但这取决于您拥有的按钮的性质。我会调查一下。此方法在大部分情况下都适用于 SimpleButtons,除了您的代码会更改对象的状态,而不是其框架。

于 2013-05-27T18:22:33.603 回答