【问题标题】:如何在对象布尔值上获取实例名称,哪个值为真
【发布时间】:2021-07-14 12:01:39
【问题描述】:

我可能做得比我能做的更远 因为我三天前刚学过actionscript。

我正在做一个简单的测验,我手动选择了答案,而不是使用 Adob​​e Animate 提供的组件。因为我可以随心所欲地装饰外观。

我制作了名为 answer1 和 answer2 的影片剪辑按钮,然后为了检查是否选择了答案,我添加了一个布尔值。

e.currentTarget.selected = true;
e.currentTarget.selected = false;

这是我的回答按钮代码

function clicked(e:MouseEvent): void {
    if (e.currentTarget == answer1) {
        if (e.currentTarget.currentFrame == 1 ) {
        e.currentTarget.nextFrame(); // hover/active button
        e.currentTarget.selected = true;
        } else {
        e.currentTarget.prevFrame(); // hover/active button
        e.currentTarget.selected = false;
        }
        answer2.selected = false;
        answer2.prevFrame();
    } else if (e.currentTarget == answer2) {
        if (e.currentTarget.currentFrame == 1 ) {
        e.currentTarget.nextFrame(); // hover/active button
        e.currentTarget.selected = true;
        } else {
        e.currentTarget.prevFrame(); // hover/active button
        e.currentTarget.selected = false;
        }
        answer1.selected = false;
        answer1.prevFrame();
    }
}

然后我做了一个按钮来检查答案。但是直到这里我不知道如何检查已选择的对象

function checkAnswer(e: MouseEvent): void {
trace(answer1.selected.name)
}

我只想如何获取值为 true 的布尔对象的实例名称。

【问题讨论】:

  • 只需 trace(answer1.selected); 就足够了。布尔值没有名称。
  • @Organis 但是如果我跟踪它,我如何获取影片剪辑实例名称?
  • 试试 trace(answer1.name); 我猜? nameMovieClip 本身的属性,而不是它的 Boolean 字段。

标签: actionscript-3 flash actionscript adobe-animate


【解决方案1】:

顺便说一句,如果您打算将这些选择器用作 radiogroup(一组单选按钮,只允许同时选择其中一个),您最好这样设计:

function clicked(e:MouseEvent): void
{
    // Define a radiogroup.
    var aGroup:Array = [answer1, answer2];
    
    // Iterate over the group elements and process the click.
    for each (var anAnswer:MovieClip in aGroup)
    {
        if (anAnswer == e.currentTarget)
        {
            anAnswer.selected = !anAnswer.selected;
        }
        else
        {
            anAnswer.selected = false;
        }
        
        // Adjust the current frame according to "selected" value.
        if (anAnswer.selected)
        {
            anAnswer.nextFrame();
        }
        else
        {
            anAnswer.prevFrame();
        }
    }
}

为什么?首先,即使有 2 个选项,它仍然比你的短。其次,考虑添加 2 个以上的选项,比如 10 个?我的代码只需要扩展选项的 Array,你的将比现在长 5 倍。

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    相关资源
    最近更新 更多