如何在值为真的对象布尔值上获取实例名称
how to get instance name on object boolean which value is true
我可能已经走得更远了
因为我3天前才学的actionscript
我正在做一个简单的测验,我手动选择答案,而不是使用 Adobe 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 的布尔对象的实例名称。
顺便说一句,如果您希望这些选择器作为单选按钮(一组单选按钮,同时只能选择其中一个),您最好这样设计:
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 倍。
我可能已经走得更远了 因为我3天前才学的actionscript
我正在做一个简单的测验,我手动选择答案,而不是使用 Adobe 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 的布尔对象的实例名称。
顺便说一句,如果您希望这些选择器作为单选按钮(一组单选按钮,同时只能选择其中一个),您最好这样设计:
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 倍。