سلام خدمت همگي:31:
يه سوال تو وي بي داشتم vb6
چطور ميشه تو فرمي به شكل زير عمل كرد
يعني يه شي به زمينه فرم برخورد كنه دوباره بلند شه و بعد دوباره به فرم بخوره و بعد دوباره ....
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام خدمت همگي:31:
يه سوال تو وي بي داشتم vb6
چطور ميشه تو فرمي به شكل زير عمل كرد
يعني يه شي به زمينه فرم برخورد كنه دوباره بلند شه و بعد دوباره به فرم بخوره و بعد دوباره ....
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این باید کمکتون کنه:
مواد لازم: یه تایمر و یه Shape
اسم تایمر و شیپ پیش فرض باشن
کد:
Public xadd As Integer
Public yadd As Integer
Public xball As Integer
Public yball As Integer
Dim a As Integer
Dim b As Integer
Private Sub Form_Load()
xball = Shape1.Width
yball = Shape1.Height
xadd = 50
yadd = 50
Timer1.Interval = 1
End Sub
Private Sub Timer1_Timer()
xball = xball + xadd
yball = yball + yadd
Shape1.Move xball, yball
If xball > Form1.Width - Shape1.Width Or xball < 0 Then
xadd = -xadd
End If
If yball > Form1.Height - Shape1.Height Or yball < 0 Then
yadd = -yadd
End If
End Sub
modirmsool جان... ، دستت درد نکنه...!
ولی می تونستی به جای این که اون متغییر ها رو اونجوری تعریف کنی... ، همه رو از نوع Static می کردی... ، اینجوری با پایان یافتن زیربرنامه ها مقدار خودشون رو حفظ می کردند...!
تشکر...! :46:
ببخشین من متوجه منظورتون نشدم، کدوم متغییرها رو میگین؟نقل قول:
سلام دوست عزيز:40:
ممنون از كمكتون:11:
ولي اگه خوب به عكس نيگا كني مي بيني كه بار اول شكل به زمين مي خوره و بعد دوباره بلند ميشه و بعد دوباره به زمين ميخوره ارتفاع بار دوم هم از بار اول كم تره مي دوني كه چي مي گم شايد يه ورايي با فيزيك مرتبط بشه :d
بازم ممنون:11:
كسي نيست جواب مارو بده بابا لازم داريم حتما
ممنون ميشم كسي جواب بده
شما میخوای به دیواره ها هم بخوره یا نه؟
نقل قول:
نه به ديواره ها برخورد نكنه فقط به زمين بخوره
ممنون از شما:40:
ببینین این خوبه.
سرعتش هم کم میشه و به دیواره هم میخوره.
کد:Public xadd As Integer
Public yadd As Integer
Public xball As Integer
Public yball As Integer
Dim jahesh As Integer
Dim a As Integer
Dim b As Integer
Private Sub Form_Load()
Me.Height = 8000
Me.Width = 9500
jahesh = 0
xball = Shape1.Width
yball = Shape1.Height
xadd = 10
yadd = 50
Timer1.Interval = 1
End Sub
Private Sub Timer1_Timer()
xball = xball + xadd
yball = yball + yadd
Shape1.Move xball, yball
If xball > Form1.Width - Shape1.Width Or xball < 0 Then
xadd = -xadd
End If
If yball < jahesh Then
yadd = -yadd
End If
If yball > Form1.Height - Shape1.Height - (Shape1.Height / 2) Then
yadd = yadd - 6
yadd = -yadd
If jahesh < Me.Height - 1000 Then
jahesh = jahesh + 1000
Else
Shape1.Move xball, Form1.Height - Shape1.Height - (Shape1.Height / 1.5)
Timer1.Enabled = False
End If
End If
End Sub
دوباره اشتباه کردی...!
متغییر ها رو با Static تعریف کن...!
اینجوری دیگه لازم نیست بیرون تابع تعریف شون کنی...!
والا ما که نمیفهمیم چی رو میگین استاتیک باید کنیم. لطفا واضح منظورتون رو بگین. ما اینجا اصلا تابع نداریم!!!:18:نقل قول:
سلامنقل قول:
مطمئني
من كه فكر نميكنم
---------- Post added at 03:36 PM ---------- Previous post was at 03:31 PM ----------
دوست عزيز static مربوط به تابع نميشه براي متغيرها به كار ميرهنقل قول:
عمر متغير استاتيك برابر عمر فرم هستش
منم میدونم اصلا بحث سر تابع و این چیزها نیست من که گفتم تابع نداریم در جواب آقای PLUS بود که گفته بودن:نقل قول:
اینجوری دیگه لازم نیست بیرون تابع تعریف شون کنی...!
حالا خودشونم که توضیح نمیدن آخه برام جالب شده شاید چیز جدیدی باشه که بدرد ما هم بخوره.:18:
سلامنقل قول:
منظورش از تابع اين بوده كه تو خصوصيات تايمر نوشتي ولي اون كه تابع نيست
براي تابu بايد تعريف function داشته باشه نه sub
حتما ايشون منظورشون اين بوده:31:
ببخشید...! :blush:
اشتباه چاپی شد...! :دی
منظورم زیربرنامه بود... نه تابع...! :27:
تشکر...! :11:
حالا بگذریم... اون static ای که گفتین رو میشه توضیح بدین که دقیقا اینجا چه استفاده ای داره؟!!!نقل قول:
بچه ها یه وقت نمیخواین بی خیال شین؟:18:
تا حالا هفت تا پست خارج از بحث زدین. به من ربطی نداره ولی یه چیزی هست به نام پیام خصوصی. جون من ازش استفاده کنید.:11:
امیدوارم دوستان از دست من ناراحت نشند. :40:
سلام
منظورم دوستمان از Static این بود که به جای همچین کدی ...
از همچین کدی استفاده کنید:کد:Private m_Variant As Type
Private Sub Method()
...
m_Variant = y
...
x = m_Variant
...
End Sub
دیگر شرایط کدنویسی و تصمیم برنامه نویس مشخص میکند که کدام روش مناسب تر است.کد:Private Sub Method()
Static m_Variant As Type
...
m_Variant = y
...
x = m_Variant
...
End Sub
در واقع کامپایلر در نهایت متغییر Static داخل یک تابع را به متغییر عمومی در سطح کلاس تبدیل میکند و این دو سینتکس فوق العاده شبیه هم عمل میکنند.
هر دو اینها مقادیرشان را تا وقتی کلاس ظرفشان معتبر و موجود است نگاه میدارند
ولی متغییرهای Static فقط داخل همان تابعی که تعریف شده اند در دسترس هستند.