هر كليدي كه تو برنامه قرار ميگيره و ميتونه تاثيري بر عمليات seekbar داشته باشه رو بايد با دقت مطالعه كنيم و بگيم مقدار اين تاثيرات چقدر خواهد بود و چطور ميتونيم با كمك اين كليدها seekbar رو هم كنترل كنيم.
كليد Play كه در برنامه قرار داره وظيفش پخش مجدد فيلم در صورتي كه فيلم به هر دليل متوقف شده باشه هست. پس به شكلي ميتونه رو فرايند seekbar هم تاثير گذار باشه.
كليد Pause فيلم رو به طور موقت متوقف ميكنه پس اگه اين كليد فشرده بشه بايد دستورات auto_move كه seekbar رو به طور خودكار تكميل ميكرد متوقف بشه.
يا كليد Stop كه فيلم رو طور كامل متوقف ميكنه كه اگه اين كليد فشرده بشه بايد همه چيز به وضعيت اول برگرده.
يا حتي خود فيلم وقتي به انتها رسيد چه اتفاقي بيفته و چه تاثيري تو seekbar داره؟
من تو كليد Play اين دستورات رو نوشتم:
کد:
[COLOR=Blue]If [/COLOR](path$<>[COLOR=DarkRed]''[/COLOR]) [COLOR=Blue]Then[/COLOR]
[COLOR=Blue]If [/COLOR](status$<>[COLOR=DarkRed]'Play'[/COLOR]) [COLOR=Blue]Then[/COLOR]
status$=[COLOR=DarkRed]'Play'[/COLOR]
[B][COLOR=Navy]DisplayValue[/COLOR][/B]("status","status$")
[B][COLOR=Navy]ScriptTimer[/COLOR][/B]("TimerA=auto_move","0")
[B][COLOR=Navy]Show[/COLOR][/B]("Video")
[B][COLOR=Navy]VideoPlay[/COLOR][/B]("Video")
[COLOR=Blue]End[/COLOR]
[COLOR=Blue]End[/COLOR]
دستورات اين كليد فقط بايد زماني كه فيلمي انتخاب شده باشه و به هر دليلي متوقف شده باشه اجرا بشه.
بنابراين من اول با يك شرط چك ميكنم كه آيا اصلا فيلمي انتخاب شده براي پخش يا نه؟ در صورتي كه مقدار متغير $path كه همون مسير فايل انتخاب شده ما بود تهي باشه يعني اصلا فيلمي براي پخش انتخاب نشده. پس دستورات داخل شرط اجرا نميشه.
اما اگه اين متغير مخالف تهي باشه پس يعني فيلمي انتخاب شده و حالا نوبت بررسي وضعيت پخش فيلم هست.
اگه فيلم ما در حال پخش باشه دليلي نداره كه دستورات اين كليد اجرا بشه. چون فيلمي كه در حال پخش هست رو كه مجددا پخش نميكنيم.
اگه فيلم به هر دليلي متوقف شده باشه بايد با اين كليد مجددا اون رو پخش كنيم. پس با يك شرط ديگه وضعيت متغير $status رو بررسي ميكنم.
اگه مقدار اين متغير مساوي عبارت Play باشه يعني فيلم در حال پخش هست اما اگه مقدار اين متغير مخالف Play باشه يعني فيلم ما متوقف شده پس دستورات داخل شرط اجرا ميشن.
تو خط اول دستورات داخل شرط من مقدار متغير $status رو مساوي عبارت Play قرار ميدم و اون رو با دستور DisplayValue تو شي متني status نمايش ميدم.
با دستور ScriptTimer اسكريپت auto_move رو كه براي كنترل خودكار seekbar رو اجرا ميكنم و تو خطوط بعدي با دستور Show فايل ويدئويي رو نمايش و با VideoPlay اون رو پخش ميكنم.
كليد Pause براي توقف لحظه اي فيلم در حال پخش استفاده ميشه. دستورات اين كليد شامل:
کد:
status$=[COLOR=DarkRed]'Pause'[/COLOR]
[B][COLOR=Navy]DisplayValue[/COLOR][/B]("status","status$")
[B][COLOR=Navy]VideoPause[/COLOR][/B]("Video")
ابتدا مقدار متغير $status رو نشان دهنده وضعيت فيلم هست رو مساوي عبارت Pause قرار ميدم. و با دستور DisplayValue اين مقدار رو تو شي متني status نمايش ميدم.
بعد با دستور VideoPause فيلم رو متوقف ميكنم.
حتما متوجه شديد كه دليل استفاده از شرط 'staus$='Play تو اسكريپت auto_move براي همين بود كه اگه مقدار اين عبارت مخالف Play هست يعني فيلم متوقف شده و ديگه نبايد دستورات اون اسكريپت اجرا بشه.
كليد Stop براي توقف كامل فيلم در حال پخش و بازگرداندن فيلم به نقطه اول استفاده ميشه. دستورات اين كليد شامل:
کد:
status$=[COLOR=DarkRed]''[/COLOR]
[B][COLOR=Navy]DisplayValue[/COLOR][/B]("status","status$")
[B][COLOR=Navy]MoveObject[/COLOR][/B]("obj$","objX,objY,1,objH")
time$=[COLOR=DarkRed]'00:00:00'[/COLOR]
[B][COLOR=Navy]DisplayValue[/COLOR][/B]("[COLOR=Blue]CBK_VTime[/COLOR]","time$")
[B][COLOR=Navy]VideoStop[/COLOR][/B]("Video")
[B][COLOR=Navy]Hide[/COLOR][/B]("Video")
تو خط اول چون فيلم به طور كامل متوقف شده مقدار متغير $status رو مساوي تهي قرار ميدم و با دستور DisplayValue مقدار اين متغير رو تو شي متني status نمايش ميدم.
چون فيلم بايد به نقطه اول خودش برگرده پس seekbar هم بايد به نقطه ابتدايي برگرده تا تو شروع مجدد از همون نقطه شروع به پخش بشه. پس با دستور MoveObject نوار seekbar رو به نقطه آغاز بر ميگردونم.
ما يك شي متني به نام CBK_VTime داشتيم كه زمان جاري فيلم رو نمايش ميداد. وقتي فيلم به طور كامل متوقف ميشه مقدار اين شي هم بايد صفر بشه بنابراين با يك متغير رشتهاي به نام $time عبارت 00:00:00 در نظر ميگيرم و با دستور DisplayValue مقدار متغير رو تو شي متني نمايش ميدم.
در نهايت با VideoStop فيلم رو متوقف و با دستور Hide شي ويدئو رو مخفي ميكنم.
وقتي فيلم به انتها ميرسه هم دقيقا بايد همين اتفاقات بيفته يعني فيلم متوقف بشه و به نقطه اول خودش برگرده پس همه دستوراتي كه براي كليد Stop نوشتم رو كپي ميكنم و تو شي ويدئو تو بخش RunScript و تو قسمت OnFinish تكرار ميكنم.
حالا من يك Video Seekbar كامل دارم و ميتونم از اون براي هر نوع برنامه پخش كنندهاي استفاده كنم.
براي ساخت seekbar روشهاي ديگه اي هم وجود داره كه بنا به دلايلي كه تو پست اول گفتم من اين روش رو انتخاب و راهنماييتون كردم كه چطور يك seekbar بسازيد.
اين seekbar ي كه ساختيم ميتونه ابعاد و محل قرارگيريش متناسب با ميل خودتون تغيير كنه. ميتونيد كليدهاي ديگه اي رو به اين برنامه اضافه كنيد اما باز هم تاكيد ميكنم قبل از اضافه كردن يك كليد يا يك دستور به برنامه به تاثيراتي كه روي seekbar ميزاره دقت كنيد و اون رو تو برنامه لحاظ كنيد.
در پايان اميدوارم اين آموزش مفيد بوده باشه و اگه كاستي تو فرايند اين آموزش مشاهده شد دوستان به بزرگواري خودشون و كم سوادي بنده ببخشن.
موفق باشيد.