2016-05-14 4 views
2

私は多くの経験のない新しいプログラマーです。良いnoobとして次のコード行にエラーや不正確さが表示される可能性が非常に高いので、あらかじめ自分自身を推測しています。 したがって、状況は次のようになります。 最近、私はLUA(コロナsdkを使用)という新しいプログラミング言語(明らかに新しいもの)とインタフェースしています。私は簡単なコードを書く言語に近づいた。 今重力の影響を受ける2つの矩形を表示するだけのプログラムを実行しようとしています。 CORONAでPC上のアプリケーションをエミュレートしようとすると、何の問題もなく動作します。アンドロイドOSのためにそれを構築した後、自分の携帯電話にインストールしたし、結果は以下の通りですエラーメッセージでそれを実行した:LUAエラーアンドロイドでアプリケーションを実行しています

「main.lua.35:

これはエラーメッセージです:エラー:テーブルが期待されています。これが関数呼び出しの場合は、 '。'を使用している可能性があります。代わりに「:」:

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) 

私は私を助けるためにしようとする人たちに非常に感謝されるだろう」

これはコードです。

+0

エラーメッセージに完全に説明されています。それは関数の引数(実際には第1引数)としてテーブルを期待しており、 '.'を': 'に置き換えることを示唆しています。これは 'tab:func(arg1、arg2)'は 'tab.func(tab、arg1、arg2)'のショートカットであるからです。プログラムは自動的にテーブルを関数の第1引数として挿入します。 – user6245072

+0

「物理:addBody(プラットフォーム、静的」)と「物理:addBody(myImage、 "動的"、iconCollision)」またはさらには 'physics.addBody(phisycs、platform、" static ")'および 'physicsを呼び出してみてください。 addBody(物理、myImage、 "動的"、iconCollision) 'それは動作するはずです。 – user6245072

+0

行 'platform.collision = onCollision'は、関数onCollisionの後になければなりません。 –

答えて

0

おそらくevent.zRotationnullと思われます。 iOSでは、適切なUIRequiredDeviceCapabilitiesを使用できます。 building.settingsにこれを加えます。UIRequiredDeviceCapabilities = { ["gyroscope"]=true } AndroidではusesFeatures = { { name="android.hardware.sensor.gyroscope", required=true } }を設定します。

0

「icon.png」の大文字と小文字の問題は、Androidデバイス上ではエラーにつながり、シミュレータには表示されませんでした。 myImageがロードされない場合:addEventListenerはerroreを表示します。おそらく表示されます。 また、コードの一部を除外して、デバイスのバックグラウンドでプログラムを実行してみてください。私はそのようにシミュレータとの違いを発見した。