Я в настоящее время работаю над проектом для Adobe Air (1.5.3), и я должен разархивировать файл, скопировать часть его содержания в другой файл.
Затем я видел, что люди говорили о Fzip (http://codeazur.com.br/lab/fzip) lib. Проблема состоит в том, что я не знаю, как "импортировать" или пользоваться этой библиотекой с JavaScript и Adobe Air, так как JavaScript не имеет директивы импорта.
Как мне может удаться сделать это?
Я опубликовал демонстрацию того, как использовать FZip с Adobe Air и Javascript. Надеюсь, он прояснит вам ситуацию.
Короче говоря, вам нужно извлечь SWF-файл из скомпилированного SWC (когда применимо) и получить доступ к классу.
Демонстрация довольно проста и на самом деле просто доказательство концепции, но вы сможете легко ее расширить.
http://www.drybydesign.com/2010/05/12 / adobe-air-fzip-without-flex /
-Ari
Пример Ари довольно хорош, и он заставил меня начать, но он упустил некоторые довольно важные вещи - например, запись несжатых файлов обратно на диск. И zip-файл не обязательно должен быть размещен удаленно - особенность AIR в том, что он работает как локальное приложение... Вот пример, который развивает хорошее начало, которое дал нам Ари. (Я использую HTML5, чтобы быть крутым, модным и современным! :)-
<!DOCTYPE HTML>
<html>
<head>
<title>Test Fzip</title>
<script type="application/x-shockwave-flash" src="scripts/fzip.swf"></script>
<script type="text/javascript" src="scripts/AIRAliases.js"></script>
<script type="text/javascript" src="scripts/AIRIntrospector.js"></script>
<script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
<script type="text/javascript">
var fzip;
if (window.runtime) {
if (!fzip)
fzip = {};
fzip.FZip = window.runtime.deng.fzip.FZip;
fzip.FZipFile = window.runtime.deng.fzip.FZipFile;
}
var file = air.File.documentsDirectory.resolvePath("test.zip");
//file.url
var zip = new fzip.FZip;
zip.addEventListener(air.Event.OPEN, onopen);
zip.addEventListener(air.Event.COMPLETE, oncomplete);
zip.load(new air.URLRequest(file.url.toString()));
function oncomplete(event) {
var count = zip.getFileCount();
alert(count);
for ( var idx = 0; idx < count; idx++)
{
var zfile = zip.getFileAt(idx);
// alert(zfile.filename);
var uzfile = air.File.applicationStorageDirectory.resolvePath(zfile.filename);
var stream = new air.FileStream();
stream.open( uzfile, air.FileMode.WRITE );
stream.writeBytes( zfile.content,0, zfile.content.length );
stream.close();
}
}
function onopen(event) {
alert("file is opened");
}
</script>
</head>
<body>
</body>
</html>