Компоненты и циклы Flash Builder - PullRequest
0 голосов
/ 08 марта 2012

Я только что освоил программирование, во многом благодаря этому сайту ... но я все еще noob и у меня есть еще один вопрос noob.

Я создал простой калькулятор, который мои дети могли бы использовать для изучения математических навыков, но я не знаю, как его зациклить, чтобы он работал 10 раз. Я понимаю синтаксис for-else и цикла before, но не уверен, что помещать в сам цикл.

Самым простым способом сделать это (я думаю) может быть использование компонента или класса (не знаю, какой именно), а затем вызов его.

Тем не менее, вот мой основной код:

<?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 и т. Д.) В покое?

Еще раз спасибо!

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Вам понадобятся (как минимум, :) две вещи:

1) Когда вы создадите следующую задачу, вам нужно сгенерировать два новых случайных числа (как Сэм только что указал)

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)
1 голос
/ 08 марта 2012

Похоже, все, что вы хотите сделать, это создать новый случайный вопрос?

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], поскольку это обеспечитметки обновляются для отображения нового значения при его изменении.

...