یاداشت های کوتاه یک برنامه نویس

طبقه بندی موضوعی

۶ مطلب با موضوع «java :: JME and nifty GUI» ثبت شده است

۱۸
ارديبهشت

در مثال های مستندات JmonkeyEngine در بخش ( Hello Picking) در مورد انتخاب یک geometry با موس چیز هایی گفته شده .....

اما کامل نیست و در یک مورد نیاز واقعی برای من کارایی نداشت، بیشتر اوقات هر مدل از بیشتر از یک geometry تشکیل شده است (مثلا مدل من از چند قسمت دست ،سر ، مو ، لباس ، بدن ، پا ، پوتین و غیره تشکیل شده که هر کدام یک geo در نظر گرفته میشود).و همچنین لازم بود به controller آن دسترسی داشته باشم که فقط والد تمام این ها این کنترلر را داشت نه فرزندان .

پس باید به spatial دسترسی پیدا می کردم  که والد تمام اجزای بدن مدل بود، برای اینکار geo ها را به سمت بالا در سلسله مراتب پدر فرزندی مرور میکنیم تا به یک برابری برسیم .(من برای هر چیز یک داده ی کلید مقدار ثبت میکنم مثلا id و npc را به مدل سربازهایی که توسط کامپیوتر کنترل میشوند نسبت می دهم تا بتوانم در یک حلقه بررسی کنم مورد انتخابی یک مدل از نوع npc است یا نه ؟بعد یک متد از کنترلر را اجرا میکنم تا رفتار مناسب داشته باشد ....)

  • younes RayanFar
۲۸
فروردين

نام کتاب : jMonkeyEngine 3.0 Cookbook - Rickard Eden.pdf

نویسنده: Rickard Edén

ناشر :Packt Publishing Ltd

زبان : eng

حجم : دو و نیم مگ - 615 صفحه

لینک دانلود

پ ن : وقتی امکانی برای خرید آسان وجود نداره مجبورم از راه غیر اخلاقی بدست بیارمش. پس دانلود کنید ، پرینت بگیرید و لذت ببرید. 

شاید این کتاب (jMonkeyEngine 3.0 Beginner's Guide.pdf) رو هم دوست داشته باشید بخونید.

  • younes RayanFar
۱۵
فروردين

اندازه طول و عرض عناصری که در رابط گرافیکی کاربر نمایش داده میشوند معمولا توسط درصد یا مستقیما با تعیین مقدار پیکسل تنظیم میشوند.

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

در روش اول اگر به صورت درصد عدد 10 را به عنوان طول مثلا یک تصویر تعیین کنیم در رزولوشن پایه (من از 1152*2048 به عنوان روزلوشن پایه استفاده میکنم) این مقدار 204.8 پیکسل خواهد بود. و در پایین ترین رزولوشن (1024*1280) طول تصویر 128 پیکسل خواهد بود. این به تنهایی مشکلی ایجاد نمیکند ولی وقتی مقدار عرض را هم وارد و در چند رزولوشن دیگر هم تست کنیم مشکل نمایان میشود

  • younes RayanFar
۲۵
دی

وقتی که از nfity-gui به دلایلی دل سرد شدم به lemur فکر میکردم.

اما خب فونتی که برای نیفتی و جی ام ئی درست کار میکرد در lemur خوب نشون نمیداد و پایین تر می افتاد پس لازم بود در مورد کارایی برنامه ای که نوشتم تجدید نظر کنم و دوباره برم سراغ مستندات bitmapFonts ... 

اصلاحش کردم

هیچ راهی وجود نداشت که با قبلی ادامه بدم و در lemur هم دسترسی به خصوصیات متن مثل فاصله از بالا وجود نداشت و موقعیت متن بر طبق لایه تعیین میشد. لازم بود فونت ساز رو اصلاح کنم که در هر سه ابزار به خوبی نمایش داده شود (lemur - nifty- jme gui node) و این کار رو کردم.

لینک نسخه ی اصلاح شده برای lemur 

  • younes RayanFar
۲۳
دی

nfity gui یک ابزار بدرد نخور است.

خستم کرده لامصب ...

اصلا حرف آدمی زاد حالیش نیست هر گوشه اش یک ایراد داره....

مثلا یک نمونه اش کیفیت بسیار بسیار پایین رندر تصاویر برای image Icon ها در hud است.

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

هیچ راهی برای ادامه وجود ندارد ، به همین دلیل لازم  است در hud از گزینه ی دیگری استفاده کنم.

https://github.com/jMonkeyEngine-Contributions/Lemur

  • younes RayanFar
۲۲
خرداد

سوالات متداول در مورد  nifty gui و JME 3 .

1- چطور اندازه عرض و ارتفاع یک عنصر (Element) را در nifty تغییر دهیم؟

 اول باید به عنصر مورد نظر دسترسی داشته باشیم :

Element image = nifty.getCurrentScreen().findElementById("ImageTagId");

بعد از متد های زیر برای تغییر عرض و ارتفاع عنصر مذکور استفاده می کنیم :

image.setConstraintWidth(new SizeValue("size in % or px"));
image.setConstriantHeight(new SizeValue("size in % or px"));

و در آخر لازمه که عناصر زیر مجموعه ی عنصر والد رو layout کنیم و با اجرای این متد تغییرات قابل مشاهده خواهند بود...

image.getParent().layoutElements(); 

2- چطور تصاویر تگ image رو به صورت داینامیک تغییر دهیم؟

اول باید یک نمونه از NiftyImage داشته باشیم (حواستون باشه این رشته به یک تصویر در assets.jar اشاره میکند نه به آدرس فایل بر روی هارد دیسک مگر اینکه یک داریرکتوری رو به assetManager اضافه کرده باشیم ) پس :

NiftyImage img = nifty.createImage("Interface/Gui/image.jpg", false);

وباید به تگ image دسترسی داشته باشیم:

Element imageEle = nifty.getCurrentScreen().findElementById("ImageTagId");

بعد میتونیم با این روش تصویر مورد نظرمون رو نمایش بدهیم:

imageEle.getRenderer(ImageRenderer.class).setImage(img);

3- چطور متن یک تگ text به صورت داینامیک و پویا تغییر دهیم؟

برای تغییر متن لازمه که اول به تگ text دسترسی داشته باشیم.

Element textEle = nifty.getCurrentScreen().findElementById("txtID");

بعد با روش زیر متن رو تغییر میدهیم:

textEle.getRenderer(TextRenderer.class).setText("hello world!");

4- چطور یک دایرکتوری را در حین اجرا به assets بازی ای که با JME3 توسعه داده شده است اضافه کنیم؟

باید با متد  registerLocator دایرکتوری مورد نظر رو به assetManager اضافه کنیم. (به FileLocator.class توجه کنید)

path="C:\users\someOne\dir\";
app.getAssetManager().registerLocator(path, FileLocator.class);

و هر وقت لازم بود میتونید با اسم فایل و AssetManager به فایل مورد نظر دسترسی داشته باشید

(این لیست بعدا تکمیل میشه ......)

  • younes RayanFar