2017-04-18 5 views
0

Dies ist ein Problem, auf das ich immer wieder stoße. Ich kann es einfach nicht verstehen. Dieser Code war unter create scene jetzt möchte ich es in eine Funktion mit der Idee setzen, diese Blöcke an verschiedenen Stellen automatisch durch eine Schleife zu erzeugen. Die Fehler, die ich bekomme, sind: schlechtes Argument # 1 in newRect (Anzahl erwartet) - 1. Zeile. Szenegruppe ist ein Nullwert.Hinzufügen zu SzeneGruppe innerhalb einer Funktion?

Die Lösungen, die ich ausprobiert habe, sind: 1) defining sceneGroup am Anfang des Skripts. Aber dann bekomme ich den Fehler, dass upvalue ein Nullwert ist. 2) Definieren Sie es unmittelbar vorher. - kein Wert.

Wenn mir jemand das erklären könnte wäre ich sehr dankbar. Ich bekomme immer solche Probleme.

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

[Einführung in die Composer API] (https://coronalabs.com/blog/2014/01/21/introducing-the-composer-api-plus-tutorial/) und [Tutorial: Die Composer API verstehen] (https : //coronalabs.com/blog/2014/06/03/tutorial-understanding-the-composer-api/) sind beide Quellen von nützlichen Informationen über die Verwendung von Komponist und Szenengruppe. Ich empfehle dir, es zu lesen :) – ldurniat

Antwort

1

„aufzuwerten ist gleich Null“ bedeutet, dass die Laufzeit sceneGroup erwartet eine lokale außerhalb des Bereichs der Funktion definiert zu sein, aber dies ist nicht der üblicher Weg, dies in Corona zu tun.

Wenn Sie diese haben

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

an der Spitze Ihrer Lua-Datei für die Szene, wenn Sie eine Display zu der Szene Groupobject (möglicherweise in Ihrem scene:create() Methode) hinzufügen möchten, können Sie erklären

local sceneGroup = scene.view 

und dann sceneGroup verwenden, wie Sie es waren. scene wird definiert (Dateibereich) und die view-Eigenschaft gibt Ihnen das GroupObject der Szene.

Verwandte Themen