![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2011
Сообщений: 24
|
Всем привет!)
Допустим я загрузил фотографию потом копирую пиксели в ByteArray А потом хочу отобразить ее в другом месте, но не получается. var img:Loader = new Loader; img.load(new URLRequest('http://чето_там.ру/шьпюозп')); img.contentLoaderInfo.addEventListener(Event.INIT, function(e:Event):void { img.x = 10; img.y = 10; addChild(img); _i(img.width, img.height); }); function _i(w:int, h:int):void { var rect:Rectangle = new Rectangle(10, 10, w, h); var bmd:BitmapData; var pixels:ByteArray = new ByteArray(); pixels = bmd.getPixels(rect); var l:Loader = new Loader; l.loadBytes(pixels); l.contentLoaderInfo.addEventListener(Event.INIT, function(e:Event):void { l.x = 900; l.y = 100; addChild(l); // В итоги никакого изображения нет }); } |
|
|||||
|
перестаньте использовать односимвольные переменные, вложенные функции, расставляйте табуляцию. Это для начала.
А вообще вам не нужно сохранять пиксели в байтаррей и лоадить их, это бесполезно ибо лоадер будет лоадить только валидную картинку, а это просто каша из пикселей, без заголовков и прочего. Вместо этого вам нужно создать новый экземпляр BitmapData и отрисовать в него при помощи метода draw кусочек нужного вам изображения, а потом создать Bitmap с этой битмапдатой и его отобразить. Добавлено через 3 минуты Обратите внимание на то что для возможности отрисовки загруженного изображения в битмапдату вам нужно специальное разрешение в кроссдомайнике. Либо можно провернуть особенный трюк с лоадером, но я думаю что вам это не понадобится. Добавлено через 2 часа 10 минут Блин ступил, если вам не надо это дело ресайзить и поворачивать, то сделайте copyPixels, быстрее будет
__________________
:) |
|
|||||
|
>> нужно создать новый экземпляр BitmapData и отрисовать в него..
это если нужно, что далеко не всегда можно тот же BitmapData использовать для создания сколько угодно копий если нужен именно ByteArray, то взять его можно в bytes лоадера public function Main():void { var img:Loader = new Loader; img.load(new URLRequest('face26.jpg')); img.contentLoaderInfo.addEventListener(Event.COMPLETE, img_complete); addChild(img); } private function img_complete(e:Event):void { var li:LoaderInfo = LoaderInfo(e.target); //через ByteArray var ba:ByteArray = li.bytes; var imgCopy1:Loader = new Loader(); imgCopy1.loadBytes(ba); addChild(imgCopy1).x = 150; // через BitmapData var bmd:BitmapData = Bitmap(li.content).bitmapData; var imgCopy2:Bitmap = new Bitmap(bmd); addChild(imgCopy2).x = 300; } |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 24
|
Aquahawk, можно пример?
|
|
|||||
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.IOErrorEvent; import flash.geom.Matrix; import flash.net.URLRequest; /** * ... * @author aquahawk */ public class Main extends Sprite { private var loader:Loader; private var partBitmapData:BitmapData; private var partBitmap:Bitmap; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(evt:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIoError); var urlRequest:URLRequest = new URLRequest("fox.jpg"); loader.load(urlRequest); } private function onIoError(evt:IOErrorEvent):void { trace("Can`t load"); } private function onComplete(evt:Event):void { addChild(loader); partBitmapData = new BitmapData(200, 200); var translationMatrix:Matrix = new Matrix(); translationMatrix.translate( -100, -100); partBitmapData.draw(loader, translationMatrix); partBitmap = new Bitmap(partBitmapData); partBitmap.x = 410; partBitmap.y = 100; addChild(partBitmap); } } }
__________________
:) |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|