یک ماشین حساب خیلی ابتدایی با FlashBuilder4

amird

خبرگان انجمن فلش
سلام
راستش نمی دونم چرا امشب حس هیچ کار راست درستی نیومد دیدم راحتترین کاری که می شه کرد اینه که واسه تنوع یه ماشین حساب بنویسم (تا حالا ننوشته بودم) تنها برنامه ای هم که باز داشتم همین FlashBuilder بود دیگه زدم و نوشتم و کامنتش کردم و گذاشتمش اینجا و 2 جای دیگه :)
فقط با ارزش معذرت چون یه خورده این کامنت های فارسی توی این نرم افزار ها قاطی دارند من دیگه هر چیزی مثل اسم متد ها یا متغییر ها هم که انگلیسی نوشته بودم رو توی کامنت هب فارسی نوشتم دیگه خودتون ببخشید نبخشیدید هم ...... :green:
یه چیز دیگه اینه که اصلا حوصلم نشد قشنگش کنم فقط رنگش کردم و امیدورام بدرد یه مبتدیایی مثله خودم بخوره :)
فایل رو که اتچ کردم اینم از کد :

کد:
<?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" width="267" height="368" backgroundColor="#DDDADA" xmlns:ns1="*">
    <s:layout>
        <s:BasicLayout/>
    </s:layout>
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            // در این متغیر ها مقدار عدد هر کلیدی که فشرده می شود قرار می گیرد.            
            private var b0Var:int;
            private var b1Var:int;
            private var b2Var:int;
            private var b3Var:int;
            private var b4Var:int;
            private var b5Var:int;
            private var b6Var:int;
            private var b7Var:int;
            private var b8Var:int;
            private var b9Var:int;
            
            // از این متغیر برای ذخیره عملوند استفاده می کنیم
            private var selectedOperator:String;
            
            //از توابع زیر برای مقدار دهی به متغیر فرست نام استفاده می کنیم
            // فرست نام نام نکست باکسی هست که در صفحه قرار داده ایم
            // چون این متغییر یا تکست باکس حالت پابلیک دارد بنابراین ابتدا در تمامی متدها یا همین توابع زیر از 
            // اون استفاده می کنیمو اون رو هی مقدار دهی می کنیم با ایت کار عدد اول عملیات رو بدست می یاریم
            // بعدش برای اینکه عدد دوم کاربر رو از اون بگیریم مقدار متغیر فرست نام رو با استفاده از تابع سوپ  داخل یک متغییر
            // به نام تمپ قرار می دیم متغیر تمپ این مقدار رو نگه داری می کنه و ما می تونیم مجددا متغییر فرست نام رو 
            // مقدار دهی کنیم .
            protected function b0Func(event:MouseEvent):void
            {
                b0Var = 0;
                firstNum.text += b0Var.toString();
            }
            
            protected function b1Func(event:MouseEvent):void
            {
                b1Var = 1;
                firstNum.text += b1Var.toString();
            }
            
            protected function b2Func(event:MouseEvent):void
            {
                b2Var = 2;
                firstNum.text += b2Var.toString();
            }
            
            protected function b3Func(event:MouseEvent):void
            {
                b3Var = 3;
                firstNum.text += b3Var.toString();
            }
            
            protected function b4Func(event:MouseEvent):void
            {
                b4Var = 4;
                firstNum.text += b4Var.toString();
            }
            
            protected function b5Func(event:MouseEvent):void
            {
                b5Var = 5;
                firstNum.text += b5Var.toString();
            }
            
            protected function b6Func(event:MouseEvent):void
            {
                b6Var = 6;
                firstNum.text += b6Var.toString();
            }
            
            protected function b7Func(event:MouseEvent):void
            {
                b7Var = 7;
                firstNum.text += b7Var.toString();
            }
            
            protected function b8Func(event:MouseEvent):void
            {
                b8Var = 8;
                firstNum.text += b8Var.toString();
            }
            
            protected function b9Func(event:MouseEvent):void
            {
                b9Var = 9;
                firstNum.text += b9Var.toString();
            }
            
            // از توابه زیر برای انجام عملیات های ریاضی برروی اعداد استفاده می کنیم که همشون هم سازوکاری مشابه دارند
            //به این شکل که اول می یان با توجه به عملیات خودشون متغییر سلکتد اپریتور رو مقدار دهی می کنند از این متغییر بعدا در تابع اکوال برای 
            //تععین نوع عملیات استفاده می شه
            // بعد از این کار میان مقدار لیبل اپریتور رو برابر عملگر خودشون قرار می دن بعد از اون هم تابع سوپ رو اچرا می کنند
            // در نهایت هم مقدار خودشون رو درون تکست فیلد دوم قرار می دن تا کاربر یادش نره چی وارد کرد
            // نکته : هموطنور که گفتم تکست فیلد دوم فقط برای اینه که کاربر یادش نره چه عددی وارد کرده وگرنه کاربرد دیگه ای نداره و
            //می تونید پاکش کنید .
            
            //کد مربوط به دکمه جمع
            protected function addFunc(event:MouseEvent):void
            {
                selectedOperator = "+";
                operator.text = "+";
                swap();
                secondNum.text = temp.toString();
            }
            
            //کد مربوط به دکمه ضرب
            protected function mulFunc(event:MouseEvent):void
            {
                selectedOperator = "*";
                operator.text = "*";
                swap();
                secondNum.text = temp.toString();
            }
            
            //کد مربوط به دکمه تفریق
            protected function negFunc(event:MouseEvent):void
            {
                selectedOperator = "-";
                operator.text = "-";
                swap();
                secondNum.text = temp.toString();
            }
            
            // کد مر بوط به دکمه تقسیم
            protected function divFunc(event:MouseEvent):void
            {
                selectedOperator = "/";
                operator.text = "/";
                swap();
                secondNum.text = temp.toString();
            }
            //کد مربوط به دکمه پاک کردن یا کلیر
            protected function clrFunc(event:MouseEvent):void
            {
                operator.text = "";
                firstNum.text = "";
                secondNum.text = "";
                temp = 0;
            }
            //فشردن کلید مساوی این تابع اجرا می شود و با بررسی مقدار متغییر سلکتد اپریتور عمل مورد نظر را انجام می دهد
            protected function equFunc(event:MouseEvent):void
            {
                var resultNumber:int;
                
                if (selectedOperator == "+")
                {
                    resultNumber = temp + int (firstNum.text);
                    secondNum.text = resultNumber.toString();
                    firstNum.text = "";
                }
                    
                else if (selectedOperator == "-")
                {
                    resultNumber = temp - int (firstNum.text);
                    secondNum.text = resultNumber.toString();
                    firstNum.text = "";
                }
                    
                else if (selectedOperator == "*")
                {
                    resultNumber = temp * int (firstNum.text);
                    secondNum.text = resultNumber.toString();
                    firstNum.text = "";
                }
                    
                else if (selectedOperator == "/")
                {
                    resultNumber = temp / int (firstNum.text);
                    secondNum.text = resultNumber.toString();
                    firstNum.text = "";
                }
                
            }
            // با استفاده از این تابع مقدار متغیر سمت راست یعنی فرست نیم درون متغیر تمپ قرار می گیرد تا بتوانیم
            // مجددا و بدون اینکه اطاعات اولیه ای که از کاربر گرفته ایم پاک شوند از متغیر فرست نیم استفاده کنیم
            private var temp:int;
            protected function swap():void
            {                
                temp = int (firstNum.text);
                firstNum.text = "";
            }
            
        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <!-- در زیر کد های مربوط به کامپوننت ها قرار دارند -->
    </fx:Declarations>
    <s:Button x="26" y="245" label="1" width="49" height="47" id="b1" fontFamily="Arial" fontSize="27" chromeColor="#2777E4"/>
    <s:Button x="26" y="245" label="1" width="49" height="47" id="b10" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b1Func(event)"/>
    <s:Button x="26" y="301" label="C" width="49" height="47" id="clr" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="clrFunc(event)"/>
    <s:Button x="140" y="301" label="*" width="49" height="47" id="mul" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="mulFunc(event)"/>
    <s:Button x="140" y="245" label="3" width="49" height="47" id="b11" fontFamily="Arial" fontSize="27" chromeColor="#2777E4"/>
    <s:Button x="140" y="135" label="9" width="49" height="47" id="b9" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b9Func(event)"/>
    <s:Button x="83" y="135" label="8" width="49" height="47" id="b8" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b8Func(event)"/>
    <s:Button x="26" y="135" label="7" width="49" height="47" id="b7" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b7Func(event)"/>
    <s:Button x="140" y="191" label="6" width="49" height="47" id="b6" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b6Func(event)"/>
    <s:Button x="83" y="190" label="5" width="49" height="47" id="b5" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b5Func(event)"/>
    <s:Button x="26" y="190" label="4" width="49" height="47" id="b4" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b4Func(event)"/>
    <s:Button x="83" y="245" label="2" width="49" height="47" id="b2" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b2Func(event)"/>
    <s:Button x="83" y="301" label="0" width="49" height="47" id="b0" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b0Func(event)"/>
    <s:Button x="197" y="135" label="=" width="49" height="47" id="equal" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="equFunc(event)"/>
    <s:Button x="197" y="190" label="\" width="49" height="47" id="div" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="divFunc(event)"/>
    <s:Button x="197" y="245" label="+" width="49" height="47" id="add" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="addFunc(event)"/>
    <s:Button x="197" y="301" label="-" width="49" height="47" id="neg" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="negFunc(event)"/>
    <s:Button x="140" y="245" label="3" width="49" height="47" id="b3" fontFamily="Arial" fontSize="27" chromeColor="#2777E4" click="b3Func(event)"/>
    <s:TextInput x="26" y="47" fontSize="27" width="220" id="firstNum"/>
    <s:TextInput x="82" y="91" fontSize="27" width="163" id="secondNum"/>
    <s:Label x="26" y="96" fontSize="27" width="48" height="31" id="operator"/>
    <s:Panel x="0" y="0" width="268" height="30" enabled="false" title="Darajeh.net's Calculator" borderVisible="false">
    </s:Panel>
    <mx:VRule x="-21" y="1" width="45" height="365"/>
    <mx:VRule x="245" y="1" width="45" height="365"/>
    <mx:HRule x="0" y="342" width="267" height="45"/>
