我只是对编码很感兴趣,这在很大程度上要归功于这个网站...但我仍然是菜鸟,还有另一个菜鸟问题。
我已经创建了一个简单的计算器,我的孩子可以使用它来处理他们的数学技能,但我不知道如何循环它以便它会去10次。我理解for-else和until循环的语法,但不知道在循环中放入什么。
最简单的方法(我认为)可能是使用组件或类(不确定使用哪个)然后调用它。
那就是说,这是我的基本代码:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import spark.components.FormItem;
import spark.components.TextInput;
public var n_1:Number = Math.round(Math.random() * 100)
public var n_2:Number = Math.round(Math.random() * 100)
public var ttl:Number
public var answer:Number
public var n_right:int
public var n_total:int = 1
protected function check_bn_clickHandler(event:MouseEvent):void
{
n1.text = n_1.toString();
n2.text = n_2.toString();
ttl = Number(total.text);
answer = n_1 + n_2
if(ttl == answer) {
yes_no_lbl.text = "YES, click NEXT!";
n_right = n_right + 1
} else {
yes_no_lbl.text = "NO, try again!";
}
}
protected function next_bn_clickHandler(event:MouseEvent):void
{
// reset variables
n_1 = 0
n_2 = 0
ttl = 0
// use component here????
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Form id="Calc" x="28" y="27">
<s:FormItem label="1st #">
<s:Label id="n1" text = "{n_1.toString()}"/>
</s:FormItem>
<s:FormItem label="2nd#">
<s:Label id="n2" text = "{n_2.toString()}"/>
</s:FormItem>
<s:FormItem label="Total=">
<s:TextInput id="total" prompt="Total"/>
</s:FormItem>
</s:Form>
<s:Button id="check_bn" x="273" y="124" label="Check" click="check_bn_clickHandler(event)"/>
<s:Button id="next_bn" x="377" y="123" label="Next" click="next_bn_clickHandler(event)"/>
<s:Form id="display_correct" x="649" y="27">
<s:FormItem label="# Correct">
<s:Label id="lbl_ratio" text="{n_right}/{n_total} "/>
</s:FormItem>
</s:Form>
<s:Label id="yes_no_lbl" x="462" y="83" width="184" height="61"/>
</s:Application>
那么我在组件中放了多少这个,以及我在应用程序中留下了多少?或者是否有“重绘”这样的功能可以再次运行应用程序,但只留下我的长期变量(n_right等)?
再次感谢!
答案 0 :(得分:1)
好像你想要做的就是生成一个新的随机问题?
protected function next_bn_clickHandler(event:MouseEvent):void
{
if (yes_no_lbl.text == "YES, click NEXT!")
{
// reset variables
n_1 = Math.round(Math.random() * 100);
n_2 = Math.round(Math.random() * 100);
total.text = "";
yes_no_lbl.text = "";
n_total++;
}
}
这会生成两个新的随机数,清除yes_no_lbl
,清除total
,并递增n_total
。我添加了一个逻辑检查,确保在提出新问题之前问题得到了正确回答。
您还应该制作n_1
/ n_2
个变量[Bindable]
,因为这会确保标签更新以在更改时显示新值。
答案 1 :(得分:1)
你需要(至少:)两件事:
1)当你生成下一个问题时,你需要生成两个新的随机数(正如Sam刚刚指出的那样)
2)制作包含随机数的变量[Bindable]。否则,您的文本框将不会使用其新值进行刷新。 (只需在声明中的每个[Bindable]
之前写下var
[Bindable] public var n_1:Number = Math.round(Math.random() * 100)
[Bindable] public var n_2:Number = Math.round(Math.random() * 100)