PDA

Просмотр полной версии : FileReference.load()... Error #1069


elder_Nosferatu
11.08.2014, 20:49
Салют!
Решил запилить себе мелкую утилитку. Создал AIR-проект и начал ваять. Но оказалось я был слишком самонадеян. Мне не приходилось иметь дела с FileReference, но я всегда считал это простым делом. А тут... Короче, в момент вызова FileReference.load() вылетает
[Fault] exception, information=ReferenceError:
Error #1069:
Property load not found on flash.net.FileReference and there is no default value.
Сначала я грешил на себя, но потом просто проверил адобовский пример и результат оказался тем же...
Выручайте! Черт с ней, с этой утилиткой. Что случилось с FileReference?

Вот то, что я сделал с адобовским примером:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.FileReferenceList;

public class Main extends Sprite {
private var fileRef:FileReference;

public function Main() {
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, onFileSelected);
fileRef.addEventListener(Event.CANCEL, onCancel);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
var textTypeFilter:FileFilter = new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf");
fileRef.browse([textTypeFilter]);
}
public function onFileSelected(evt:Event):void {
fileRef.addEventListener(ProgressEvent.PROGRESS, onProgress);
fileRef.addEventListener(Event.COMPLETE, onComplete);
fileRef.load();
}
public function onProgress(evt:ProgressEvent):void {
trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes.");
}
public function onComplete(evt:Event):void {
trace("File was successfully loaded.");
trace(fileRef.data);
}
public function onCancel(evt:Event):void {
trace("The browse request was canceled by the user.");
}
public function onIOError(evt:IOErrorEvent):void {
trace("There was an IO Error.");
}
public function onSecurityError(evt:Event):void {
trace("There was a security error.");
}

}

}

ChuwY
11.08.2014, 21:03
Может, попробовать другую версию компилятора?

elder_Nosferatu
11.08.2014, 21:35
Да, сработало...
Сделал похожий тест во Флеше ЦС6 - проканало, а вот ФлешьДевелоп не пускает

Добавлено через 4 минуты
/**
* ...
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* ...
*/
public function load () : void;
Если в настройках публикации ставлю AIR 1.5, то не работает (хотя должно, если верить справке), а если выше (AIR 2.0) - тогда все отлично. Странно... Ну да черт с ним, может в АС-Доках опечатались. Хотя немного расстраивает :(

Nooob
11.08.2014, 23:03
зачем FileReference, есть же File, FileStream

elder_Nosferatu
11.08.2014, 23:40
О FileReference я читал еще когда изучал AS3, вот и схватился за него. Да и в любом случае ошибка стоит внимания. Может FP10 и AIR1.5 нынче не в моде, но все же... В описании одно, а на практике другое.