多媒体开发中常常会碰到一些Lingo数据类型需要保存,可以是一个字符或者一个列表等等,虽然用file IO xtra也可以完成类似的操作,但是代码复杂,且容易出错。这里推荐一款Lingo数据类型的保存插件 PropSave Xtra,代码简洁,功能实用。
主要功能和特点:
1..直接保存Lingo数据类型到硬盘,而不需要实现转换为字符串。
2..读取之前保存的内容,可以百分百还原为之前保存的数据类型。
3..所保存的文件内容是乱码的,可以防止保存信息泄漏。
4..保存时,可以加参数,如加 #prefsFolder: true,则会将指定数据按照指定文件名保存到系统目录中,而不需要你判断系统目录的所在位置。
简洁的代码:
filePathName = the moviePath & "testFileIO"
fileObj = new( xtra "fileIO" )
if not objectP( fileObj ) then return -1
fileObj.openFile( filePathName, 1 )
err = fileObj.status()
if not ( err ) then ---FILE EXISTS, DELETE
fileObj.delete()
else if ( err and not ( err = -37 ) ) then return err
err = fileObj.status() if ( err ) then return err
fileObj.openFile( filePathName, 2 ) ---OPEN THIS FILE, WRITE PERM
err = fileObj.status() if ( err ) then return err
fileObj.writeString( string( outputList ) ) ---CONVERT TO STRING, WRITE
fileObj.closeFile()
filePathName = the moviePath & "testFileIO"
savePropsToDisk( filePathName, outputList )
#integer
#symbol
#string
#picture
#float
#list
#point
#rect
#propList
#member
#castLib
#sprite
#soundSprite
#color
#date
#media* 部分支持,对field 演员和button 演员(pushbutton, radiobutton, checkbox)的支持不太好,建议避免保存field 演员和button 演员的media。
#instance
#object
#script
保存范例代码:
outputList = ["大家好",1234,"Hello!!!",#symbol, 1.002, [1,2,3], rect( 4, 5, 6, 7 ),point(1,2),[[1,2,3],[1,2,3]]]
filePathName = the moviePath & "savedata.dat"
-- 保存列表 outputList 到指定文件 filePathName,要有完整路径名。
savePropsToDisk(filePathName, outputList)
-- 保存列表 outputList 指定文件 "savedata.dat",不要有完整路径名,自动保存到系统目录下。
savePropsToDisk("savedata.dat",outputList,[#prefsFolder: true])
读取范例代码:
-- 从当前目录读取"savedata.dat"文件里面的保存数据。
pList = loadPropsFromDisk(the moviePath & "savedata.dat")
-- 从系统目录读取"savedata.dat"文件里面的保存数据。
pList = loadPropsFromDisk("savedata.dat",[#prefsFolder: true])
回复Comments
作者:
{commentrecontent}