درود مهمان گرامی! ثبت نام

جشنواره بازیسازی پرومیکرز

امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
تابعی در C# که هر لحظه فراخوانی میشود ؟
#1
همچین تابع یا اونتی وجود داره و اگه داره اون چیه ؟
مثل update در یونیتی و xna

لطفا اینو ببین :
http://www.aparat.com/v/5c22f0251fdc3d23...b2d2313732
---------
resim
پاسخ
#2
میشه در مورد کاری که داری انجام میدی و این تابع رو داخلش نیاز داری توضیحی بدی؟
فک کنم توی XNA اینجوری باشه تابع آپدیت:
کد:
class Program
    {
        static bool Quit;
        static void Main(string[] args)
        {
            Quit = false;
            while (!Quit)
            {
                Update();
            }
        }

        static void Update()
        {
            //Do Something
        }

        static void QuitGame()
        {
            Quit = true;
        }
    }
البته به این سادگی نیستشا، پیشرفته تر از اینه.
اگه توی ویندوز فرم میخوای چنین حلقه ای بزاری کد زیر رو انتهای حلقه بزار که برنامه ت هنگ نکنه:
کد:
Application.DoEvents();
پاسخ
 سپاس شده توسط mohammadali1375 ، mohammadrezaamini
#3
دقیقا چجوری ازش استفاده کنم ؟
من میخوام یک تابع مثل Update توی xna داشته باشم که مدام بروز رسانی بشه. برای میکرو کنترلر از while(1) استفاده میشه بدون این که هنگی درکار باشه. توی xna هم مدام بروز رسانی میشه. برای ویندوز فرم اپلیکشن میخوام.
مثلا اگه امکانش هست یه برنامه بنویسید که یک متغیر مدام ++ بشه و مقدارش توی یک textbox مدام تغیر کنه و وقتی مثلا به 100 رسید دوباره صفر بشه و در عین حال بقیه کلید ها و ... کار کنه
لطفا اینو ببین :
http://www.aparat.com/v/5c22f0251fdc3d23...b2d2313732
---------
resim
پاسخ
#4
برای این کاری که تو میگی از تایمر ها می تونی استفاده کنی .
برای یه حلقه بازی هم اگه فقط while بزاری همین طوری می ره و می هنگه . باید از System.Threading.Thread.Sleep
مثلا این یه حلقه هست البته اینم کامل نیست .برای منظم اپدیت بشه باید زمانی که صرف پردازش کدها شده رو بدست بیاری و ..
یکم کار داره .
کد:
static void Main(string[] args)
        {
            bool exit = false;
            while (!exit)
            {
                GameUpdate();
                System.Threading.Thread.Sleep(1000);
            }
        }
XEngine
پاسخ
 سپاس شده توسط mohammadali1375 ، mohammadrezaamini
#5
کد پیوست شده یه نمونه در ویندوز اپلیکیشن سی شارپ هست.
میبینید که فرم هنگ نمی کنه.


فایل‌(های) پیوست شده
.zip   While.zip (اندازه: 54.48 KB / تعداد دفعات دریافت: 9)
پاسخ
 سپاس شده توسط mohammadali1375 ، bazebaz ، mohammadrezaamini
#6
دمت گرم فهمیدم این Application.DoEvents چی کار می کنه . پس اینطوریه !!angel/
XEngine
پاسخ
#7
(5/5/1391، 12:10 عصر)bazebaz نوشته است: برای این کاری که تو میگی از تایمر ها می تونی استفاده کنی .
برای یه حلقه بازی هم اگه فقط while بزاری همین طوری می ره و می هنگه . باید از System.Threading.Thread.Sleep
مثلا این یه حلقه هست البته اینم کامل نیست .برای منظم اپدیت بشه باید زمانی که صرف پردازش کدها شده رو بدست بیاری و ..
یکم کار داره .
کد:
static void Main(string[] args)
        {
            bool exit = false;
            while (!exit)
            {
                GameUpdate();
                System.Threading.Thread.Sleep(1000);
            }
        }

منم قبل آهرین پستت میخواستم بگم دمت گرم الان همه میگن دمت گرم teeth
خیلی دنبال System.Threading.Thread.Sleep(1000); بودم همیشه میگفتم چرا c# یه sleep مثل c++ نداره . فکر میکدم فقط باید از yield استفاده کنم. الان یه مشکل بزرگ رو حل کردی (غیر مشکل فعلی)

(5/5/1391، 01:30 عصر)dll1024 نوشته است: کد پیوست شده یه نمونه در ویندوز اپلیکیشن سی شارپ هست.
میبینید که فرم هنگ نمی کنه.
دم شما هم گرم این سورس رو دیدم مشکل رو فهمیدم . من توی form_load استفاده میکردم برای همین نمیشد

از هردو دوست بزرگوار ممنونم
لطفا اینو ببین :
http://www.aparat.com/v/5c22f0251fdc3d23...b2d2313732
---------
resim
پاسخ
#8
(4/5/1391، 11:48 عصر)mohammadali1375 نوشته است: همچین تابع یا اونتی وجود داره و اگه داره اون چیه ؟
مثل update در یونیتی و xna
اینم میشه
کد php:
While(this.visible == true)
{
//کار
}
:-
B:-B:-B:-
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  سی شارپ هم نیاز به فراخوانی دارد؟ bagher2g 5 1,848 24/5/1391، 11:06 صبح
آخرین ارسال: bazebaz



کاربرانِ درحال بازدید از این موضوع: 1 مهمان