quick-x 2.2.1 语法摘记之framework.display(二)

display.newSprite

创建并返回一个 CCSprite 显示对象。

display.newSprite() 有三种方式创建显示对象:

  1. 从图片文件创建
  2. 从缓存的图像帧创建
  3. 从 CCSpriteFrame 对象创建

修改显示内容

-- 用 Yes.png 做显示内容
local sprite = display.newSprite("Yes.png")
 
-- 换成 No.png
local spriteFrame = display.newSpriteFrame("No.png")
sprite:setDisplayFrame(spriteFrame)
 
-- 检查当前的显示内容是不是指定的 CCSpriteFrame 对象
print(sprite:isFrameDisplayed(spriteFrame)) -- 输出 true,因为当前的显示内容是 No.png
 
-- 返回当前的显示内容 CCSpriteFrame 对象
local currentSpriteFrame = sprite:getDisplayFrame()
有时候我们可以创建由一组图片组成的动画,然后直接设置 sprite 显示这个动画的第几帧

-- 创建一个跑步的动画
local frames = display.newFrames("Run%04d.png", 1, 8) -- Run0001.png 到 Run0008.png
local animation = display.newAnimation(frames, 0.5 / 8) -- 0.5 秒播放 8 帧
display.setAnimationCache("Run", animation) -- 用 Run 这个名字将动画缓存起来
 
-- 创建 sprite
local sprite = display.newSprite(frames[1])
 
-- 在需要的时候,设置显示内容为 Run 动画的第 5 帧
sprite:setDisplayFrameWithAnimationName("Run", 4) -- 动画是 C++ 对象,所以索引从 0 开始

翻转图像

CCSprite 支持水平翻转和垂直翻转。

sprite:setFlipX(true) -- 启用水平翻转
print(sprite:isFlipX()) -- 返回是否启用了水平翻转
 
sprite:setFlipY(true) -- 启用垂直翻转
print(sprite:isFlipY()) -- 返回是否启用了垂直翻转

display.newScale9Sprite

CCSprite9Scale 就是通常所說的“九宫格”图像。一个矩形图像会被分为 9 部分,然后根据要求拉伸图像,同时保证拉伸后的图像四边不变形。

-- 创建一个 Scale9 图像,并拉伸到 400, 300 点大小
local sprite = display.newScale9Sprite("Box.png", 0, 0, CCSize(400, 300))

display.newBackgroundTilesSprite

创建并返回一个在指定区域内重复的显示对象。

格式:

sprite = display.newBackgroundTilesSprite(图像名, [CCRect 对象])
如果不指定第二个参数,将默认创建整个屏幕大小的图像。

display.newCircle

创建并返回一个 CCCircleShape (圆)对象。

格式:

shape = display.newCircle(圆的半径)

display.newRect

创建并返回一个 CCRectShape (矩形)对象。

格式:

shape = display.newRect(宽度, 高度 | CCRect | CCSize)

用法示例:

-- 下面两行代码都创建一个宽度 200,高度 100 的矩形
local shape1 = display.newRect(200, 100)
local shape2 = display.newRect(CCSize(200, 100))
 
-- 创建一个宽度 200,高度 100 的矩形,并且定位于 50, 80
local shape3 = display.newRect(CCRect(50, 80, 200, 100))

display.newPolygon

创建并返回一个 CCPolygonShape (多边形)对象。

格式:

shape = display.newPolygon(包含多边形每一个点坐标的表格对象, [缩放比例])

用法示例:

local points = {
    {10, 10},  -- point 1
    {50, 50},  -- point 2
    {100, 10}, -- point 3
}
local polygon = display.newPolygon(points)
polygon:setClose(true) -- 将第一个点和最后一个点相连

display.align

将指定的显示对象按照特定锚点对齐。

格式:

display.align(显示对象, 锚点位置, [x, y])

display.addSpriteFramesWithFile

将指定的 Sprite Sheets 材质文件及其数据文件载入图像帧缓存。

用法示例:

display.addSpriteFramesWithFile("Sprites.plist", "Sprites.png")

display.removeSpriteFramesWithFile

从内存中卸载 Sprite Sheets 材质和数据文件。

格式:

display.removeSpriteFramesWithFile(数据文件名, 材质文件名)

display.newBatchNode

从指定的图像文件创建并返回一个批量渲染对象。

格式:

batch = display.newBatchNode(图像文件名)

用法示例:

local imageName = "Sprites.png"
display.addSpriteFramesWithFile("Sprites.plist", imageName) -- 载入图像到帧缓存
 
-- 下面的代码绘制 100 个图像只用了 1 次 OpenGL draw call
local batch = display.newBatch(imageName)
for i = 1, 100 do
    local sprite = display.newSprite("#Sprite0001.png")
    batch:addChild(sprite)
end
 
-- 下面的代码绘制 100 个图像则要使用 100 次 OpenGL draw call
local group = display.newNode()
for i = 1, 100 do
    local sprite = display.newSprite("#Sprite0001.png")
    group:addChild(sprite)
end

display.setAnimationCache

以指定名字缓存创建好的动画对象,以便后续反复使用。

用法示例:

local frames = display.newFrames("Walk%04d.png", 1, 8)
local animation = display.newAnimation(frames, 0.5 / 8) -- 0.5 秒播放 8 桢
display.setAnimationCache("Walk", animation)
 
-- 在需要使用 Walk 动画的地方
sprite:playAnimationOnce(display.getAnimationCache("Walk")) -- 播放一次动画

display.getAnimationCache

取得以指定名字缓存的动画对象,如果不存在则返回 nil。

格式:

animation = display.getAnimationCache(名字)

~~

display.removeAnimationCache

删除指定名字缓存的动画对象。

格式:

display.removeAnimationCache(名字)

你可能感兴趣的:(lua,cocos2d-x,Quick)