</s:Application>
راستی من اولش می خواستم با یه روش دیگه کار کنم برای همین متغیر ها رو از جنس int گرفتم ولی با این روش می شه اونها رو string هم گرفت .
موفق باشید
 

پیوست ها

  • SimpleCalculator.zip
    23.1 کیلوبایت · بازدیدها: 36
آخرین ویرایش:

delcoock

Active Member
ممنون
یک جمع و تفریق ساده را میشه آموزش بدید؟
دو یا سه یا ... ورودی داشته باشم و در باکسی این ورودیها جمع شوند
 

amird

خبرگان انجمن فلش
ممنون
یک جمع و تفریق ساده را میشه آموزش بدید؟
دو یا سه یا ... ورودی داشته باشم و در باکسی این ورودیها جمع شوند
سلام
توی همین آموزش گذاشتم . ببیند هر چندتا باکسی که باشه شما می تونید lقادیر باکس ها رو به int تبدیل کنید مثل زیر . :
PHP:
int(textBox1.text)
بعدش می تونید این مقادیر رو توی متغیر قرار بدید و هر عملگری رو که خواستید روش اعمال کنید به مثال زیر دقت کنید :
PHP:
var num1:int = int (textBox1.text);
var num2:int = int (textBox2.text);
trace (num1+num2)
این کد مقادیر تو باکس شما رو می گیره و با هم جمع می کنه و در خروجی نشون می ده.
موفق باشید
 

amird

خبرگان انجمن فلش
دوست عزیز لطف کنید پستتون رو از اینجا پاک کنید چون هیچ ربطی به مبحث من نداره من توی تاپیک خودتون می گم .
موفق باشید
 

جدیدترین ارسال ها

بالا