2016-05-14 5 views
2

Ich bin ein neuer Programmierer mit wenig Erfahrung; als ein gutes noob ist es sehr wahrscheinlich, dass die nächsten Codezeilen, die Sie sehen werden, eine große Anzahl von Fehlern oder Ungenauigkeiten aufweisen können, daher entschuldige ich mich im Voraus. So ist die Situation die folgende: In letzter Zeit bin ich Schnittstelle mit einer neuen Programmiersprache (neu für mich offensichtlich), das ist LUA (mit Corona SDK). Ich ging an die Sprache und schrieb einfache Codes. Jetzt versuche ich ein Programm auszuführen, das einfach nur zwei Rechtecke anzeigen soll, die von der Schwerkraft betroffen sind. Wenn ich versuche, die Anwendung auf meinem PC mit CORONA zu emulieren, funktioniert es ohne irgendein Problem; nachdem es für Android OS gebaut zu haben, es auf meinem Handy installiert hat, und es ist das Ergebnis läuft zu haben, ist eine Fehlermeldung, die folgende ist:LUA FEHLER Ausführen der App auf Android

Dies ist die Fehlermeldung:

„main.lua.35: FEHLER: Tabelle erwartet. Wenn dies ein Funktionsaufruf ist, haben Sie möglicherweise '.' statt ‚:‘ "

Dies ist der Code:

local physics = require("physics") 
physics.start() 

local _W = display.contentWidth 
local _H = display.contentHeight 

local platform = display.newRect(
    --x = 
    _W/2, 
    --y = 
    _H/2, 
    --width = 
    100, 
    --height = 
    100 
) 

platform.surfaceType = "rectangle" 

local myImage = display.newImage("icon.png",_W/2,50) 

local iconCollision = { 
    friction = 0.0, --attrito 
    bounce = 0.0, --rimbalzo (forse) 
    isSensor = true --collisione con altri oggetti 
} 

physics.addBody(platform,"static") 
physics.addBody(myImage,"dynamic",iconCollision) --this is line 35 

platform.collision = onCollision 

local function onGyroscopeDataReceived(event) 
    local deltaRadians = event.zRotation * event.deltaTime 
    local deltaDegrees = deltaRadians * (180/math.pi) 
end 

local function dragImage(event) 
    local t=event.target 
    print(event.phase) 
    if(event.phase == "moved") then 
     t.x = event.x 
     t.y = event.y 
    end 
end 

local function onCollision(event) 
     if (event.phase == "began") then 
      print("toccato") 
     end 
end 

if system.hasEventSource("gyroscope") then 
    Runtime:addEventListener("gyroscope", onGyroscopeDataReceived) 
end 

Runtime:addEventListener("collision",onCollision) 
myImage:addEventListener("touch",dragImage) 

werde ich mit denen sehr dankbar sein, die versuchen, mir zu helfen.

+0

Die Fehlermeldung erklärt es vollständig. Es besagt, dass es eine Tabelle als Funktionsargument erwartet (eigentlich das erste Argument) und schlägt vor, '.' Durch ':' zu ersetzen. Dies liegt daran, dass 'tab: func (arg1, arg2)' eine Abkürzung für 'tab.func (tab, arg1, arg2)' ist. Das Programm fügt automatisch die Tabelle als erstes Argument der Funktion ein. – user6245072

+0

Versuchen Sie, 'physics: addBody (Plattform," statisch ")' und 'Physik: addBody (myImage," dynamisch ", iconCollision)' oder sogar 'physics.addBody (phisycs, Plattform," statisch ")' und 'physics. addBody (physics, myImage, "dynamic", iconCollision) 'und es sollte funktionieren. – user6245072

+0

Die Zeile 'platform.collision = onCollision' muss NACH dem Rumpf der Funktion' onCollision' sein. –

Antwort

0

Ich denke, vielleicht event.zRotation ist null. Unter iOS können Sie das entsprechende UIRequiredDeviceCapabilities verwenden. In building.settings fügen Sie dieses UIRequiredDeviceCapabilities = { ["gyroscope"]=true } hinzu. Auf Android stellen Sie usesFeatures = { { name="android.hardware.sensor.gyroscope", required=true } } ein.

0

Suchen Sie nach dem Namen des Bildes auf der Festplatte, "icon.png", Groß- und Kleinbuchstaben, auf Android-Gerät könnte es zu Fehlern führen, nicht in Simulatoren angezeigt. Wenn myImage nicht geladen wird: addEventListener würde einen Fehler anzeigen, möglicherweise den, den Sie sehen. Versuchen Sie auch, Codeteile auszuschließen und das Programm dann auf dem Gerät auszuführen. Ich habe auf diese Weise Unterschiede mit dem Simulator gefunden.

Verwandte Themen