![]() |
|
||||||||||
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Так, похоже слова плохо доносят смысл. Примерно так:
…
private const _ref:FileReference = new FileReference();
private const _loader:Loader = new Loader();
private var _bitmap:BitmapData;
…
this._ref.addEventListener(Event.SELECT, this.handler_select);
this._ref.addEventListener(Event.COMPLETE, this.handler_selectComplete);
this._loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.handler_complete);
…
// где-то тут вызвается this._ref.browse();
…
private function handler_select(event:Event):void {
this._ref.load();
}
private function handler_selectComplete(event:Event) {
this._loader.loadBytes(this._ref.data);
}
private function handler_complete(event:Event):void {
var content:DisplayObject = this._loader.content;
if (content is Bitmap) {
this._bitmap = (content as Bitmap).bitmapData;
} else {
var bounds:Rectangle = content.getBounds();
this._bitmap = new BitmapData(bounds.width, bounds.height, true, 0x00000000);
this._bitmap.draw(content, new Matrix(1, 0, 0, 1, -bounds.x, -bounds.y));
}
trace('Say Hello to BitmapData', this._bitmap)
}
Господи, зачем вам левые классы какие-то? Обычный Loader и всё. Обычный BitmapData, никаких декодеров и прочей мути. Последний раз редактировалось etc; 14.11.2008 в 23:37. |
|
|||||
|
Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
|
package { import flash.net.FileReference; import flash.net.FileFilter; import flash.net.URLRequest; import flash.events.Event; import flash.display.Loader; import flash.display.Bitmap; import flash.display.BitmapData; import flash.utils.ByteArray; public class Main { private var fileRef:FileReference; private var imageLoader:Loader; public function Main() { fileRef = new FileReference(); fileRef.addEventListener(Event.SELECT,onFileSelected); var imageTypeFilter:FileFilter = new FileFilter("Изображения (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png"); fileRef.browse([imageTypeFilter]); } private function onFileSelected(evt:Event):void { fileRef.addEventListener(Event.COMPLETE,onComplete); fileRef.load(); } private function onComplete(evt:Event):void { var imageData:ByteArray = fileRef.data; imageLoader.loadBytes(imageData); addEventListener(Event.ENTER_FRAME,updateLoadingImage); // приходится проверять по ENTER_FRAME, загружена ли картинка, т.к. при loadBytes() нет события COMPLETE } private function updateLoadingImage(evt:Event):void { if (imageLoader.content != null) { // картинка загрузилась removeEventListener(Event.ENTER_FRAME,updateLoadingImage); var imageBitmap:Bitmap = imageLoader.content; var imageBitmapData:BitmapData = imageBitmap.bitmapData; // результат } } } } _etc: Хм, не знал, что так можно, вешал событие Event.COMPLETE на сам лоадер, но оно не срабатывало. Я думал, что это баг) Последний раз редактировалось musat; 14.11.2008 в 23:40. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
musat, событие COMPLETE есть, только подписываться надо у правильного объекта.
|
|
|||||
|
Регистрация: Nov 2008
Сообщений: 15
|
Все, работает, спасибо огромное.
Добавлено через 2 минуты Да, действительно, лоадер существует. А зачем, интересно, тогда UILoader? В доках, просто, он указан, у меня и с ним заработало ![]() Последний раз редактировалось iNils; 15.11.2008 в 02:00. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Читайте доку по UILoader. Это нестандартный класс, как минимум.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|