composer.*

类型
版本 版本 2024.3703
关键词 composer, 场景
另请参阅 Composer 库 (指南)

概览

Composer 是 Solar2D 中官方的场景(屏幕)创建和管理库。该库为开发者提供了一种创建和转换各个场景的简便方法。

Composer 库中的主要对象是 scene 对象。这是一个响应特定事件的事件监听器,它包含一个唯一的 self.view 属性,该属性是对与场景关联的 显示组 的引用。您应该将与场景相关的视觉元素插入到此 self.view 中。

有关场景文件结构示例,请参阅下面的场景模板部分。有关场景事件的更多信息,包括名称和调度顺序,请参阅 场景事件 文档。

函数

composer.getScene()

composer.getSceneName()

composer.getVariable()

composer.gotoScene()

composer.hideOverlay()

composer.loadScene()

composer.newScene()

composer.removeHidden()

composer.removeScene()

composer.setVariable()

composer.showOverlay()

属性

composer.isDebug

composer.recycleOnLowMemory

composer.recycleOnSceneChange

composer.stage

场景模板

以下模板可用于创建新的场景文件。请注意,此模板包含场景中所有潜在事件的侦听器函数,但您只需包含要处理的事件的侦听器。

local composer = require( "composer" )

local scene = composer.newScene()

-- -----------------------------------------------------------------------------------
-- Code outside of the scene event functions below will only be executed ONCE unless
-- the scene is removed entirely (not recycled) via "composer.removeScene()"
-- -----------------------------------------------------------------------------------




-- -----------------------------------------------------------------------------------
-- Scene event functions
-- -----------------------------------------------------------------------------------

-- create()
function scene:create( event )

    local sceneGroup = self.view
    -- Code here runs when the scene is first created but has not yet appeared on screen

end


-- show()
function scene:show( event )

    local sceneGroup = self.view
    local phase = event.phase

    if ( phase == "will" ) then
        -- Code here runs when the scene is still off screen (but is about to come on screen)

    elseif ( phase == "did" ) then
        -- Code here runs when the scene is entirely on screen

    end
end


-- hide()
function scene:hide( event )

    local sceneGroup = self.view
    local phase = event.phase

    if ( phase == "will" ) then
        -- Code here runs when the scene is on screen (but is about to go off screen)

    elseif ( phase == "did" ) then
        -- Code here runs immediately after the scene goes entirely off screen

    end
end


-- destroy()
function scene:destroy( event )

    local sceneGroup = self.view
    -- Code here runs prior to the removal of scene's view

end


-- -----------------------------------------------------------------------------------
-- Scene event function listeners
-- -----------------------------------------------------------------------------------
scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )
scene:addEventListener( "hide", scene )
scene:addEventListener( "destroy", scene )
-- -----------------------------------------------------------------------------------

return scene

源代码

如果您要添加/修改场景过渡效果或扩展功能,请从 GitHub 下载源代码并将其包含在您的项目中(请参阅 使用外部模块)。