Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 17.03.2010, 14:42
Flasher_as3 вне форума Посмотреть профиль Отправить личное сообщение для Flasher_as3 Найти все сообщения от Flasher_as3
  № 1  
Ответить с цитированием
Flasher_as3

Регистрация: Mar 2010
Сообщений: 16
По умолчанию загрузка xml с помощью FileReference()

Добрый день! Я недавно нашел пример где показано как загружать и сохранять картинки на локальном диске!
Программка класс!Я захотел ее немного переделать:что бы можно было загружать вместо картинок - xml файл...
Я попал в небольшой тупик!Там загрузка идет через Loader (но он загружает только графику)...Если вместо него использовать URLLoader (то там нужно указывать адрес загружаемого файла), а как я смогу узнать адрес файла - ведь его пользователь сам выбирает из окна "олткрыть"?
Не поможете ли Вы мне с этой проблемкой?
С Уважением!
Код AS3:
package  
{
import flash.display.*;
import flash.text.*;
import flash.net.*;
import flash.events.*;
import flash.utils.*;
import com.adobe.images.JPGEncoder;
import flash.geom.*;
import flash.filters.*;
/**
 * ...
 * @author http://www.murmadillo.tut.su/
 */
public class DocJpgEncoder extends Sprite
{
 private var loader:Loader,
 file:FileReference,
 txt:TextField,
 sender:ByteArray,
 i:int,
 bmd550x400:BitmapData;
 
 public function DocJpgEncoder()
 {
  txt=new TextField;
  file = new FileReference;
 
 
  // file.browse(getTypes());
  file.addEventListener(Event.COMPLETE,onComplete);
  file.addEventListener(Event.SELECT,onSelectFile);
  //onShowloadDialog();
  txt.htmlText = "<a href=\'event:load\'><u>[Загрузить файл]</a>" +
  " <a href=\'event:save\'><u>[Сохранить файл 550х400]</a>";
  txt.autoSize=TextFieldAutoSize.LEFT;
  addChild(txt);//добавить на рабочее поле
  txt.filters = [new GlowFilter(0xffffff, 1, 3, 3, 3)];
  txt.autoSize=TextFieldAutoSize.LEFT;
  addChild(txt);
  txt.addEventListener(TextEvent.LINK, txtLinkFunc);
 
  bmd550x400 = new BitmapData(550, 400, true, 0x00000000);
  var seed:int = int(Math.random() * int.MAX_VALUE);
  var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
  bmd550x400.perlinNoise(100, 80, 12, seed, false, true, channels, false, null);
 }
 
 private function txtLinkFunc(evt:TextEvent):void {
  if (evt.text == 'load') {
   onShowloadDialog();
  }
  if (evt.text == 'save') {
   onShowSaveDialog();
  }
 }
 
 //отображение диалога открытия файла
 private function onShowloadDialog(event:Event=null):void {
  var fileFilter:FileFilter=new FileFilter("Images","*.jpg");
  try {
   file.browse([fileFilter]);
  }
  //catch(illegalOperation:IllegalOperationError){
  catch (e:Error) {
  }
 }
 //отображение диалога save файла
 private function onShowSaveDialog(event:Event=null):void {
  var jpgEncoder:JPGEncoder = new JPGEncoder(100);//100 качество
  var jpgStream:ByteArray = jpgEncoder.encode(bmd550x400);
  var saveFile:FileReference = new FileReference;
  try {
   saveFile.save(jpgStream,"Lex.jpg");
  }
  //catch(illegalOperation:IllegalOperationError){
  catch (e:Error) {
  }
 }
 //при выборе файла загружаем его
 private function onSelectFile(event:Event):void {
  try {
   file.load();
  }
  // catch(illegalOperation:IllegalOperationError)
  catch (e:Error) {
  }
 }
 private function onComplete(event:Event):void {
  //addChild(loader = new Loader);
  loader = new Loader;
  loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderContentHandler);
  loader.loadBytes(file.data);
  loader.y = 20;
 }
 private function loaderContentHandler(evt:Event):void {
  var bitmapData:BitmapData = Bitmap(loader.content).bitmapData.clone();
  var sp:Sprite = new Sprite;
  var image:Bitmap = new Bitmap(bitmapData);
 
  var myMatrix:Matrix = new Matrix();
  var scale:Number;
  var scalXY:Object = new Object;
 
  trace('hi');
 
 
  bmd550x400 = new BitmapData(550, 400, true, 0x00000000);
  scalXY = getAutoScale(bitmapData, 550, 400);
  myMatrix.createBox(scalXY.scale, scalXY.scale, 0, 0, 0);//scaleX,scaleY,rotation,x,y
  bmd550x400.draw(image, myMatrix);
  sp.addChild(image = new Bitmap(bmd550x400));
  image.x = scalXY.x;
  image.y = scalXY.y;
  bmd550x400 = new BitmapData(550, 400, false, 0xffffff);
  bmd550x400.draw(sp);
  addChild(image = new Bitmap(bmd550x400));
  addChild(txt);
 }
 
 private function getAutoScale(_bm:BitmapData,_w:Number,_h:Number):Object {
  var sizeX:Number = _bm.width;
  var sizeY:Number = _bm.height;
  var scale:Number;
  var scalXY:Object = new Object;
  var tv:Number = sizeX / sizeY;
  trace(tv);
  if (tv > 1||tv < 1.3) {//квадрат
   scale = _w / sizeX;
   scale = scale / tv;
  }
  if (tv < 1) scale = _h / sizeY;//вертикаль
  if (tv >= 1.3) scale = _h / sizeY;//горизонт
 
  scalXY.x = (_w - sizeX * scale) / 2;
  scalXY.y = (_h - sizeY * scale) / 2;
  scalXY.scale = scale;
  return scalXY;
 }
 
}
 
}

Создать новую тему   Часовой пояс GMT +4, время: 01:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:55.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.