تازه های سایت
گرافیک دو بعدی در کیوت قسمت دوم

گرافیک دو بعدی در کیوت قسمت دوم

سلام دوستان عزیز

در قسمت قبل در مورد کار با QPropertyAnimation صحبت کردیم. در این قسمت باز هم قصد داریم در مورد انیمیشن صحبت کنیم و این که چطور میشه انیمیشن ها رو گروه کرد و باهم اجراشون کرد.

در واقع این قسمت قصد داریم یه همچین چیزی بسازیم :

anim_part_2 هرکی تونست همچین چیزی بسازه با آموزش این قسمت :

anim_part_2_1دانلود کنید به مدت ۱۵ دقیقه

۲,۸۴۹ total views, 2 views today

Print Friendly
Facebook0Google+0Twitter0LinkedIn0

درباره‌ی سعید دادخواه

دانشجوی سال آخر دانشگاه صنعتی اصفهان هستم. عاشق کیوت! خیلی ها بهم میگن QSaeed :) ولی در کل عاشق کامپیوترم ! سعی کردم هرچیزی رو توی دنیای بی انتهای کامپیوتر تجربه کنم! هر چیزی رو !

۱۷ نظر

  1. سلام
    آقا سعید
    خسته نباشید
    لینک مشکل داره!!!:-؟

  2. سلام.
    واقعا ممنون عالی بود.
    در ضمن اون سوالی هم که آخر آموزش پرسیدی اینه که چون شکل رو توی تابع paint کشیده بودی و تابع paint توی انیمیشن مدام فراخوانی میشه .درسته؟!؟!؟!؟
    منتظر قسمت های بعدی هستیم.

  3. سلام
    ۱- تشکر
    ۲- من ابتدا qsrand را مقداردهی اولیه کردم با توجه به زمان حال (میلی ثانیه) ، تا هر دفعه به ازای هر آیتم (تک عددی در شروع برنامه با یک آیتم) رنگ¬های مختلفی داشته باشیم و ثابت نباشد (همان دایره قرمز تنهای شما در شروع کار) و همینطور بقیه آیتم¬ها در شروع که با یک رنگ مقداردهی می¬شوند. یعنی:
    qsrand(QTime::currentTime().mse()); ولی فکر کنم یکی پیاده¬سازی کنه، می¬فهمه برای بقیه¬ی کار مناسب در نمی¬آد. چون در حد میلی ثانیه به درد این کار نمی¬خوره و رنگها یکسان می¬شوند!با اینکه با مقادیر مختلف ابتدا qsrand می¬کنم و بعد qrand، باز هم جواب خوبی نمی¬گیرم! بی¬خیال ولی یه کوچولو آموزش برای بعضی در بر داشت!
    ۳- این setRenderHint کردنها باری به سیستم اضافه نمی¬کند؟ خودم در پروژه اضافه می¬کنما!
    ۴- وقتی for رو نوشتید، ctrl + space رو بزنید تا از صفحه¬ی باز شده بتونید for رو انتخاب کنید تا خودش اتومات پر کنه. البته شما که استادید. برای عده¬ای شاید مفید باشه.
    ۵- علت عوض شدن رنگ¬ها (در حقیقت تکه رنگ¬ها) این است که با دوباره پدیدار شدن از هر قسمت آیتم در صفحه، رویداد paint مربوط به آن شی فراخوانی میشه، و چون اینجا رنگها رندم هستند، قسمتهای به نوعی تازه نمایش داده شده¬ی آن آیتم خاص، تغییر رنگ می¬دهند. مثلا در زمانیکه scroll داریم، هر چقدر کندتر حرکت دهیم، تعداد تنوع رنگ بیشتری در هر آیتم خواهیم داشت. نکته¬ی بسیار جالب دیگرش اینه که در صورتیکه widget پدر که در بر گیرنده¬ی scene هست، بزرگ و کوچک ¬شود ، scene آپدیت می¬شود و در نتیجه رویداد paint تمام آیتم¬ها صدا زده می¬شوند و همه¬ی آیتم¬ها تغییر رنگ می¬دهند. سرتون رو درد نیارم، خلاصه دو نوع آپدیت paint اینجا میتونه اعمال بشه! الف- کل scene و در نتیجه تمام آیتم¬های داخل آن و ب- قسمتی از آیتم¬های داخل scene. این دو نوع در ویدئو دیده می-شوند! امید که خوب گفته باشم و برای عده¬ای مفید، زیرا خیلی خیلی مهم هست!
    ۶- اگر setPos رو کامنت کنیم چه می¬شود؟ ما که مقدار اولیه و نهایی را داده¬ایم؟
    ۷- اگر parent رو به QPropertyAnimation ندهیم، چه می¬شود؟ برای من که اتفاقی نیفتاد!
    ۸- اگر بدون انیمیشن موازی، برای هر آیتم start کنیم، چه تغییری ملموس است؟ برای من که هیچ!!!احتمالا یکی سری است و دیگری موازی! و خیلی اگرهای دیگه!
    ۹- در مورد سوالتون که چرا رنگها تغییر می¬کنند؟ آیا می¬توان اینطوری گفت که به علت تغییر در “هر نوع ” property، حتی اگر واقعا تغییری ایجاد نشود، مثلا scale از ۱ به ۱ تغییر کند، رویداد paint صدا زده می¬شود. چون برنامه هوشمند نیست که ببیند واقعا property عوض شده یا نه!
    ۱۰- یه سوال شاید بی¬سوادی! در سازنده¬ی QPropertyAnimation در پارامتر دوم انتظار داریم از نوع QByteArray باشد یا ارث برندگان آن، با کدام یک از سازنده¬های QByteArray و بدون تشکیل QByteArray(“scale”)در پارامتر دوم، میتوان مستقیم نوشت “scale” به جای پارامتر دوم؟ آیا این پشت صحنه انجام می¬شود یا از operator= استفاده می¬شود یا ….؟ منظورم رو رسوندم؟ همیشه این تیپ سوالات برام هست!!!
    ۱۱- در مورد سوالتون من اومدم این تغییرات رو در کد شماانجام دادم:
    QPropertyAnimation*anim=newQPropertyAnimation(item,”pos”,animGroup);
    anim->setStartValue(QPointF(100,100));
    anim->setEndValue(QPointF(i*60,j*60));

    راستی اگر setPos رو کامنت کنیم چه می¬شود؟ ما که مقدار اولیه و نهایی را داده¬ایم؟ برای من که فرقی نکرد!!!

    ۱۲- به نظرم می¬طلبد هزار سوال و اما و اگر در پیاده¬سازی با این مبحث!!!
    ۱۳- انشاءالله برای کسی پیش نیاد اطلاعاتش از دست برود.
    ۱۴- باز هم تشکر.

    • سلام
      ۱-خواهش میکنم
      ۲-آفرین. کار خوبیه
      ۳-مسلما باری اضافه خواهد شد. به هر حال شما هستید که تصمیم میگیرید چی میخواید
      ۴-:) چش
      ۵-آفرین. راضیم ازت 🙂
      ۶-آره هیچ اتفاقی نمی افته میشه setStartValue نکرد
      ۷- وقتی پارالل انیمیشن تموم میشه اگه قراره حذف بشه ( با اون پارامتری که برای تابع استارت ارسال میشه ) تمام بچه هاشم با خودش حذف میکنه. اینه حسنش ۳-۲ 🙂
      ۸-یکم به هم میریزه. امتحان کردی ؟
      ۹-مگه دوبار پرسیدم علت تغییر رنگ رو ؟! دقیقه چند بود دفعه دوم ؟!
      ۱۰- به این وُیگولنگزجد ! Implicit Conversion که در مقابل Explicit Conversion قرار داره . این که شما می نویسی int a = (int)3.14; یه Explicit Conversion هستش و در مقابل بعضی جاها میشه این اتفاق به صورت خودکار بیفته که بهش میگن تبدیل ضمنی. مثلا دیدی که میشه هر جایی که QString لازمه یه رشته سی “رشته” ارسال کرد. اینم همینطوریه
      ۱۱-آفرین راضیم ازت 🙂
      ۱۲-حتما بپرس
      ۱۳-خدا صبرت بده. برای شادی روح تازه گذشته بلند صلوات!
      ۱۴-خواهش میکنم.

      • سلام
        ۱- تشکر
        ۷- آفرین از این جهت درسته، همون قضیه ی معروف پدر و فرزندی. سوالم بیشتر از جنبه ی نمایش در صفحه بود.
        ۸- امتحان که کرده بودم، الان حضور ذهن ندارم ولی یادمه تغییری ندیدم! اگه اشتباه نکنم حتی با بالا بردن زمان نیز انگار همه با هم تغییر می کردند! در صورتیکه باید سری باشند. یا شاید چون در سازنده این کار رو کردم یه مسائل دیگه ای پیش می آد!!!
        ۹- آخه چون یه بار هم در آخرش بدون تغییر در حرکت کل صفحه و scene پرسیدی فکر کردم منظورت از نگاه دیگر است. و اما بعد، اصلا زیبایی این مثال به همین هست که از سه زاویه تابع paint صدا زده می شود:
        الف- ویجت رو بزرگ و کوچک کنیم که چون scene تغییر میکنه به تبع paint همه ی آیتم های دررون آن صدا زده می شود
        ب- وقتی خود scene بزرگ و کوچک میشه و مثلا scroll دار میشد که همان بخشهای آیتم های قرار گرفته در ناحیه scroll تغییر می کنند، همان چند رنگی که در آیتم ها دیدیم.
        ج- و اما دقت کردید که با اینکه هیچ یک از دو مورد بالا اتفاق نمیفته ولی وقتی انیمیشن صدا زده میشه، باز رنگ آیتم ها تغییر می کنه؟ این هم یک زاویه ی دیگر هست که دوباره paint صدا زده میشه!!!همون که در ۹ قبلی اشاره کردم .
        به نظرم اینا خیلی مهم هستند.
        ۱۰- تشکر. درسته، اینا رو در کتابها خوانده بودم، سوالم اینه که این به اصطلاح implicit ها رو از کجا میشه در آورد. سازنده ها و … ؟

        • سلام
          ۱-خواهش میکنم
          ۷-:) آره دیگه منم بودم همین رو میگفتم 🙂
          ۹-آره مورد سوم برای خودمم سواله
          ۱۰- فکر کنم بیشتر تجربیه ! سعی میکنم اگه لیستی پیدا کردم حتما بذارم اینجا.
          ممنون

  4. وااایییی خخخدددااا
    دعا کنید فردا جوابا کنکور میاااددد

جوابی بنویسید

ایمیل شما نشر نخواهد شد.خانه های ضروری نشانه گذاری شده است. *

*


8 + دو =

http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_good.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wmpl_laughing.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_angry.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_bigsmile.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_bigsup.gif 
http://qtips.ir/wp-content/plugins/wp-monalisa/icons/wpml_hopless.gif