واضح آرشیو وب فارسی:سایت ریسک: مشکل در لود کردن! شلغم نپخته 29 تير 1388, 17:27با سلام خدمت تمام اساتید، یه فایل متنی رو با این کد لود میکنم: var Load:URLLoad = new URLLoad(); var request:URLRequest = new URLRequest("p.txt"); try { Load.load(request); } catch (error:Error) { trace("n"); } Load.addEventListener(Event.COMPLETE, CH); function CH(event:Event) { var Load:URLLoad = URLLoad(event.target); var pp:String = Load.data; } trace(pp); اما بیرون از function نمیتونم از متغییر استفاده کنم. علت چیه؟ بسیار سپاسگزارم. kiarash.M 29 تير 1388, 18:42متغییر ها در همیشه داخل فضاهای بین آکولاد ها " کوئری بریس ها " ثبت می شوند که به اون فضا namespace میگن و خارج اون کار نمی کنند .. شلغم نپخته 29 تير 1388, 20:13به !!!!!!!! اینکه فایده ای نداره ... خوب به چه دردی میخوره؟ حالا هیچ راهی نداره بکشیمش بیرون؟ kiarash.M 29 تير 1388, 23:14منتغییر رو بیرون تعریف کن .. شلغم نپخته 30 تير 1388, 10:43من میخوام از متغییرهایی که اون داخل هستند، استفاده کنم البته بیرون ! BioDread 30 تير 1388, 11:02تو یه نوع ساختی دیگه نباید بسازی دیگه تو محتویاتشو میخوایی؟ var Load:URLLoad = URLLoad(event.target.content); ببین درست میشه؟ BioDread 30 تير 1388, 11:03اصلا چی نوشتی معلومه؟ شلغم نپخته 30 تير 1388, 11:40سلام، کد صحیح: var Load:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("p.txt"); Load.load(request); Load.addEventListener(Event.COMPLETE, CH); function CH(event:Event) { var Load:URLLoader = URLLoader(event.target); var pp:String = Load.data; trace(pp); } از متغییر pp نمیشه بیرون از آکولاد استفاده کرد! ++Hadi++ 30 تير 1388, 17:35سلام شلغم جون متغیر pp از نوع محلی می شه. ببین ما یه تابع یا فضای اصلی داریم که در اون الباقی توابع رو فراخونی می کنیم.هر متغیری که در تابع اصلی تعریف بشه در همه توابع قابل دسترسی هست و هر تابعی که در دیگر توابع تعریف بشه فقط و فقط در اونا قابل قابل دسترسی هست و به اون می گن تابع محلی یا local variable. فقط کافیه اون var pp رو به این صورت تعریف کنی: var Load:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("p.txt"); var pp:String; Load.load(request); Load.addEventListener(Event.COMPLETE, CH); function CH(event:Event):void { var Load 2:URLLoader = URLLoader(event.target); pp = Load 2.data; trace(pp); } این قانون فقط به اکشن ربطی نداره . این قانون تقریبا در همه زبونها هست و بهش متغیر محلی یا local variable می گن. شما اگه بخوای یه متغیر رو در هر تابع و در هر جای برنامه داشته باشی باید اونو در فضای اصلی برنامه تعریف کنی (var pp:string) نه در بدنه یه تابع فرعی. در ضمن متغیر های محلی دوام زیادی ندارن و وقتی از تابع بیرون بیای دیگه مقدارشون از بین می رن. و تا اونجایی که از زبون ++C یادمه فک کنم در فراخوانی بعدی تابع مذکور دیگه مقدار قبلی اون دیگه از بین می ره. شلغم جون اگه با این قضیه مسئله داشته باشی باید بگم بهتره دور برنامه نویسی رو خیط بکشین چون تقریبا در همه زبونها این مسئله وجود داره.همچنین با تعریف اون در بالای برنامه فکر نکنم آنچنان تفاوتی در روند کارتون بوجود بیاد. در ضمن برای خوانایی بهتر برنامه و با کلاس تر شدن کارتون خوبه که نوع تابع رو در تعریف اون مشخص کنی. بای... شلغم نپخته 30 تير 1388, 19:57سلام hadimetall جان دستت درد نکنه این همه توضیح دادی ... چیزایی رو که گفتی یه چیزایی ازشون میدونستم، اینجا گفتم شاید راهی برای بیرون کشیدنش باشه ... مثل اینکه راهی نیست !!! میگم hadimetall چه حوصله ای داری. جوابات تو تاپیک های دیگه رو دیدم خیلی طولانیه !!! ولی دستت درد نکنه استفاده کردیم ... خدا قوت ++Hadi++ 31 تير 1388, 12:06دیگه با توضیحات کامل جا واسه سوال و ابهام نمی مونه نه .... خوب بهتره وقتی می شه با یه پست و بیان کامل اون تایپیکو جمع و جورش کرد این کارو کرد و چه نیازی هست که ما یه سوال ساده رو به یه تومار و کتاب رمان بلند تبدیل کنیم برادر شلغم جان ... من خودم با توضیحات کامل و اضافه به یه مورد اشراف کامل پیدا می کنم و اینو واسه آموزشو توضیح ترجیح می دم. بای...
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 370]