Shared Objectها در ماکرومديا فلش:
در اين مقاله نحوه ي استفاده از .Shared Objهاي موجود در زبان ActionScript برنامه ي فلش را به شما آموزش خواهم داد. به صورت کلي .Shared Objها مانند Cookieها رفتار ميکنند، با اين تفاوت که براي استفاده از آنها نيازي به مرورگر وب (Web Browser) يا کدنويسي سمت سرور (Server_Side Script) نخواهيم داشت. اين گونه اشياء فقط و فقط مخصوص ماکرومديا فلش ميباشند و ميتوانند به سرعت در رايانه ي کاربر (user) بارگذاري شوند. استفاده از اين اشياء يک روش بسيار مناسب و کارآمد براي حفظ اطلاعات کاربر ميباشد، به نحوي که بعدها بتوان به راحتي به اين اطلاعات دسترسي پيدا کرد.
در مثال زير ميتوانيد نحوه ي عملکرد يک .Shared Obj را به وضوح مشاهده کنيد:
(شايان ذکر است که در قسمت "دموي برنامه"، در بالاي صفحه شما ميتوانيد Source فايل فلشي را که در اينجا به عنوان Sample قرار داده ام را دانلود نمائيد. با اين تفاوت که، به علت استفاده از فونت مخصوص فارسي ساز مريم در Sample فوق و با توجه به اين احتمال که برنامه ي فارسي ساز مريم روي رايانه ي شما نصب نباشد که در اينصورت تمام فونت هاي فايل fla. و متعاقب آن swf. آن به هم خواهد ريخت، متون Source در دسترس شما به صورت انگليسي و با فونت Arial ميباشد، ولي در ساختار اين مثال و حتي در جمله بندي ها هيچگونه تغيير عمده اي ايجاد نشده است...)
طريقه ي ساخت و استفاده از يک .Shared Obj:
1) ابتدا، يک پروژه جديد فلش باز کنيد.
2) حال براي اولين فريم (يا هر فريم ديگري که ميخواهيد داده هاي خود را در آن قرار دهيد) Action Panel ماکرومديا فلش را باز کنيد. (به عبارت ديگر، هنگامي که نشانه ي TimeLine روي اولين فريم و يا هر فريم ديگر که مورد نظرتون ميباشد، قرار داشت؛ در پنل Action شروع به کدنويسي ميکنيد.)
3) با استفاده از متد getLocal يک .Shared Obj ميسازيم، بدين صورت:
user_so = SharedObject.getLocal("user"); |
user_so نام .Shared Obj ماست، که طبيعتا هر نام ديگري ميتواند داشته باشد.
"user" يک Actual Name از فايلي است که ما از HardDrive کاربر Load ميکنيم که ميتواند هر نامي داشته باشد، فقط بايد دقت داشته باشيم که براي بدست آوردن اطلاعات يک داده، دقيقا بايد از نام همان داده استفاده کنيم.
4) اکنون که ما .Shared Obj خود را ساخته ايم بايد چک کنيم که آيا در اين .Shared Obj، هيچ داده اي وجود دارد يا خير؟ نحوه ي انجام اين کار:
if (user_so.data.tname != undefined) {
- //اگر داده اي وجود داشت، اينگونه عمل کن
- }
else {
- //اگر هيچ داده اي وجود نداشت، اينگونه عمل کن
} |
5) اگر در .Shared Obj ما هيچ داده اي وجود نداشت، ميتوانيم به راحتي و با انتساب دادن مقادير دلخواه به خصوصيت data. که يکي از Propertyهاي مهم .Shared Objها ميباشد، آن .Shared Obj را پر کنيم. به اين صورت:
user_so.data.tname = "insert value here";
user_so.data.address = "insert value here";
user_so.data.other = "insert value here"; |
در واقع، user_so.data اطلاعاتي را که از کاربر بدست آمده است، نگهداري ميکند و ما ميتوانيم به راحتي با تخصيص دادن نام ها و مقدارهاي متفاوت برحسب هر شي، يک مقدار مجزا در آن ذخيره کنيم. به عنوان مثال user_so.data.tname مقداري است از .Shared Obj که tname ميتواند هر چيزي باشد و حتي ميتواند به راحتي براي ارجاع به هر مقداري استفاده شود.
6) اگر احيانا در .Shared Obj ما اطلاعاتي از قبل وجود داشت، ميتوانيم به آساني با يک دستور انتساب (assignment command) به آن دسترسي پيدا کنيم. بدين صورت:
name_txt.text = user_so.data.tname;
address_txt.text = user_so.data.address;
other_txt.text = user_so.data.other; |
name_txt نام يک dynamic text field ميباشد که اطلاعات مورد نظر ما را به صورت کاملا پويا نمايش ميدهد و ما ميتوانيم به محظ اينکه .Shared Obj مقداردهي شد، داده را از آن load کنيم...
توسط مثال زير، بيشتر با اين موضوع آشنا ميشويد. همانطور که ميبينيد اين مثال عبارت "30sharp.com ---> Persian Developer Resource" را بر ميگرداند:
user_so.data.tname = "30sharp.com ---> Persian Developer Resource";
user_name = user_so.data.tname;
trace(user_name); |
7) حال در نظر بگيريد که ميخواهيد اطلاعات دلخواهتان را در يک .Shared Obj ذخيره کنيد، اما موفق به انجام اين کار نشديد. و براي اين امر از يک Property ديگر از .Shared Objتان براي ذخيره اطلاعات در آن استفاده کرديد... ببينيم چه اتفاقي خواهد افتاد:
user_so.string = "this won't be saved";
user_so.another = "neither will this"; |
البته که هيچکدام از موارد فوق ذخيره نميشوند! زيرا فلش تنها مقاديري را ذخيره ميکند که در خصوصيت Shared Obj.data مقداردهي شده باشند.
8) براي حذف (پاک) کردن يک .Shared Obj از متد clear استفاده ميکنيم:
همانطور که مشاهده ميکنيد، اين متد .Shared Obj شما را پاک خواهد کرد، بدين صورت که بعد از فراخواني اين متد .Shared Obj شما ديگر وجود نخواهد داشت...
9) در حالت کلي هيچ نيازي نيست که شما نگران ذخيره شدن و نحوه ي ذخيره اطلاعات باشيد، زيرا فلش به صورت اتوماتيک اين کار را انجام ميدهد. اما خوب، براي انجام اين کار به صورت مشهود ميتوانيد از متد flush استفاده کنيد. بدين نحو که:
اين متد داده هاي موجود را در شيء user_so ذخيره خواهد کرد. با تمامه اين اوصاف، همچنان تاکيد ميکنم که ماکرومديا فلش خود به خود، تمامي تغييرات را حتي بعد از بسته شدن (Close) ذخيره ميکند...
خوب، مشاهده کرديد که به چه آساني توانستيد يکي از مهمترين و مورد استفاده ترين اشياء فلش را بياموزيد و از آن استفاده کنيد؟ در انتها به صورت کاملا خلاصه با هم مرور ميکنيم که در اين مقاله چه آموختيد؟
1- در ابتدا آموختيد که چگونه با استفاده از متد getLocal يک .Shared Obj بسازيد؛
2- نحوه ي تشخيص وجود يا عدم وجود داده در .Shared Obj ها را با استفاده از يک if statement آموختيد؛
3- نحوه ي آضافه کردن و پاک کردن اطلاعات در يک .Shared Obj؛
4- آموختيد که با استفاده از متد clear چگونه ميتوان يک .Shared Obj را پاک کرد؛
5- و در انتها آموختيد که چگونه ميتوان با استفاده از متد Flush يک .Shared Obj را ذخيره کرد.
موفق و مويد باشد
منبع: kirupa.com