Corona SDK中逐帧动画的更好方法

时间:2014-09-08 17:12:36

标签: animation graphics sdk corona frame

我需要在主应用菜单出现之前在启动画面后显示动画。设计师在3D软件中制作动画,并在PNG图像中逐帧导出。

我搜索并找到某人建议的MovieClip库。我使用它并在Corona的模拟器中运行良好但它在设备中崩溃。我想问题在于记忆。

图片尺寸为2048 x 1536(专为iPad视网膜屏幕设计),平均尺寸约为30KB。大约有300张图片。所以我也不能使用spritesheet。

请建议是否有更好的方法在Corona中进行此类动画。我搜索了几天甚至发布在他们的论坛上,没有好结果。

由于

2 个答案:

答案 0 :(得分:0)

据我所知,Corona SDK不支持视频播放(除非它使用本机窗口)。如果动画片段不起作用,您可以尝试加载每个图像,然后使用enterframe函数循环播放它们。

这样的东西
--table to hold images you are on
local localImages = {}

--how many images in splash
local totalImages = 100

--create images
for i = 1, totalImages, 1 do
    --create different images. Change these to load in images using newImageRect of course
    localImages[i] = display.newRect( display.contentWidth*.5, display.contentHeight*.5, display.contentWidth, display.contentHeight )
    localImages[i]:setFillColor( i/totalImages )

    --make images invisible
    localImages[i].isVisible = false
end


--timer
local myTimer = 1

--first frame on
localImages[1].isVisible = true

-- listener function to play images one by one
local function onEveryFrame( event )
    --count
    myTimer = myTimer + 1

    --turn on next frame
    localImages[myTimer].isVisible = true

    --turn off last frame
    localImages[myTimer-1].isVisible = false

    --played all images in splash
    if myTimer == totalImages then
        --removes enterFrame
        Runtime:removeEventListener( "enterFrame", onEveryFrame )       
    end
end

-- assign the above function as an "enterFrame" listener
Runtime:addEventListener( "enterFrame", onEveryFrame )

不知道这是否适用于您正在处理的图像。告诉我它是怎么回事! :)

乔。

答案 1 :(得分:0)

图像中超过9M ......哇......

Corona的设计方式你需要使用精灵,所以是的尝试优化pngs(我在TinyPNG(www.tinypng.com)上运气真好,然后将它们组合成精灵表并使用动画功能。

请记住,您可以使用多个精灵表,因此您可以将它们分成3张100张,6张50张等。