Fa ایجاد شفافیت اشیا روی فیلم در حال پخش

sms1371

New Member
سلام. قبل از هر چیز از حرفه ای های سایت عذر میخوام.میدونم ممکنه این سوال قبلا مطرح شده باشه اما احساس میکنم سایت خیلی بی نظمه چون من با جستجو جوابم رو پیداش نکردم و اینکه خداییش نمیتونم صد و خورده ای صفحه تاپیک بیلدر را هم بگردم..سایت باید در این زمینه یه تقسیم بندی قرار بده برای موضوعات.

سوالم اینه که من روی فیلم یک کلید مثل کلید play یا یک عکس قرار میدم. مثل حالتی که در بعضی سایت ها وجود داره. دور دکمه پلی را ترانسپرنت میکنم .حالا یا به شکل انتخاب بکگراند رنگ(transparent color safe) یا با آلفا....(هر دو حالت را امتحان کردم) ... بعد وقتی برنامه را اجرا میکنم خب اولش درسته یعنی دور عکس شفاف هست ولی وقتی فیلم را پلی میکنم....انگار شفافیت عکس از بین میره و دورش سفید میشه...به نظرم میرسه که انگار داره بک گراند زیر فیلم رو بجای شفافیت نشون میده...رنگ زمینه را تغییر دادم و حدسم درسته یعنی زمینه به جای شفافیت نشون داده میشه....حالا اگه میشه لطفا راهنمائیم کنید که چه کنم که شفافیت در طول پخش فیلم حفظ بشه یعنی به جای شفافیت همان بخشی از فیلم که در حال پخشه نشون داده بشه نه عکس یا رنگ زمینه...ممنون...کارم خیلی گیره..ممنون از راهنمائیتون پیشاپیش
 

sms1371

New Member
فایل رو هم پیوست کردم

. در فایلی که پیوست کردم وقتی پلی کنید مشکلی نیست..وقتی پاوز pause کنسد متوجه مشکلی که میگم میشید.ممنون
 

پیوست ها

  • 112.rar
    9.9 مگایابت · بازدیدها: 64

محمدمهدی

Well-Known Member
سلام.
درست متوجه شدید. ببینید اون شفافیتی که شما در پلیر ویندوز 7 یا توی مرورگر خودتون می بینید به دلیل تفاوت ماژول نمایش تصویر و در نتیجه تفاوت کل ساختار پخش هست. چون ام ام بی این آبجکت ها رو در فرم های جداگانه ای(با استفاده از ماژول های مختلف - قدیمی) تحت قالب یک پنجره (که اون هم یک فرم محسوب میشه) لود می کنه این مشکل بدیهی هست. اونی که توی مرورگر می بینید یا Flash هست یا HTML5 یا SilverLight و یا JavaPlayer های مختلف تحت HTML. و اونی که توی ویندوز Seven می بینید استفاده از ماژول های ارتقا یافته ی Decoder های فیلم ها هست که برای ارتباط با اونها نیاز به یک محیط برنامه نویسی کامل دارید و خروجی برنامه هم فقط با نسخه های جدید ویندوز سازگار میشه.
و اما راه حل :
- شما می تونید به سادگی از قابلیت های فلش استفاده کنید. یعنی کادر پلیرتون رو یک فلش آبجکت کامل در نظر بگیرید که در این صورت هر کاری دلتون بخواد می تونید روی تصویر انجام بدید. البته فقط توی فلش، و باز هم نمی تونید روی فرم فلش باز شده در ام ام بی چیزی قرار بدید مگر به شکل مربع، یا مربع های ریزی که یک شکل جدیدی رو بسازند(، بدون شفافیت).
- یا عین راه حل بالا رو با درست کردن صفحه ی HTML و قرار دادن آبجکتش توی برنامه اجرا کنید.
- من خودم قدیم این مشکل رو به نحو دیگه ای، به صورت بسیار مبتدی و اشتباه حل کرده بودم که برای فیلم های کوچک با frame-rate پایین جواب میداد. من فریم های فیلمم رو به چندین هزار bmp تبدیل کرده بودم و در حقیقت فیلم رو به شکل تصاویر پشت سر هم توی آبجکت bitmap ام ام بی نشون میدادم و اینطوری هر نوع آبجکتی روش کار می کرد، حتی AlphaButton ها.
- و در آخر هم همیشه راه حل نوشتن پلاگین برای این قضیه وجود داره که باید به متخصص های فاروم بسپری تا برات بنویسنش که البته احتمالا هزینه داره.

نتیجه : از من بپرسی میگم یه تحقیق کوچولو روی فلش و انواع پلیر های آماده که با سورس ارائه میشن بکن، بعد یه دونه از بهتریناشو انتخاب کن و با ام ام بی مرتبطش کن و وقتی به نتیجه رسیدی یه نمونه رو هم توی انجمن برای استفاده دیگران آپلود کن.

موفق باشی
 

sms1371

New Member
سوال

من این پلیر رو میخوام که توی برنامه ام هر فیلمی رو دستور بدم با استفاده از شی ویدئوی پلیر پخش بشه
اگه پلیرم رو با فلش درست کنم، میتونه هر دستوری از ام ام بی رو بگیری تا فیلم های داخل صفحه ی ام ام رو پخش کنه؟چطوری؟
 

