View Full Version : سوال: انیمیشن در جاوا
dasssnj
یک شنبه 06 مهر 1393, 13:58 عصر
سلام دوستان.
می خواستم بدونم کار با انیمیشن ها در جاوا چجوریه. یعنی انیمیشن باز کردن و بستن فریم ها یا اجرای انیمیشن روی کامپوننت ها در فریم. مثلا باتن ها وقتی کلیک شدن بچرخن یا ...
همشو باید کد نویسی کرد یا راه ساده تری هم هست؟(لایبرری یا...)
لطفا اگه کسی بلده یه کمکی بکنه.
متشکرم.
محمد فدوی
یک شنبه 06 مهر 1393, 15:07 عصر
تا اونجایی که من میدونم توی Swing کتابخونه ی آماده ای برای پیاده سازی انیمیشن نداریم. Trident (https://kenai.com/projects/trident/pages/Home) رو پیدا کردم که به نظر میرسه خیلی وقته آپدیت نشده.
برای پیاده سازی انیمیشن توی Swing بهتره خودت دستی اینکار رو بکنی. به اینصورت که یه Thread برای Update کردن کامپوننت هات داری و یک یا چند تا Thread برای انجام انیمیشن ها.
به نظرم بهترین راه استفاده از JavaFX یا یکی دیگه از فریمورک های GUI جاوا مثل JGoodies باشه.
dasssnj
یک شنبه 06 مهر 1393, 15:21 عصر
تو github یه چیزایی پیدا کردم . حالا تست می کنم ببینم کار میده یا نه.
این فریمورک هایی که میگی رایگان اند؟ دیزاینر (window buildrer) دارن؟
محمد فدوی
یک شنبه 06 مهر 1393, 17:44 عصر
آره JGoodies رایگانه. WindowBuilder مخصوص Eclipse که با JGoodies کار میکنه. درمورد NetBeans و IntelliJ IDEA هم احتمالا باشه یه چیزایی (و من نمیدونم)
JavaFX هم آره. فقط ایرادش اینه که یکم هنوز ایراد داره. ولی قدرت خیلی خوبی برای طراحی برنامه هایی که قدرت گرافیکی بالا دارن، داره.
ahmad.mo74
یک شنبه 06 مهر 1393, 19:27 عصر
سلام، آقای MohammadF درست میگن توی swing نداریم همچین لایبرری ولی میشه خودمون یه چیزایی درست کنیم مثلا با دستکاری لوکشین ویندوها و تغییر دادن opacity شون و از این چیزا...
مثلا من خودم همچین چیزی نوشتم برای حرکت بین ویندوها! <-- src (http://bit.ly/1uUeCP3) -->
بعضی look&feel ها هم همچین قابلیت هایی دارن مثلا Web l&f خیلی انیمیشن های خوبی توش استفاده شده، این دمو (http://weblookandfeel.com/downloads/gpl/weblaf-demo-1.28.jar) رو ببین...
به هر حال یه خورده خودت باید خلاقیت به خرج بدی :)
abdoullah.aberi
یک شنبه 06 مهر 1393, 23:13 عصر
سلام من از Weblaf در برنامه هام استفاده میکنم ولی راستیتش فکرشو نمیکردم اینقدر همه چیز داشته باشه ولی خودمونیم خیلی چیز تمیزه
storm_saeed
شنبه 19 مهر 1393, 22:43 عصر
از JavaFx استفاده کنید خیلی خیلی قوی و تمیز زده شده برای مثال برای چرخاندن یا حرکت دادن یک باتن میتونید براش path تعیین کنید تایم بدین و براتون حرکت میده .
(نکته : javafx 8 در حد ساخت یه بازی ۲ بعدی هم میتونه نیاز رو برطرف کنه)
dasssnj
یک شنبه 20 مهر 1393, 05:30 صبح
از JavaFx استفاده کنید خیلی خیلی قوی و تمیز زده شده برای مثال برای چرخاندن یا حرکت دادن یک باتن میتونید براش path تعیین کنید تایم بدین و براتون حرکت میده .
(نکته : javafx 8 در حد ساخت یه بازی ۲ بعدی هم میتونه نیاز رو برطرف کنه)
فارسی را ساپورت می کنه ؟
storm_saeed
یک شنبه 20 مهر 1393, 22:05 عصر
فارسی را ساپورت می کنه ؟
بله ساپورت میکنه
dasssnj
دوشنبه 21 مهر 1393, 04:38 صبح
بله ساپورت میکنه
ممنون از جوابتون . منبع آموزشی خوب براش سراغ دارید ؟
محمد فدوی
دوشنبه 21 مهر 1393, 12:09 عصر
JavaFX هنوز یکم ایراد داره مخصوصا توی سکوهای ویندوزی. ولی توی Java 8 با عرضهی FX 2.2 خیلی رشد کرده. (به نظرم بهتر از اینم بشه)
به دلیل شلوغیش پیشنهاد من اینه که JavaFX در کنار Swing استفاده بشه؛ چون اگه بخوای یه Application رو کامل با FX تولید کنی خیلی باید کد بنویسی. راه سادهتر اینه که اکثر جاهای برنامهت رو با Swing تولید کنی و جاهایی که به پردازش گرافیکی بالاتری نیاز داری از FX کمک بگیری. از Java 8 به بعد همهی Containerهای Swing از کامپوننتهای FX پشتیبانی میکنن و بالعکس.
کتاب موجود توی Documention اوراکل (http://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.pdf) به نظرم خوب بود. یه سرچ کنی بازم هست.
storm_saeed
دوشنبه 21 مهر 1393, 22:33 عصر
من تجربه ای خودم داشتم تویه پروژه دانشگاه داشتم اینه(برای بازی ساختن با javafx) :
اولا قدرت خیلی بهتری برای قشنگ تر شدن UI میده مخصوصا افکت هایی که با css میشه بهش اضافه کرد یا اینکه با نرم افزار scene builder به راحتی میشه UI زد براش(بصورت xml که واقعا خیلی نکته مثبتیه)
دوما از نظر کد زدن خیلی قابل فهم تر و قشنگ تره (ازنظرمن) و نسبت کد زدنش به swing خیلی زیاد نمیشه (ولی درکل زیاد تر میشه)
سوما از نظر این رویه پلت فرم های مختلف خوب کار کنه هم عالی جواب داده بود فقط یادمه یه تابع full screen کردنش تویه مک یکم مشکل داشت
بدیش هم اینه که یکم کوچولویی رفرنس هاش کمه خود سایت اوراکل هستو چند تا وبلاگ دیگه البته تو سایت stackoverflow تقریبا هر سوالی بپرسین پاسخ میدن
یه وبلاگ خیلی خوبی هم هست که اطلاعات هفتگی راجع به FX میزاره : http://fxexperience.com/
dasssnj
سه شنبه 22 مهر 1393, 06:04 صبح
درسته . هم خیلی قشنگه و هم انیمیشن های خوبی داره . اما برای لی اوت های حرفه ای جوابگو نیست و مثل swing نیست . من نتونستم لی اوتی که با swing زده بودم با اینم بزنم . مشکلش جایی معلوم میشه که اجزا خیلی زیاد و شلوغ توی صفحه قرار می گیرن . این موقع swing بهتر عمل می کنه. (البته این ها هم شاید به خاطر باگه)
یکی از مشکلاتش این بود که BorderPane را وقتی یه چیزی توی قسمت بالاش می گذاشتم به اندازه ی خود شئ ام نمی شد بلکه جای بیشتری را الکی پر می کرد و اطراف اون شئ خالی بود . یعنی من توی قسمت بالای BorderPane یه منو بار گذاشتم و تو قسمت وسطش یه SliptPane اما قسمت بالایی به اندازه ی منویی که گذاشتم در نیومد و بلکه فضای خای اضافی دورش ایجاد کرد . (اگه بخواهید عکسشو هم می ذارم)
راهی برای حل این مشکل هست ؟
abdoullah.aberi
سه شنبه 22 مهر 1393, 10:54 صبح
سلام منم دقیقا با JavaFx همین مشکلو داشتم درسته خیلی زیباست ولی فعلا نمیشه با swing و swt مقایسه کردش هنوز راه درازی داره همین طور dasssnj عزیز فرموندند مشکلات تو layout ها خیلی زیاده به طوریکه پشیمونت میکنه مثلا شما میخوای اندازه Pane رو یه مقدار افزایش بدی بعضی موقعها اینقدر اذیتت میکنه که مجبور به باز و بسته کردن sence builder میشی ولی در کل ماجرا اگه بشه بهش نگاه خوبی داشته باشی اینده داره و مشه خیلی ازش استفاده های بهینه ایی کرد
ممنون از شما
storm_saeed
سه شنبه 22 مهر 1393, 17:35 عصر
منم خودم اولایل فکر میکردم که layout هاش داغونه ولی بعدا فهمیدم که مشکل از منه یعنی روش درست رو نمیدونم البته اون scene builder هم یکسری مشکلات داشت که تو اپدیت جدید مقدار زیادیش رفع شد
اون مشکلی هم که گفتید حتما قابل رفع هست اگه میشه یه شات بدید ممنون
abdoullah.aberi
سه شنبه 22 مهر 1393, 19:40 عصر
میتونم بپرسم scene builder شما ورژنش چنده ممنون ؟
storm_saeed
سه شنبه 22 مهر 1393, 22:19 عصر
میتونم بپرسم scene builder شما ورژنش چنده ممنون ؟
مشکل من با scene buidler 1.1 بود که الان از نسخه ۲ استفاده میکنم و تویه این نسخه ویژگی های انیمیشن جاوا fx هشت هم بهش اضافه شده
abdoullah.aberi
سه شنبه 22 مهر 1393, 23:22 عصر
ولی من scene builder 2.0 دارم ولی هنوز مشکل فارسی داره فکر کنم به خاطره اینکه از 7 استفاده میکنم
dasssnj
چهارشنبه 23 مهر 1393, 05:40 صبح
توی نسخه جدید java fx نمیشه دیگه از fx script استفاده کرد . درسته ؟ راهی هست که توی نت بینز با بشه fx script کار کرد؟
dasssnj
دوشنبه 12 آبان 1393, 18:57 عصر
در یک کلام java fx مزخرفه !
حتی یه ماشین حساب ساده را هم نمیشه باهاش ساخت . پر از باگ و مشکلاته . تا وقتی swing هست دیگه هیچ وقت سراغ java fx نمی رم مگر برای بازی سازی . به شما هم توصیه می کنم ازش استفاده نکنین.
storm_saeed
چهارشنبه 14 آبان 1393, 13:24 عصر
در یک کلام java fx مزخرفه !
حتی یه ماشین حساب ساده را هم نمیشه باهاش ساخت . پر از باگ و مشکلاته . تا وقتی swing هست دیگه هیچ وقت سراغ java fx نمی رم مگر برای بازی سازی . به شما هم توصیه می کنم ازش استفاده نکنین.
:| :| :|
دقیقا برعکسه حتما swing بد بوده که اوراکل داره همرو به سمت javafx تشویق میکنه سوییچ کنن . اتفاقا UI زدن باهاش به نظرم خیلی اسون تره و خیلی امکانات بیشتری به ادم میده
dasssnj
چهارشنبه 14 آبان 1393, 14:32 عصر
:| :| :|
دقیقا برعکسه حتما swing بد بوده که اوراکل داره همرو به سمت javafx تشویق میکنه سوییچ کنن . اتفاقا UI زدن باهاش به نظرم خیلی اسون تره و خیلی امکانات بیشتری به ادم میده
Menu Bar را جز کامپوننت ها حساب می کنه و به جای اینکه به frame اضافه ش کنه به Pane اضافه ش میکنه .
توی borderPane هم مشکل داره . مشکلش اینه که اگه کامپوننت کوچک باشه کنارش فضای خالی ایجاد میشه .
و کلی ایراد دیگه ....
در حالی که swing اینجور مشکلات را نداره .
این مشکلات و خیلی از مشکلات دیگه اش باعث میشه آدم نتونه حتی یه برنامه ی درست و حسابی باش بسازه . در حالی که با swing در زمان خیلی کم میشه لی اوت های فوق حرفه ای ساخت (اصلا به نظرم بهترین محیط ویژوالی بین کل زبان ها را جاوا داره با swing).
اگه javafx و swing را در کنار هم استفاده کنی خوبه . اشتباه اوراکل در همینه . اگه به جای ساختن javafx امکاناتش را به swing اضافه می کرد از همه لحاظ عالی می شد .....
storm_saeed
چهارشنبه 14 آبان 1393, 17:13 عصر
Menu Bar را جز کامپوننت ها حساب می کنه و به جای اینکه به frame اضافه ش کنه به Pane اضافه ش میکنه .
توی borderPane هم مشکل داره . مشکلش اینه که اگه کامپوننت کوچک باشه کنارش فضای خالی ایجاد میشه .
و کلی ایراد دیگه ....
در حالی که swing اینجور مشکلات را نداره .
این مشکلات و خیلی از مشکلات دیگه اش باعث میشه آدم نتونه حتی یه برنامه ی درست و حسابی باش بسازه . در حالی که با swing در زمان خیلی کم میشه لی اوت های فوق حرفه ای ساخت (اصلا به نظرم بهترین محیط ویژوالی بین کل زبان ها را جاوا داره با swing).
اگه javafx و swing را در کنار هم استفاده کنی خوبه . اشتباه اوراکل در همینه . اگه به جای ساختن javafx امکاناتش را به swing اضافه می کرد از همه لحاظ عالی می شد .....
منو بار دقیقا باید همونجا باشه چون که menubar جزو Control هاست و Pane هم جزو regionو region هم جزوparent و parent هم جزو node ها صفحه هست و همه اینها جزو scene اند پس در عمل شما میخواید که یه منو بار رو به صفحه بکشیدش (scene) و طبق تعریف هم برای ارتباط با scene شما باید با یک سری لیوت (pane) کار کنید خب پس باید منوبار رو به این pane ها اضافه کنید . frame ها همون طور که از اسمشون معلومه برای کارهای انیمیشنی استفاده میشه وبراشون میتونیم از thread ها مختلف جدا از thread اصلی stage استفاده کنیم بعدشم javafx خیلی structural تره و همین باعث قوی بودنش شده وهمه چی خیلی شی گرا تر و دارای پترن MVC شده .
اینکه میگید یه node ای کوچیک باشه کنارش فضای خالی پیدا میشه خب فرض کنید مثلا تو LEFT ما یه node گذاشتیم اولا هم میتونید براش scale type تعریف کنید که مثلا عرض تعیین شده اش رو بپوشونه یا اینکه به node بگیم همون قدر که عرض عکس هست عرض LEFT بشه .
خیلی از ادم های خفن تو Stackoverflow گفتن که جاوا fx مشکلات swing رو به مراتب بهتر کرده و کنارش یه سری کلاس انیمیشنی قوی هم قرار داده
عده ای که میگن نمیشه باهاش فلان کار رو کرد بخاطر اینه که خوب شاید یاد نگرفتنش یا تو مفهاهیمش مشکل دارن و دارن با مفاهیم swing میسنجنش من خودم خیلی سریعتر نسبت به swingباهاش لیوت میزنم و لیوت هام هم به مراتب قشنگ تر از Swing میشه بخاطر اینکه اولا خودش تم های قشنگی داره دوما میشه از قبل یه سری دکمه و تولبار و... بشخصی سازی کرد و از اونا استفاده کرد
ولی قبول دارم لیوت زدن تو swing سریعتره . وشاید یه جاهایی در javafx به باگ هایی بخورید و بخاطر تازه بودنش داکیومنتی نباشه یعنی کلا برا تازه کارا خیلی سخته ولی کم کم که بهش عادت کنید خیلی اسون تر میشه و اگه یک سری کلاس ها مثل همین خانواده pane ها رو یک سری دیگه رو ازشون ارث بری کنید و یه جاهایش رو تغییر بدین خیلی هم بهتر میشه
dasssnj
چهارشنبه 14 آبان 1393, 17:17 عصر
اینکه میگید یه node ای کوچیک باشه کنارش فضای خالی پیدا میشه خب فرض کنید مثلا تو LEFT ما یه node گذاشتیم اولا هم میتونید براش scale type تعریف کنید که مثلا عرض تعیین شده اش رو بپوشونه یا اینکه به node بگیم همون قدر که عرض عکس هست عرض LEFT بشه .
میشه روش این کار ها را توضیح بدید که چجوریه ؟
storm_saeed
چهارشنبه 14 آبان 1393, 17:25 عصر
اگه تو یه عکس نشون بدید که مشکلتون دقیقا کجاست شاید بشه بهتر کمک کرد و اینکه شاید مثلا بهتر باشه که از stackpane یا چیزهای دیگه استفاده کرد
dasssnj
پنج شنبه 15 آبان 1393, 05:28 صبح
مشکلم با دو تا BorderPane تو در تو حل شد . اما حالا این مشکلو دارم .
125332
اینو توی swing زدم . نگاه کنید بعضی دکمه ها بزرگ تره . اینو چحوری پیاده کنم ؟
توی swing با grouplayout ساختمش .
ahmad.mo74
پنج شنبه 15 آبان 1393, 23:11 عصر
با Web L&F ؟ :)
dasssnj
جمعه 16 آبان 1393, 03:53 صبح
با Web L&F ؟ :)
آره .
توی swing اینو ساختم اما توی javafx نمی تونم پیاده اش کنم ....
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.