Я использую ресурсы .mp3 и .wav в своем проекте Corona. Когда я открываю свой ресурсный каталог Sandbox Project, все, что я вижу, это .png-файлы, которые используются для значков приложений и т. Д., А не аудиофайлы (.mp3s и .wavs).Corona SDK - список (аудио) Файлы активов проекта (которые, как я думал, будут в системе. ResourceDirectory)
Однако у меня есть удобная функция, чтобы проверить наличие файла в каталоге:
function doesFileExist(fname, path)
local results = false
local filePath = system.pathForFile(fname, path)
-- filePath will be nil if file doesn't exist and the path is ResourceDirectory
--
if filePath then
filePath = io.open(filePath, "r")
end
if filePath then
print("File found -> " .. fname)
-- Clean up our file handles
filePath:close()
results = true
else
print("File does not exist -> " .. fname)
end
print()
return results
end
Когда я использую
doesFileExist('filename.mp3', system.ResourceDirectory)
Я получил true
вернулся, который подтверждает у меня есть там файл , Кроме того, я могу воспроизводить музыку и т. Д.
У меня есть довольно много таких аудиофайлов, которые я хотел бы скопировать в систему. ДокументDocumentsDirectory с использованием цикла for перечисляет каждый аудиофайл и копирует его в DocumentsDirectory.
Я бы предпочел не кодировать этот MANUALLY для каждого файла.
Есть ли способ перечислить аудио-активы внутри проецируемого в Corona ???
Я бы подумал, что эти файлы активов будут находиться в system.ResourceDirectory, но если я открою песочницу, я их не увижу, и если я перечислил ее с помощью этого кода, аудиофайлы не будут включены в список:
local lfs = require "lfs"
local doc_path = system.pathForFile("", system.ResourceDirectory)
print('doc_path', doc_path)
for file in lfs.dir(doc_path) do
-- file is the current file or directory name
print("RESOURCE DIRECTORY - Found file: " .. file)
print(GetFileExtension(file))
local tempext = GetFileExtension(file)
if(exists(loadTypes[ "sound" ].extensions , tempext) or exists(loadTypes[ "stream" ].extensions , tempext)) then
print('FOUND ONE TO ADD')
end
-- if(file ~= '.' and file ~= '..' and file ~= dataFileName) then
-- if(file ~= '.' and file ~= '..') then
-- table.insert(audioFiles, file)
-- end
end
Поэтому, если я использую функцию doesFileExist
выше, звуковые файлы «нашли» и «видимый», но если я использую приведенный выше код, который проверяет файлы внутри system.ResourceDirectory, то звук файлы НЕ НАЙДЕНЫ .... и если я открою песочницу проекта, я также не вижу там аудиофайлы ....
Как мне перечислить все t он активов (аудио активов в моем случае) Я включил в свой проект короны ???
Спасибо ...
Привет ... ваш предложение папки с ресурсами хорошо ... Я пытаюсь включить это ... Однако, используя ваш цикл, если я делаю system.ResourceDirectory .. '/ assets', он делает что-то вроде «попытки коронки конкатенации значения userdata» и если я делаю tostring (system.ResourceDirectory), я получаю ... 'system.pathForFile: недопустимый базовый каталог (ожидаемая константа получила строку)' ... как вы изменяете код выше, чтобы использовать «активы» или «активы/аудио "в приложении ... спасибо ... – preston
Привет ... ok ... нашел решение вопроса, который я разместил в комментарии abov e .... просто добавьте это: path = path .. "/ assets" перед lfs.chdir (путь) .... спасибо за обмен кодом – preston
Рад слышать, как это работает! Вы также можете добавить папку при вызове copyFile следующим образом: 'copyFile (« assets/».. file, system.ResourceDirectory, file, system.DocumentsDirectory, false)' или установить путь непосредственно, как этот 'local path = system.pathForFile («assets /», system.ResourceDirectory). – Jefecito