Flash as3 Открыть файл локально (с помощью FlashPunk) - PullRequest
0 голосов
/ 08 мая 2011

Хорошо, сейчас я делаю игру в as3 с фреймворком FlashPunk. Мне удалось настроить редактор ogmo для работы с ним, и результаты были хорошими! Я намереваюсь отправить проект ogmo некоторым друзьям, чтобы они могли сами сделать несколько уровней для моей игры. Но я столкнулся с проблемой. Я хотел, чтобы мои друзья могли тестировать уровни, которые они делают, поэтому я попытался найти простое диалоговое решение для открытия файла, Sp, чтобы они могли выбрать сгенерированный файл XML (.oel), а затем загрузить его в реальный игра. Но я просто не мог найти решение! Может кто-нибудь мне помочь? Заранее спасибо.

1 Ответ

1 голос
/ 08 мая 2011

Если ваша игра основана на сети, вы должны использовать класс FileReference. Если он основан на воздухе, вы можете использовать класс File. Вот так:

Ссылка на файл:

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.FileReference;
    import flash.net.URLRequest;

    public class FileReference_event_select extends Sprite {
        private var uploadURL:URLRequest;
        private var file:FileReference;

        public function FileReference_event_select() {
            uploadURL = new URLRequest();
            uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm";
            file = new FileReference();
            file.addEventListener(Event.SELECT, selectHandler);
            file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            file.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            file.addEventListener(Event.COMPLETE, completeHandler);
            file.browse();
        }

        private function selectHandler(event:Event):void {
            var file:FileReference = FileReference(event.target);
            trace("selectHandler: name=" + file.name + " URL=" + uploadURL.url);
            file.upload(uploadURL);
        }

        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }

        private function progressHandler(event:ProgressEvent):void {
            var file:FileReference = FileReference(event.target);
            trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
        }

        private function completeHandler(event:Event):void {
            trace("completeHandler: " + event);
        }
    }
}

Файл:

import flash.filesystem.File;
import flash.events.Event;

var sourceFile:File = File.documentsDirectory;
sourceFile = sourceFile.resolvePath("Apollo Test/test1.txt");
var destination:File = File.documentsDirectory;
destination = destination.resolvePath("Apollo Test/test2.txt");

Источники:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/filesystem/File.html

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html

...