ورود

View Full Version : حركت دادن اشيا با استفاده از تايمر



vafanezhad
یک شنبه 07 اسفند 1390, 22:30 عصر
سلام دوستان
چطور مي تونم يه برنامه بنويسم كه 4 تا كامند داشته و روي هر كدوم كه يك بار كليك كردي با استفاده از تايمر شي مورد نظر(عكس ويا ليبل)اينطرف و اون طرف بره
مثال:روي كامند بالايي كه كليك كردي شي بالا بره
ممنون ميشم اگه توضيح كامل بذيذ
البته يه چيزايي نوشتم ولي فقط به راست ميره83361

shahabbasic
یک شنبه 07 اسفند 1390, 22:44 عصر
خیلی سادست با left و top اشیا کار کن فعلا نمیتونم برات سورس بذارم شرمنده

vafanezhad
یک شنبه 07 اسفند 1390, 22:46 عصر
بابا منم بلدم با لفت و تاپ اينا كار كنم فقط هر كاري مي كنتم فقط كامند جلوييش كار مي كنه

program2vb
دوشنبه 08 اسفند 1390, 13:41 عصر
بابا منم بلدم با لفت و تاپ اينا كار كنم فقط هر كاري مي كنتم فقط كامند جلوييش كار مي كنه

میشه کامل توضیح بدی چی میخوای من متوجه منظورت نشدم ؟

میخوای وقتی کامند رو بزنی شیپ بره بالا

Shape1.top = shape1.top -100

برای اینکه بره پایین

Shape1.top = shape1.top +100

vafanezhad
دوشنبه 08 اسفند 1390, 18:48 عصر
سلام دوست عزيز
ممنوم ميشم اگه يه نگاهي به فايل ضميمه بندازيد
به عنوان مثال من تصويري دارم و مي خوام تايمر بذارم روش تا با يك بار كليك روي كامند يك به سمت راست ،روي كامند 2 به سمت چپ و...بره و اين كا رو كردم ولي فقط به سمت راست ميره و و قتي كدي براي سمت چپ مي نويسم كار نمي كنه. ممنون ميشم اگه سريعتر بهم توضيح بديد.

program2vb
دوشنبه 08 اسفند 1390, 21:15 عصر
عزیز من فایلتو نگاه کردم

میتونی از کد زیر استفاده کنی : البته میتونی از تایکرم استفاده کنی


Private Sub Down_Click()
Chek "Down"
End Sub

Private Sub left_Click()
Chek "left"
End Sub

Private Sub Right_Click()
Chek "Right"
End Sub
Private Sub Up_Click()
Chek "up"
End Sub
Private Sub Chek(cmd As String)
Select Case cmd
Case "up"
Shape1.Top = Shape1.Top - 10
Case "Down"
Shape1.Top = Shape1.Top + 10
Case "left"
Shape1.left = Shape1.left - 10
Case "Right"
Shape1.left = Shape1.left + 10
End Select
End Sub



موفق و پیروز باشی یا علی

barnamenevisforme
دوشنبه 08 اسفند 1390, 21:39 عصر
برای مشخصهcontrol.left باید یه حد اکثر تعریف کنی،با هر بار تیک خوردن تایمر یه مقدار به left اضافه میشه.هر بار چک کن اگه مشخصه left بزرگتر از مقدار مورد نظر بود حالا باید مقدار یه متغیر مثلا به نام right_to_left_movementکه میتونه از نوعboolean باشه رو به false تغییر بدی و حالا اگه مقدار این متغیر true بشه به left hqhti ;k و اگر false باشه به عکس.
پیروز باشید

program2vb
سه شنبه 09 اسفند 1390, 08:41 صبح
برای مشخصهcontrol.left باید یه حد اکثر تعریف کنی،با هر بار تیک خوردن تایمر یه مقدار به left اضافه میشه.هر بار چک کن اگه مشخصه left بزرگتر از مقدار مورد نظر بود حالا باید مقدار یه متغیر مثلا به نام right_to_left_movementکه میتونه از نوعboolean باشه رو به false تغییر بدی و حالا اگه مقدار این متغیر true بشه به left hqhti ;k و اگر false باشه به عکس.
پیروز باشید


عزیزم منظورت این بود :


Private Const Total As Long = 100
Private cmd As String
Private Sub Down_Click()
cmd = "Down"
Timer1 = True
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Tag = 0
Timer1.Interval = 10
End Sub
Private Sub left_Click()
cmd = "left"
Timer1 = True
End Sub
Private Sub Right_Click()
cmd = "Right"
Timer1 = True
End Sub
Private Sub Up_Click()
cmd = "up"
Timer1 = True
End Sub
Private Sub Timer1_Timer()
Timer1.Tag = Timer1.Tag + 1
If Timer1.Tag >= Total Then Timer1.Enabled = False: Timer1.Tag = 0: Exit Sub
Select Case cmd
Case "up"
Shape1.Top = Shape1.Top - 10
Case "Down"
Shape1.Top = Shape1.Top + 10
Case "left"
Shape1.left = Shape1.left - 10
Case "Right"
Shape1.left = Shape1.left + 10
End Select
End Sub


آخه این همه توضیح نداشت که . یه روش خیلی ساده نیازی هم به true , false کردن نداره . البته ناراحت نشیا . موفق و پیروز باشی . یا علی

barnamenevisforme
دوشنبه 15 اسفند 1390, 14:49 عصر
آخه این همه توضیح نداشت که . یه روش خیلی ساده نیازی هم به true , false کردن نداره . البته ناراحت نشیا . موفق و پیروز باشی . یا علی
نه دوست عزیز اتفاقا از دقت نظر شما متشکرم.

MiladMR
شنبه 12 فروردین 1391, 05:27 صبح
سلام دوست عزيز
ممنوم ميشم اگه يه نگاهي به فايل ضميمه بندازيد
به عنوان مثال من تصويري دارم و مي خوام تايمر بذارم روش تا با يك بار كليك روي كامند يك به سمت راست ،روي كامند 2 به سمت چپ و...بره و اين كا رو كردم ولي فقط به سمت راست ميره و و قتي كدي براي سمت چپ مي نويسم كار نمي كنه. ممنون ميشم اگه سريعتر بهم توضيح بديد.

عزیزم واسه اینه که interval بقیه تایمرها صفر هست
یکم توی کدهایی که مینویسی دقت کن، بگرد دنبال مشکلت، بعد بپرس