2017-04-18 28 views
0

这是我一次又一次遇到的问题。我无法把头转过来。这段代码是在创建场景下创建的,现在我想把它放在一个函数中,并且通过循环自动在不同位置生成这些块。我得到的错误是: newRect中错误的参数#1(预期的数字) - 第一行。 sceneGroup是一个零值。将函数添加到sceneGroup中?

我已经试过的解决方案是:在脚本的顶部 1)定义sceneGroup。但是,然后我得到错误,upvalue是一个零值。 2)立即定义它。 - 零值。

如果有人可以解释这对我,我将非常感激。我不断收到这样的问题。

local Backgroundrectangle = display.newRect(sceneGroup, 75, 75, display.contentWidth-150, display.contentHeight/2) 
Backgroundrectangle.isVisible = false 
Backgroundrectangle.anchorX = 0 
Backgroundrectangle.anchorY = 0 

aAbackground = display.newRoundedRect(sceneGroup, Backgroundrectangle.x, Backgroundrectangle.y, 100, 125, 10) 
sceneGroup:insert(aAbackground) 
aAbackground.id = "a" 
aAbackground.strokeWidth = 2 
aAbackground:setFillColor(gradient) 
aAbackground:setStrokeColor(0.2) 
aAmenutext = display.newText("Aa", 100, 200, "Comic Sans MS", 50) 
aAmenutext.x = aAbackground.x 
aAmenutext.y = aAbackground.y - aAbackground.height/6 
aAmenutext:setFillColor(0.2) 
sceneGroup:insert(aAmenutext) 
+1

[介绍作曲API](https://coronalabs.com/blog/2014/01/21/introducing-the-composer-api-plus-tutorial/)和[教程:了解作曲API](HTTPS ://coronalabs.com/blog/2014/06/03/tutorial-understanding-the-composer-api/)是有关使用作曲家和场景组的有用信息的来源。我建议你阅读它:) – ldurniat

回答

1

“的upvalue为零”指的是运行时预计sceneGroup是功能的范围之外定义的本地,但是这不是在电晕这样做的通常的方法。

如果你有这样的

local composer = require("composer") 
local scene = composer.newScene() 

在该场景你的Lua文件的顶部,只要你想一个显示对象(可能在你的scene:create()法)添加到场景中的GroupObject,你可以声明

local sceneGroup = scene.view 

,然后使用sceneGroup因为你一直。 scene将其定义(它具有文件作用域)和view属性为您提供了场景的GroupObject。