כיצד שכבת, להזיז ולהביא גרפיקה בחזית

באמצעות קורונה SDK כדי לתפעל גרפיקה

רכיב המפתח של יצירת, מניפולציה וניהול גרפיקה ב Corona SDK הוא אובייקט לתצוגה. לא רק אובייקט זה יכול לשמש כדי להציג תמונה מקובץ, אולי באותה מידה, הוא מאפשר לך לקבץ את התמונות שלך יחד. זה מאפשר לך להעביר קבוצה שלמה של גרפיקה סביב המסך בבת אחת שכבת גרפיקה על גבי אחד את השני.

הדרכה זו ילמד אותך את היסודות של שימוש בקבוצות תצוגה כדי לארגן את האובייקטים הגרפיים בפרויקט שלך. זה יהיה הוכיח על ידי יצירת שתי שכבות שונות, אחד המייצג את המסך הרגיל ועוד מייצג שכבת מודאלית להציב על זה. בנוסף לשכבת הגרפיקה, נשתמש גם באובייקט המעבר כדי להזיז את הקבוצה המודאלית כולה.

כיצד שוק App שלך

הערה: כדי לבצע יחד עם ערכת לימוד זו, תזדקק לשתי תמונות: image1.png ו- image2.png. אלה יכולים להיות כל התמונות שתבחר, אבל המדריך יעבוד הכי טוב אם יש לך תמונות סביב 100 פיקסלים על 100 פיקסלים. זה יאפשר לך לראות בקלות מה קורה לתמונות.

כדי להתחיל, נפתח קובץ חדש בשם main.lua ונתחיל בבניית הקוד שלנו:

displayMain = display.newGroup (); displayFirst = display.newGroup (); displaySecond = display.newGroup (); global_move_x = display.contentWidth / 5;

סעיף זה של הקוד מגדיר את ספריית ה- ui שלנו ומצהיר על קבוצות תצוגה: displayMain, displayFirst ו- DisplaySecond. נשתמש אלה לשכבה הראשונה הגרפיקה שלנו ולאחר מכן להזיז אותם. המשתנה global_move_x מוגדר ל -20% מרוחב התצוגה כך שנוכל לראות את התנועה.

פונקציה setupScreen () displayMain: הכנס (displayFirst); DisplayMain: הכנס (displaySecond); displayFirst: toFront (); תצוגה שנייה: toFront (); רקע מקומי = display.newImage ("image1.png", 0,0); displayFirst: הכנס (רקע); רקע מקומי = display.newImage ("image2.png", 0,0); תצוגה שנייה: הכנס (רקע); סוֹף

הפונקציה setupScreen מדגימה כיצד להוסיף קבוצות תצוגה לקבוצת התצוגה הראשית. כמו כן אנו משתמשים בפונקציה toFront () כדי להגדיר את השכבות הגרפיות השונות, עם השכבה שאנחנו רוצים בראש כל הזמן שהוכרז לאחרונה.

בדוגמה זו, זה לא ממש צריך להעביר את התצוגה הראשונה אל החזית מאז זה יהיה ברירת המחדל להיות מתחת לקבוצת displaySecond, אבל זה טוב להיכנס להרגל של שכבת במפורש כל קבוצת התצוגה. רוב הפרויקטים יסתיימו עם יותר משתי שכבות.

הוספנו גם תמונה לכל קבוצה. כאשר אנו מתחילים את היישום, התמונה השנייה צריכה להיות על גבי התמונה הראשונה.

הפונקציה ScreenLayer () displayFirst: toFront (); סוֹף

כבר שכבנו את הגרפיקה שלנו עם קבוצת DisplaySecond על גבי קבוצת התצוגה הראשונה. פונקציה זו תעביר את התצוגה הראשונה לחזית.

function moveOne () displaySecond.x = displaySecond.x + global_move_x; סוֹף

הפונקציה MoveOne תעביר את התמונה השנייה ימינה ב -20% מרוחב המסך. כאשר אנו קוראים לפונקציה זו, קבוצת ה - DisplaySecond תהיה מאחורי קבוצת התצוגה הראשונה.

function moveTwo () displayMain.x = displayMain.x + global_move_x; סוֹף

הפונקציה MoveTwo תעביר את שתי התמונות ימינה ב -20% מרוחב המסך. עם זאת, במקום להעביר כל קבוצה בנפרד, נשתמש בקבוצה displayMain כדי להעביר את שניהם בו-זמנית. זוהי דוגמה מצוינת לאופן שבו קבוצת תצוגה שמכילה קבוצות תצוגה מרובות יכולה לשמש לתפעול גרפיקה רב בעת ובעונה אחת.

setupScreen (); timer.performWithDelay (1000, ScreenLayer); timer.performWithDelay (2000, moveOne); timer.performWithDelay (3000, moveTwo);

קוד זה האחרון של קוד מדגים מה קורה כאשר אנו מפעילים את הפונקציות האלה. נשתמש בפונקציה timer.performWithDelay כדי לפטר את הפונקציות בכל שנייה לאחר השקת האפליקציה. אם אינכם מכירים את הפונקציה הזו, המשתנה הראשון הוא הזמן לעכב את הביטוי באלפיות השנייה והשנייה היא הפונקציה שאנחנו רוצים לרוץ אחרי העיכוב.

כאשר אתה מפעיל את היישום, אתה צריך להיות image2.png על גבי image1.png. הפונקציה ScreenLayer יורה ולהביא image1png לחזית. הפונקציה MoveOne תעביר את image2.png אל מתחת לתמונה image1.png, והפונקציה MoveTwo תידלק אחרון, ותנוע את שתי התמונות בו-זמנית.

כיצד לתקן iPad איטי

חשוב לזכור שלכל אחת מהקבוצות הללו יכולות להיות עשרות תמונות. ובדיוק כאשר הפונקציה MoveTwo העבירה את שתי התמונות עם שורה אחת של קוד, כל התמונות בתוך קבוצה ייקחו את הפקודות שניתנו לקבוצה.

מבחינה טכנית, קבוצת displayMain יכולה לכלול הן קבוצות תצוגה והן תמונות הכלולות בתוכה. עם זאת, זה נוהג טוב לתת כמה קבוצות כמו displayMain לשמש מכולות עבור קבוצות אחרות ללא תמונות כדי ליצור ארגון טוב יותר.

הדרכה זו עושה שימוש באובייקט התצוגה. למידע נוסף על אובייקט התצוגה.

כיצד להתחיל בפיתוח יישומים iPad