مجید آرتا 5,874 ارسال شده در 20 تیر، ۱۳۹۵ اشتراک گذاری ارسال شده در 20 تیر، ۱۳۹۵ سلام امیدوارم حالتون خوب و خوش باشه این سورس رو قرار بود به عنوان عیدی بهتون تقدیم کنم که فرصت نشد و امروز رخصتی پیدا کردم و گفتم این سورس رو واستون به اشتراک بزارم خب این سورس با 2 حالت : حرکت دادن انگشتان بر روی دکمه ها کلیک روی دکمه کار می کنه. خب یک سورس کد به اسم ساز قانون بود ( اگه اشتباه نکنم ) که با مدیا پلیر اینکار رو انجام میداد و فوق العاده سنگین و دیر عمل می کرد ولی خب سورسی رو که بنده نوشتم هم زیاد تعریفی نیست و کاملا به صورت پویا نوشته شده ( یعنی طبق دکمه ها و ساز هایی که موجود هستش این کار انجام میشه ) طبق عادت همیشگی یک توضیح کوچیک در مورد کد ها میدم، و طبق عادت همیشگی این کد یک نقص کوچولو داره که با اگر تستش کنید متوجهش میشید و انتظار دارم دیگه دست به کد بشید و خودتون درستش کنید توضیحات در ورای کدها » خب ما اینجا از کلاس SoundPool که مربوط به کتابخانه Audio هستش استفاده می کنیم. Sound Pool زمانی که بخواییم ازش یک نمونه بسازیم ( نمونه ساختن با تعریف کردن متفاوته ) باید تعداد سازها یا اهنگ ها رو بهش بدیم ( مثلا 5 تا ساز داریم و ورودی تابع اینیشالیز رو میدیم 5) و در مرحله بعدی ما باید سازهامون رو Load یا بارگزاری کنیم که این تابع Load برای بارگزاری هر ساز یک مقدار عددی بر میگردونه، پس این تابع از نوع بازگشتی هستش و باید به نسبت نوع مقدار بازگشتی همون نوع متغییر رو تعریف کنیم ( یعنی یک متغیر int ). خب ما این مقدار عددی رو کجا لازم داریم ؟ اصلا دلیل بازگشت این مقدار چیه ؟ از این مقدار ما برای Play کردن همون ساز استفاده می کنیم.یعنی تابع Play ورودی از نوع عددی به اسم LoadID میخواد. خب تا اینجا توضیحات مربوط به کلاس SoundPool بود. توابع استفاده شده » Sub LoadIDS For Each v As View In Activity.GetAllViewsRecursive If v Is Button Then v.Tag = sound.Load(File.DirAssets,Starter.oggFiles.Get(index)) If index < Starter.oggFiles.Size - 1 Then index = index + 1 End If Next End Sub این تابع به صورت پویا میاد تمامی فایل های موجود در پوشه Files رو که فرمت ogg دارن رو اسمشون رو توی یک لیستی میریزه و بعد ما اسامی این سازها رو به تگ دکمه ها اختصاص میدیم. یک نکته ای هم که باید بدونید ( شایدم بدونید ) سرویس starter قبل از اکتویتی که به عنوان لانچر تعریف شده اجرا میشه.خب من قبل از اینکه اکتیویتیم اجرا بشه اسامی فایل هارو به وسیله این سرویس دریافت می کنم.خیلی خوبه که طرز استفاده این سرویس رو بدونید و کاربردی هستش. تابع بعدی » Sub getCount As Int Private count As Int = 0 For Each v As View In Activity.GetAllViewsRecursive If v Is Button Then count = count + 1 Next Return count End Sub این تابع رو برا یانکه بدونیم چنتا دکمه برای ساز ها داریم ( یعنی همون گرفتن تعداد اهنگ ها برای تابع اینیشالیز مربوط به SoundPool ) تابع اخر » Sub MultiTouch(x As Int) For Each v As View In Activity.GetAllViewsRecursive If v Is Button Then If x > v.Left And x < (v.Left + v.Width) Then sound.Play(v.Tag,1,1,0,-1,1) End If End If Next End Sub اگه توجه کنید کد ها شبیه به هم هستن و فقط شرطهاشون و متفاوته.این تابع هم برای حالتی که شما روی صفحه دستتون رو بکشید و تاچ کنید.( حالت مانند سورس ساز قانون) ورودیشم مربوط میشه موقعیت مکانی که تاچ میشه ( در راستای افقی یا همون x ها) کتابخونه Gesture هم داخل این سورس استفاده شده و یه حس عجیب بهم میگه که با رویداد Touch خود اکتیویتی هم میشد انجام داد ولی خب من حواسم نبود از این کتابخونه استفاده کردم تست کنید ببنید اگه با خود رویداد تاچ میشه که کتابخونه gesture نیازی نیست استفاده کنید. خب کل کد همینه کار زیاد سختی هم صورت گرفته نشده، شایدم خودتون سورس کد بهتری بتونین بنویسین. و بازم میگم یک مشکل کوچولو داره که یادمه یکی دو سال پیش یکی از دوستان در این باره هم بهم گفته بود مشکلش رو حل کردم ولی به روشی فوق العاده عجیب و غریب و یادمم نمیاد :دی گذاشتم به عهده خودتون کمی به مغزتون فشار بیارید یه وقت آکبند نمونه واس آیندگان :دی سورس کد از انجمن انسر سنتر./ رمز فایل : answercenter.ir Piano(Optimize).rar لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
Hamidbergis 332 ارسال شده در 20 تیر، ۱۳۹۵ اشتراک گذاری ارسال شده در 20 تیر، ۱۳۹۵ ممنون از اقای ارتا گل لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
razavioo 310 ارسال شده در 20 تیر، ۱۳۹۵ اشتراک گذاری ارسال شده در 20 تیر، ۱۳۹۵ من یک بررسی کردم و برام خیلی جالب بود و نکات خیلی قشنگی از این کد یاد گرفتم. متشکرم فقط فکر می کنم ایرادی که مطرح کرده بودید مربوط به مشکل قطع صدا هنگام نواختن صدای دکمه بعدی بود که من حلش کردم. #Region Project Attributes #ApplicationLabel: Piano Optimized! #VersionCode: 1 #VersionName: 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: unspecified #CanInstallToExternalStorage: False #End Region #Region Activity Attributes #FullScreen: False #IncludeTitle: True #End Region Sub Process_Globals Public sound As SoundPool End Sub Sub Globals Private index As Int = 0 Dim plus, playid As Int End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("activity_main") sound.Initialize(getCount) LoadIDS End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) sound.Release End Sub Sub Button_Click Private btn As Button btn = Sender sound.Stop(playid) plus = plus + 1 If IsNumber(btn.Tag) Then playid = sound.Play(btn.Tag,1,1,plus,0,1) End If End Sub Sub LoadIDS For Each v As View In Activity.GetAllViewsRecursive If v Is Button Then v.Tag = sound.Load(File.DirAssets,Starter.oggFiles.Get(index)) If index < Starter.oggFiles.Size - 1 Then index = index + 1 End If End If Next End Sub Sub getCount As Int Private count As Int = 0 For Each v As View In Activity.GetAllViewsRecursive If v Is Button Then count = count + 1 End If Next Return count End Sub Sub MultiTouch(x As Int) For Each v As View In Activity.GetAllViewsRecursive If v Is Button Then If x > v.Left And x < (v.Left + v.Width) Then sound.Stop(playid) plus = plus + 1 If IsNumber(v.Tag) Then playid = sound.Play(v.Tag,1,1,plus,0,1) End If End If End If Next End Sub 'www.AnswerCenter.IR '[email protected] / [email protected] 'Iranian B4A Programmer در ضمن به اضافه کردن یک قابلیت جالب دیگه فکر می کردم که بر اساس تعداد فایل هایی که داخل پوشه مورد نظر (مثلا Dir assets) وجود داره، خودش به طور اتوماتیک تعدادی دکمه داخل صفحه درست بکنه. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
مجید آرتا 5,874 ارسال شده در 22 تیر، ۱۳۹۵ سازنده اشتراک گذاری ارسال شده در 22 تیر، ۱۳۹۵ سلام من یک بررسی کردم و برام خیلی جالب بود و نکات خیلی قشنگی از این کد یاد گرفتم. متشکرم تشکر. فقط فکر می کنم ایرادی که مطرح کرده بودید مربوط به مشکل قطع صدا هنگام نواختن صدای دکمه بعدی بود که من حلش کردم. متاسفانه مشکلی که بنده دارم همیشه به دنبال راه های سخت تر هستم تا اسونتر و اینجوری میشه که گاهی با ردی مخ مواجه میشم تشکر از شما بابت توجه و رفع این اشکال. میتونید با تغییرات سلیقه ای یک پیانو تر تمیز و خوب بسازید. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
mohammade79 127 ارسال شده در 18 مرداد، ۱۳۹۵ اشتراک گذاری ارسال شده در 18 مرداد، ۱۳۹۵ دوستان سلام من یه سورس حرفه ای تری دارم بدردتون میخوره 100 درصد piano example 2.zip لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
mohammade79 127 ارسال شده در 9 مهر، ۱۳۹۵ اشتراک گذاری ارسال شده در 9 مهر، ۱۳۹۵ در در 1395/05/18, 12:36:28، mohammade79 گفته است : دوستان سلام من یه سورس حرفه ای تری دارم بدردتون میخوره 100 درصد piano example 2.zip سلام دوستان من میخوام با این سورس پیانویی که گذاشتم چند تا دکمه دیگه اضافه کنم، ه کاری میکنم نمیشه میشه یکی این کارو بکنه که با بیسیک هم بشه پیانو ساخت لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.