在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%,因此我们可以看到移动。
function 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组之下,但是养成明确分层显示每个显示组的习惯是很好的。大多数项目最终会有两层以上。
我们还为每个组添加了一个图像。当我们启动应用程序时,第二个图像应位于第一个图像的顶部。
function screenLayer()displayFirst:toFront();结束
我们已经在displayFirst组的顶部将displaySecond组分层。此功能将displayFirst移动到前面。
function 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应用程序