【问题标题】:how to save native text input to a txt file in corona如何将本机文本输入保存到电晕中的txt文件
【发布时间】:2014-06-25 19:42:59
【问题描述】:

我的问题是如何将用户文本输入保存到 corona sdk 中的 .txt 文件中。

所以基本上我想要实现的是,当用户在文本框中写入内容然后按下保存按钮时,文本框中的文本会保存到系统文档目录中的 .txt 文件中。

感谢帮助! :)

这是代码:)

local function inputListener( event )
    if event.phase == "began" then

        -- user begins editing textBox
        print( event.text )

    elseif event.phase == "ended" then

       local myfile = io.open( filePath, "w" )  
       myfile:write(textBox)  
       io.close(myfile)  



    elseif event.phase == "editing" then

        print( event.newCharacters )
        print( event.oldText )
        print( event.startPosition )
        print( event.text )

    end
end

local textBox = native.newTextBox( 200, 200, 280, 140 )
textBox.text = "This is line 1.\nAnd this is line2"
textBox.isEditable = true
textBox:addEventListener( "userInput", inputListener )

【问题讨论】:

  • 我试过“myfile:write(textBox.text)”,现在我得到了错误:尝试索引全局'textBox'(一个零值)
  • 也许你需要在 "elseif event.phase == "ended" then" 行下方添加 "textBox.text = event.text"。
  • 还是同样的错误:/
  • 尝试将变量移到函数上方。如果这不起作用,那么我建议只使用从 event.text 变量中检索到的文本并将其直接保存到文件中。
  • 我还是有同样的错误

标签: lua coronasdk saving-data


【解决方案1】:

我建议您在此处阅读 Corona Labs 提供的文档:http://docs.coronalabs.com/guide/data/readWriteFiles/index.html

这是文档中的合并代码和您提供的代码。使用此代码,我无法复制您在 cmets 中提到的错误,因此我无法为您提供进一步的帮助。

local textBox = native.newTextBox( 200, 200, 280, 140 )
textBox.text = "This is line 1.\nAnd this is line2"
textBox.isEditable = true

local function inputListener( event )
    if event.phase == "began" then

        -- user begins editing textBox
        print( event.text )

    elseif event.phase == "ended" then

       local path = system.pathForFile( "myfile.txt", system.DocumentsDirectory )

       local file = io.open( path, "w" )
       file:write( textBox.text )
       io.close( file )
       file = nil 

    elseif event.phase == "editing" then

        print( event.newCharacters )
        print( event.oldText )
        print( event.startPosition )
        print( event.text )

    end
end
textBox:addEventListener( "userInput", inputListener )

【讨论】:

  • 是的,硬编码字符串的保存部分非常简单,当我有一个可以在应用程序运行时随时编辑的动态字符串时,我会遇到问题。我想保存更改后的文本。 :) 每次我尝试这样做时都会收到此错误:Bad argument #1 to 'write' (string expected, got nil)
  • 你能用一些代码编辑你的初始响应吗?请问您用于保存到文件的代码以及您用于使用“动态字符串”更新变量的代码?鉴于您在此处发布的错误,您存储数据的变量似乎与您输入的字符串的关联不正确。确保在函数/保存过程之前初始化 saveData 变量,并且数据实际存储在字符串中。
  • 看来您正在尝试保存文本框,而不是框中的文本。由于 textBox 是一个对象,因此您必须编写“myfile:write(textBox.text)”来检索所述 textBox 中包含的实际字符串。
  • 我试过“myfile:write(textBox.text)”,现在我得到了错误:尝试索引全局'textBox'(一个零值)
  • 也许你需要在 "elseif event.phase == "ended" then" 行下方添加 "textBox.text = event.text"。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 2014-11-07
  • 2015-11-02
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多