如何分層,移動和將圖形帶到前面

使用Corona SDK來操縱圖形

在Corona SDK中創建,操作和管理圖形的關鍵組件是顯示對象。 這個對像不僅可以用來顯示文件中的圖像,也可能同樣重要,它可以讓您將圖像分組在一起。 這可以讓您一次移動整個屏幕圖形,並將圖形層疊在一起。

本教程將向您介紹使用顯示組來組織項目中圖形對象的基礎知識。 這將通過創建兩個不同的圖層來演示,一個圖層代表正常屏幕,另一個圖層代表放置在圖層頂部的模態圖層。 除了分層圖形之外,我們還將使用轉換對象來移動整個模態組。

如何推廣您的應用程序

注意: 為了跟隨本教程,您將需要兩個圖像: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:insert(displayFirst); displayMain:插入(displaySecond); displayFirst:toFront(); displaySecond:toFront(); local background = display.newImage(“image1.png”,0,0); displayFirst:插入(背景); local background = display.newImage(“image2.png”,0,0); displaySecond:插入(背景); 結束

setupScreen函數演示瞭如何將顯示組添加到主顯示組。 我們還使用toFront()函數來設置不同的圖形圖層,並在最後聲明所有時間的頂層。

在這個例子中,並不是真的需要將displayFirst移動到前面,因為它將默認位於displaySecond組的下方,但是可以養成明確分層每個顯示組的習慣。 大多數項目最終會有兩層以上。

我們還為每個組添加了一張圖片。 當我們啟動應用程序時,第二張圖片應位於第一張圖片的頂部。

函數screenLayer()displayFirst:toFront(); 結束

我們已經使用displayFirst組頂部的displaySecond組將圖形分層。 此功能會將displayFirst移到最前面。

函數moveOne()displaySecond.x = displaySecond.x + global_move_x; 結束

moveOne函數會將第二個圖像向右移動20%的屏幕寬度。 當我們調用這個函數時,displaySecond組將位於displayFirst組的後面。

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函數在應用程序啟動後每秒啟動函數。 如果你不熟悉這個函數,第一個變量是以毫秒錶示的延遲時間,第二個是我們想要在延遲後運行的函數。

當你啟動應用程序時,你應該在image1.png的頂部有image2.png。 screenLayer函數將會觸發並將image1.png放到前面。 moveOne函數會將image2.png從image1.png中移出,moveTwo函數將最後觸發,同時移動兩個圖像。

如何修復緩慢的iPad

重要的是要記住,這些組中可能有幾十個圖像。 正如moveTwo函數用一行代碼移動兩個圖像一樣,一個組中的所有圖像都將採用給予該組的命令。

從技術上講,displayMain組可以同時包含顯示組和圖像。 然而,讓一些像displayMain這樣的組充當沒有任何圖像的其他組的容器以創建更好的組織是一種好的做法。

本教程使用顯示對象。 了解有關顯示對象的更多信息。

如何開始開發iPad應用程序