محمدمهدی

Well-Known Member
بله، میشه فلش از ام ام بی دستور بگیره. اما دیگه کاری با آبجکت Video ام ام بی نداریم. (اگر یه نگاهی به مثال های فلش خود ام ام بی مینداختید، این مسئله رو خودتون هم می تونستید متوجه بشید.)
در نتیجه توی صفحه ی ام ام بی نتیجه مشاهده میشه اما دیگه کاری با فیلم توی صفحه نداریم و هر چی هست آبجکت Flash و سایر آبجکت هاست.
و چطوری :
راه حل که زیاده. مثال هم زیاده. اما برای سر نخ، اگر پلیرتون با ActionScript 2 فلش طراحی شده باشه، دستور های FlashSetVar و FlashGetVar ام ام بی می تونن انواع متغیر های یک آبجکت فلش رو فراخوانی یا جایگذاری کنن. یعنی مثلا متغیر آدرس فایل ویدیویی توی فلش رو توسط ام ام بی تغییر میدید تا فیلم در حال پخش توی آبجکت، عوض بشه.
اگرم پلیرتون ActionScript 3 بود که توسط آبجکت HTML یا ClipBoard یا ... میشه برای متغیر ست کردن(دستور دادن)، و از دستور fscommand برای برعکسش(یعنی دستور گرفتن از فلش)استفاده کرد. خلاصه باید یه خورده بیشتر تحقیق کنید و مثال های مختلفی برای هر یک از مطالبی که عرض کردم وجود داره. فقط باید در این انجمن و اینترنت جستجو کنید و خودتون با حوصله به تحلیل مثال ها بپردازید.
البته توی این راه ممکنه با مشکلی مواجه بشید و اون هم فرمت فیلم هایی هست که می خواهید توسط آبجکت Flash پخش بشه که باید در این مورد هم که داستان مربوط به خود فلش میشه یه مقدار تحقیق کنید.
 

sms1371

New Member
سلام .میشه یه نفر دستوری رو که روی دکمه ی داخل فلش برای پلی شدن از طریق بیلدر هست قرار بده
 

محمدمهدی

Well-Known Member
نمونه مثال فرستادن و گرفتن دستور بین ام ام بی(MMB) و فلش(Flash as2)

سلام.
برای اجرای دستور از طریق ام ام بی حتما لازم نیست چیزی دقیقا روی دکمه ی فلش هم باشه. (البته اگر منظورتون رو درست متوجه شده باشم.)
ضمن اینکه به نظرم میرسه خودتون می تونستید با نگاه به نمونه مثال خود ام ام بی واقع در
Multimedia Builder498\Samples\Flash_Examples
به جوابتون برسید، بنده یه نمونه مثال ساختم براتون که نزدیکتر باشه به منظور نظرتون که می تونید از پیوست دانلود بفرمایید، فقط :
1. متغیر باید تعریف بشه که من به ساده ترین روش توی Action های فریم اول این کار رو کردم.
2. من برای درک بهتر شما این کار رو روی یک MovieClip داخل فلش انجام دادم اما اگر شما می خواهید پلیرتون از فایلهای بیرون فیلم لود کنه باید ابتدا یه آبجکت ویدئو فلش توی صفحه فلش قرار بدید و بعد از اون برای اون با دستوری شبیه به این :
کد:
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
نام آبجکت ویدئو شما.attachVideo(ns);
ns.play("آدرس فیلم شما");
فیلم لود کنید. البته فلش کامپوننت آماده برای اینکار هم داره که اگر از منوی File گزینه Import Video رو پیدا کنید به سادگی متوجه منظور من میشید. (توضیحش مفصله و چون زیاد ربطی به خود ام ام بی نداره، نیازمند تحقیق بیشتر شماست.)
3. در نمونه فلش به دستور هایی که روی خود دکمه ی Play و داخل فریم های مووی کلیپ Film گذاشتم دقت کنید و همچنین در ام ام بی به طرز کار دکمه ی Play و اسکریپت End نگاه کنید تا طرز کارش رو متوجه بشید.
- اگر با فلش آشنا نیستید خوبه بدونید که هیچوقت نامی که برای شیئتون استفاده می کنید برای دستور دادن کاربرد نداره. هر چیزی که می خواهید برای اون برنامه بنویسید باید توی تنظیمات اون شیء، Instance name براش تعریف کنید. جایگاه شیء هم مهم هست. مثلا شیئی که روی صفحه ی اصلی قرار داره به این شکل خونده میشه :
کد:
_root.TheObject
و اگر اون شیء نام گذاری شده، توی اون آبجکت باشه باید یک نقطه به انتهای دستور قبل اضافه کنید و حالا نام اون شیء رو بنویسید. البته میشه طور دیگه ای هم آدرس داد که جای توضیحش اینجا نیست.
همین مثال ساده رو اگر یه خورده نگاه بهش بندازید متوجه طرز کارش میشید.

منتظرم تا نمونه کار خودتون رو وقتی به نتیجه ی مطلوب رسید روی انجمن ببینم.
موفق باشید.
 

پیوست ها

  • StartOfHowMakeA FlashMoviePlayerOnMMB.zip
    401.5 کیلوبایت · بازدیدها: 24

جدیدترین ارسال ها

بالا