حفظ مقادیر یک متغیر

rostam

Member
با سلام
اگر فرش کنیم که یک موی کلیپ داشته باشیم که در 20 فریم اجرا میشود و در فریم 20 مجددا به فریم یک goto میکند و در فریم یک، یک متغیر ععدی تعریف شده که میخواهم هر بارکه دوباره به فریم یک برمیگردد مقدار آن یک واحد افزایش یابد .اما با رسیدن به فریم اول دوباره مقداره اولیه خود فلش که فکر کنم 0 است میگره .باید چی کار کنم ؟ که مقدارش به حالت اول بر نگرده ؟ متشکرم
د
 

BioDread

Banned
ان متغیر رو در root درست کن
و در فرم اول ان مووی بنویس
برای as2
_root.myvalu++
 

sizanjavad

کاربر فعال
براي as2 هم مي توني متغير رو به صورت سراسري تعريف كني كه در طول كل برنامه بهش دسترسي داشته باشي. مثلا
PHP:
 _global.intro=0;
 

kiarash.M

Active Member
اگر میخواهی خودت رو درگیره سطح دسترسی متغیر ها کنی !!
مقادیرت رو بریز تو یه textfiled که visiblity ایش false باشه ..
اون با آدرس دهی دقیق همجای کارت بهش دسترسی داری !

و در همه زبان ها با ++my_var یا my_var += 1 یا my_var = my_var+1

این اصول کد نویسی تو همه ی زبان هاست .
 

++Hadi++

Active Member
سلام
تو as3 چطوری می شه متغیر global داشت کسی می دونه؟
من یه متغیر یا تابع می خوام تو یه فریمی تعریف کنم که تو as3 تو همه فریمها و مووی کلیپ های فایل سورس اونو بشناسیم و ازهمون استفاده کنیم.
مثلا اونو تو یه مووی تعریف کنم و تو یه مووی دیگه کم و زیادش کنم.
چطور می شه این کارو کرد؟
 

sizanjavad

کاربر فعال
براي اين كار شما ابتدا يه كلاس با يه كانتاينر استاتيك مي سازين. تو مثال از نوع object تعريف كرديم كه بتونيم در موقع اجرا ، property بهش اضافه كنيم (از هر مقدار و هر نوعي) و اگه خواستيم اونا رو تغيير بديم. حالا اگه اينو نخواستين يه از نوع متغير معمولي تعريفش كنين.
PHP:
package a
{
    public class GlobalVarContainer 
    {
        public static var vars:Object = [];
    }
}


حالا شما در هر كلاسي كه بخواين ازش استفاده كنين اون رو به راحتي import و بقيه كارا رو روش انجام بدين.

PHP:
package 
{
    import flash.display.Sprite;
    import a.GlobalVarContainer;
    public class Main extends Sprite
    {   
        public function Main()
        {   
            GlobalVarContainer.vars.groupingID  = 1 
            GlobalVarContainer.vars.mediaID     = 4 
            GlobalVarContainer.vars.facultyID   = 5 
            GlobalVarContainer.vars.studentID   = 2 
        }
    }
}


اين راه حل اصولي و شي گراش!

براي as2 كارها هم به كلاس خيلي ساده كه بر پايه مثال بالا نوشته شده هست كه اتچ مي كنم (خودم ننوشتم ها!!!). با اين كلاس ديگه مي تونين در as3 هم مثل global در as2 كار كنين
 

پیوست ها

  • global.zip
    37.4 کیلوبایت · بازدیدها: 12
آخرین ویرایش:

BioDread

Banned
دوست من
دستت درد نکنه
عجب روشی
راستشو بخوای به مخ من نمیرسید که از کلاس برای ساختن متغییر گلوبال استفاده کنم

این به دانشم از as3 اضافه شد!
تشکر
 

++Hadi++

Active Member
آقا جواد گل دستت درد نکنه حقا استاد as3 هستی.
یه مسئله ای هیچ راه دیگه ای غیر از مثالت وجود نداره مثل اکشن 2 راحت و بدون استفاده از کلاس و اینهمه دغدغه این کارو بکنی؟
یه چیز دیگه !! نه دو چیز دیگه :
sprite چه کلاسیه ؟ همچنین globalvars تو قسمت import حتما لازمه ؟
چون اسم بسته a هست و اسم کلاس GlobalVarContainer .
آیا عنوان globalVars چیزی هست که به متغیر global دلالت می کنه و تو مثالهای اینجوری باید اعمال شه ؟
 

