Corona中文站

强大、易学的跨平台(iOS/Android)开发框架。QQ群1:74390406(满) 群2:221929599

导航

五分钟学会Corona(三十三) - 物理引擎
Corona物理API

corona可以让你很容易的添加物理系统到你的游戏中,甚至如果你以前从来没有用过物理引擎。因为底层引擎是基于众所周知的Box2D构建的,我们采用了一个很激进的设计,使得传统需要的大多数代码都被省略了。

另外,我们无缝地把物理引擎添加到移动开发中:例如用我们的新的“gameUI”库,任何物理对象现在都可以被多点拖放,且只需要一行代码。

为了使用corona的物理引擎,你可从熟悉的Corona对象开始。Corona对待物理 body属性,就像对待它们图像对象的属性的扩展一样:任何标准的display object,包括image,向量绘图,或 animated sprites,都可以被“物理化”,且在模拟器中自动和其他对象交互。
...
五分钟学会Corona(三十二) - Application Configuration Options
Application Configuration Options

Corona applications may be configured through two optional Lua files, which should be saved to your project folder along with your main.lua file:

• config.lua - Handles global content scaling and alignment for multiple screens, along with a variety of other runtime options like the framerate and antialiasing for vector graphics. (See documentation here)
...
五分钟学会Corona(三十一) - 一般设计原则
避免使用全局变量的策略

1 Overcoming Scoping Issues of Locals


2 确保listener中的一切都是Local的


暂停和重启动画

如果你采用可编程动画技术,你就可以暂停或重启动画。这里有一个关于如何用按钮开始和停止一个动画的例子:


管理屏幕

当你设置你的程序界面时,你可能喜欢以屏幕的形式来查找你的分镜头,比如splash屏幕,home屏幕(有时候叫主屏幕或菜单屏幕),或一切其他屏幕。


组对象时在每个屏幕上管理内容最完美的方法。这样,你可以创建一个组给splash屏幕,一个组给home屏幕,另一些给其他屏幕。你可以利用transition库来创建动画在屏幕间transition(淡出入、滑动等)。
...
五分钟学会Corona(三十) - Corona API 热身
Display 库

属性:


display.contentCenterX -- (equals 0.5*display.contentWidth)

display.contentCenterY -- (equals 0.5*display.contentHeight)

display.contentScaleX -- (the ratio between content pixel and screen pixel width)

display.contentScaleY -- (the ratio between content pixel and screen pixel height)
...
五分钟学会Corona(二十九) - 内存管理改进
注意: 本文档的信息适用于Corona 2.0 SDK Beta 7(或更早版本)的开发者,开发技术对内存管理技术的倚赖,不再使用。尤其,如果你存在代码这样使用 object:removeSelf() or group:remove(),你需要确保它不再倚赖于display object生命周期过时的假设。


再Corona 2.0 SDK的Beta 8期间,当display object被从他们的父组中删除,他们将被转换为孤儿。这些孤儿display object将不会被垃圾回收,直到所有指向它们的lua引用都被剔除。也就是说,lua代码中不再可以被访问。然而,当如display object被CG时,那些display object渲染相关的资源,不会立即被CG。而是,corona只能定期搜集这些资源(最多256 enterFrame事件后),并且这个特定的处理只会发生在屏幕更新时。
...
五分钟学会Corona(二十八) - 模块和包
Corona支持lua模块功能,以创建和加载附加的库。有许多库都携带在sdk里。两个典型的例子库是:“ui.lua”(用来创建翻滚按钮)和“sprite.lua”(用来创建动画精灵,或“ movieclips”)。

这些库可以在“Button”和“MoiveClip”例子工程中找到,位于SDK的SampleCode目录里。为了在你自己的项目中引用之,你需要将他们拷贝到你的项目目录里。

你也可以创建你自己的lua模块,其对于组织多个文件到一个大项目中很有用。或者为将来的项目创建可重用的代码库。
...
五分钟学会Corona(二十七) - 性能和优化
当你开发你的应用程序时,你总是会考虑你的设计选择,将会怎样影响到你程序的性能。尽管近来计算能力有所改善,但移动设备仍然要面对一些根本性制约:处理能力、内存使用以及电池寿命等。所以,在性能和优化方面最好的考虑,也不仅仅是加快响应速度,也包括最小化内存使用,和最大化电池寿命。


高效使用内存

在移动设备上,内存是一个关键资源。有些设备会当你吃掉太多内存的时候,强行关闭你的应用程序。


• 消除内存泄露. 你的应用程序不应该造成内存泄露。允许内存泄露意味着你的应用程序可能在之后它需要内存的时候无法得到内存。尽管Lua使用自动内存管理,但在你的代码里还是有可能发生内存泄露。 (see Memory Allocation).例如全局变量永远不会被回收,它需要你告诉lua,以 (globalVar = nil)的方式来回收这些变量。如果一个全局变量是 table,那么这个table中的每一个项目都只有在你使用nil out时,才会被释放。(globalVar.item = nil)
...
五分钟学会Corona(二十六) - 本地 UI
本地库提供了访问设备的多种本地UI特性。

Activity Indicator

native.setActivityIndicator( )

native.setActivityIndicator( visible ) 显示或隐藏一个平台指定的 activity indicator。Touch Event在indicator 被显示的时候被忽略。

注意,直到lua代码块的结尾,这个indicator才会显示。代码块包含setActivityIndicator(true) 调用已经完全执行。同时,如果你在相同的代码块里显示和隐藏这个indicator,那么indicator并不会正常显示。而是应该,在不同的函数调用或函数回调中,隐藏这个activity indicator。例如,下面的代码使用timer对象在2秒后隐藏indicator。
...
五分钟学会Corona(二十五) - Event 和 Listener
Event被分发到listener上。Event Listener既可是函数,也可以时对象(参看前面的 Function vs Table Listeners)。两种情况下,当事件发生,listener将被调用,并且得到一个描述event的table。所有的event将有一个属性name,来识别是哪一种事件。

注册事件

你用Corona库创建的一些对象是都是事件监听器。这包括所有的display object和全局Runtime对象。你可以使用下列对象方法为event添加和删除listener:
...
五分钟学会Corona(二十四) - 交互性和事件检测
事件是你创建交互程序的主要方式。它们是在你的程序中触发响应的一种方式。例如,你可以把任意display object放入一个交互按钮中。这种灵活性在Corona SDK中是最重要的东西。


全局事件

一些事件是广播的,例如“enterFrame”,“system”,“orientation”等。这些事件是全局的,因为它们不针对任何一个特定的对象。相反,它们广播给所有感兴趣的listener。下面这个来自“Orientation”例子的代码,它说明了你的应用程序如何响应定位改变:


local label = display.newText( "portrait", 0, 0, nil, 30 )
...
«5678910111213141516171819»

日历

<< 2014-10 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

最近发表

Copyright 2011-2015 BuildApp.Net. All Rights Reserved.