![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 16
|
Добрый день! Я недавно нашел пример где показано как загружать и сохранять картинки на локальном диске!
Программка класс!Я захотел ее немного переделать:что бы можно было загружать вместо картинок - xml файл... Я попал в небольшой тупик!Там загрузка идет через Loader (но он загружает только графику)...Если вместо него использовать URLLoader (то там нужно указывать адрес загружаемого файла), а как я смогу узнать адрес файла - ведь его пользователь сам выбирает из окна "олткрыть"? Не поможете ли Вы мне с этой проблемкой? С Уважением! 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; } } } |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Так
package { import flash.events.Event; import flash.events.EventDispatcher; import flash.net.FileReference; import flash.net.FileFilter; public class XMLFile extends EventDispatcher { public static const XML_LOADED :String = "icon_load_complete"; private var _ref :FileReference; private var _data :XML; public function XMLFile() { super(); } public function openXMLFile():void { if (_ref) { _ref.cancel(); } _ref = new FileReference(); _ref.addEventListener(Event.SELECT, onFileSelect); var filterArray:Array = [new FileFilter("Файлы XML", "*.xml")]; _ref.browse(filterArray); } private function onFileSelect(event:Event):void { _ref.addEventListener(Event.COMPLETE, onFileLoadComplete); _ref.load(); } private function onFileLoadComplete(evt:Event):void { _ref.removeEventListener(Event.SELECT, onFileSelect); _ref.removeEventListener(Event.COMPLETE, onFileLoadComplete); _data = new XML(evt.target.data); dispatchEvent(new Event(XMLFile.XML_LOADED)); } public function get data():XML { return _data }; } }
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 16
|
Спасибо за помощь с кодом!
С Уважением! |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:33. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|