sizanjavad

کاربر فعال
یه مسئله ای هیچ راه دیگه ای غیر از مثالت وجود نداره مثل اکشن 2 راحت و بدون استفاده از کلاس و اینهمه دغدغه این کارو بکنی؟
as3 كاملا بر پايه اصول شي گرايي وكلاس ها كار مي كنه و شايد اولش سخت باشه ولي بعد از يه مدتي آدم مي فهمه كه واقعا كارش راحت تر از قبل شده. شايد راه ديگه اي داشته باشه كه من نمي دونم. در ضمن فايل اتچ دستور معادل as2 رو شبيه سازي كرده ديگه فقط شما يه كلاس اضافه مي كني

sprite چه کلاسیه ؟
من بهش مي گم باباي movieclip. چون movieclip از اين كلاس به ارث مي بره. به بيان ساده همون موي كليپ ولي بدون تايم لاين!!
ما تو خيلي از كداي اكشن اسكريپت از موي كليپ هاي تك فريمي استفاده مي كنيم. تو as3 اين كلاس تهيه شده به همين منظور كه شما ديگه براي مووي كليپ هاي تك فريمي از اين كلاس استفاده كني.
همچنین globalvars تو قسمت import حتما لازمه ؟
در اين مورد ببخشين من سوتي دانم. چون اين يه تيكه از يه مثال كلي بوده كه من براي اين سوال شما خوردش كردم. اصلاحش كردم
 
آخرین ویرایش:

++Hadi++

Active Member
جواد جان لطف کردی خیلی خیلی ممنون...
نه من با کلاسیک بودن مشکلی ندارم . من خودم برنامه نویس net. هستم و رشته ام نرم افزاره و از این قلم چیزا یه چیزایی حالیمه .
در هر صورت ممنونتم.
 

sizanjavad

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

++Hadi++

Active Member
سلام آقا جواد
آیا کلاس رو فقط می شه تو یه فایل as. نوشت یعنی تو خود فریم ها نمی شه نوشت .
اگه جوابتون نه هست آیا می شه کلاس رو تو فریم import کرد و تو فریم مقدار دهی کرد ؟
یعنی تو یه فایل fla. که همخه چیز eventListener داره آیا می شه کلاسو import کرد و به متغیر سراسری دسترسی داشت و اونو عوض کرد ؟
بعد وقتی کلاسو تو as. نوشتیم چه راهی هست که سه مجموعه فایل as. رو که تو یه فولدر قرار گرفتن رو تو فایل فلش مدیریت کنیم تا همه import شن .من شنیده بودم تو قسمت publish settin و قسمت actionscript setting می شه فولدری رو که توش پر از فایل های کلاس خارجی هست رو آدرس بدیم تا همه import شن.
 

++Hadi++

Active Member
می شه بهم جواب بدین لطفا...
اگه تک تک هم جواب بدین می شه ...
 

sizanjavad

کاربر فعال
سلام آقا جواد
عليك سلام:)

آیا کلاس رو فقط می شه تو یه فایل as. نوشت یعنی تو خود فریم ها نمی شه نوشت .
نه نمي شه . فقط در يه فايل external با پسوند as و حتما داخل package

آیا می شه کلاس رو تو فریم import کرد و تو فریم مقدار دهی کرد ؟

ما وقتي كه تو doucumentclass در قسمت property كلاسي تعريف مي كنيم مي تونيم مقدار دهيش كنيم و از روش شي بسازيم و برا constructor اش مقدار بفرستيم. در ضمن مي توني تو فريم هم import كني. حتي با دستور معروف include هم مي توني كلاس رو به پروژت اضافه كني

وقتی کلاسو تو as. نوشتیم چه راهی هست که سه مجموعه فایل as. رو که تو یه فولدر قرار گرفتن رو تو فایل فلش مدیریت کنیم تا همه import شن .من شنیده بودم تو قسمت publish settin و قسمت actionscript setting می شه فولدری رو که توش پر از فایل های کلاس خارجی هست رو آدرس بدیم تا همه import شن.

يه راهش اينه كه يه كلاس رو به عنوان Public تو پروژه اضافه كني و تو اون كلاس بقيه كلاسا رو import كني. البته اگه كلاسا رو خودت نوشته باشي و از هم ارث ببرن!!!
راه خودتم كه درسته ديگه!!!
 
بالا