Corona sdk - 触摸问题进入webView的下一个场景

时间:2014-07-18 17:20:36

标签: webview lua touch corona scene

使用Sublime处理Corona sdk Simulator。我将每个apk安装到手机上进行测试。

我对Corona sdk和Lua很新,并且一直在阅读问题和答案,有些人已经帮助过,我仍然无法正确地进行这种特殊的过渡。我尝试做的是使用我们已有的网络应用程序,并在欢迎页面后使用webview打开。我越来越了解我越花时间,但我会感谢一些帮助,我可能会出错?

我得到第一页显示我的徽标,听众似乎正在工作。但是,当我在我的Android GalaxyS3上安装它时触摸不起作用,没有任何反应。这是我正在使用的代码。

我不确定它是否只是一两行我可能会完全离开或完全离开。我还在构建中打开了访问网络的权限。谢谢你的帮助。我希望我的徽标成为打开场景的按钮或我需要研究的滑动。出于某种原因,我无法触摸工作并带我经过第一个欢迎屏幕。我有三个与我合作的文件。 main.lua config.lua build.lua 。所有这些代码都是 main

local myTextObject = display.newText( "Welcome to", 320, 110, "Arial", 60)
local Btn = display.newImage( "logo-final-blackbkg-stacked-otl.png" )
Btn.x = 320; Btn.y = 530;

local myListener = function( webview )
    print( "Listener called with event of type: touch"..webview.name )
end

Runtime:addEventListener( "touch", myListener )
Runtime:addEventListener( "system", myListener )

function Btn:touch( event )
    if event.phase == "began" then
        print( "Event dispatched; Btn: scene")
    end
    return true
end

local function myTouchListener()

    if ( event.phase == "began" ) then
        --code executed when the button is touched

local playBtn;
local exitBtn;

local function onPlayBtnRelease()
    composer.gotoScene( "main", "fade", 500)
    return true
end

local function onExitBtnRelease()
    composer.gotoScene("main", "fade", 500)
    return true -- indicates successful touch
end

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


function scene:create ( event )

    local sceneGroup = self.view

webview:addwebListener("requestUrl", webview)
scene:addEventListener("create", scene)
end

function scene:show ( event )


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

    if ( phase == "will") then
        elseif (pase == "did") then

local socket = require("socket")

--Connect to the client
local client = socket.connect("www.stockmashin.com",  80)
--Get IP and Port from client
local ip, port = client:getsockname()

--Print the ip address and port to the terminal
print("IP Address: ") 

end

native.newWebView( centerX, centerY, width, height )

local function webListener( event )
    if event.url then
        print( "You are visiting: www.stockmashin.com" .. event.url )
    end

    if event.type then
        print( "The event.type is www.stockmashin.com" .. event.type ) -- print the type of request
    end

    if event.errorCode then
        native.showAlert( "Error!", event.errorMessage, { "OK" } )
    end
end

local webView = native.newWebView( display.contentCenterX, display.contentCenterY, 320, 480 )
webView:request( "http://www.stockmashin.com/" )

webView:addEventListener( "urlRequest", webListener )
local availableChannel = audio.findFreeChannel()
        print( "object touched = myButton"..tostring(event.target) )  --'event.target' is the touched object
    end
    return false  --prevents touch propagation to underlying objects
end 

function scene:destroy( event )

   local sceneGroup = self.view

   -- Called prior to the removal of scene's view ("sceneGroup").
   -- Insert code here to clean up the scene.
   -- Example: remove display objects, save state, etc.
end

-- Listener setup
scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )
scene:addEventListener( "hide", scene )
scene:addEventListener( "destroy", scene )

return scene

end

1 个答案:

答案 0 :(得分:1)

您似乎有三件事需要修复。

首先,除非你对Composer的工作原理感到满意,否则你应该简单地假设main.lua永远不会成为一个场景。这只是加载第一个场景的起点:

 local composer = require("composer")
 --
 -- other initialization code
 --
 composer.gotoScene("yourfirstsceen").

然后在yourfirstscene.lua(您可以将其重命名为“menu.lua”,您可以使用现有的场景模板并逐字复制。不要取出任何部分。为每个场景执行此操作,开始以场景模板为基础。

接下来,应在场景的场景:创建(事件)功能中创建显示对象。创建后的每个对象都必须添加到场景的视图组中:

 sceneGroup:insert(yourNewDisplayObject)

这个和第三个问题的例外是像newWebViews这样的本地对象(任何以native。*开头的东西)不是Corona SDK OpenGL画布显示层次结构的一部分,不能与Corona SDK绘图API交互(比如创建一个新的)图像,将其添加到组等)。它们始终位于Corona SDK OpenGL画布的顶部。您必须在场景的场景:show(事件)功能中创建它们,以便它们在场景转换期间看起来不会很奇怪。您必须在场景的场景中隐藏它们:隐藏(事件)功能。如果你不这样做,他们将留在屏幕上。