![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2014
Сообщений: 37
|
И снова я с вопросом про ane, действие происходит с android.
Задача передать в java картинку для дальнейшей обработки. По описанию найденному в интернете все должно быть просто шаг 1. отправляю BitmapData (AS3) _context.call("MarkerSetIcon",id,new BitmapData(50,50,false,0xffffff)); шаг 2. ловлю как объект FREBitmapData FREBitmapData bitmapData=(FREBitmapData) args[1]; bitmapData.acquire(); Bitmap bitmap=Bitmap.createBitmap( bitmapData.getWidth(), bitmapData.getHeight(), Config.ARGB_8888); bitmap.copyPixelsFromBuffer(bitmapData.getBits()); bitmapData.release(); Проблема в строчке: FREBitmapData bitmapData=(FREBitmapData) args[1]; CATLOG выдает безымянную ошибку (printnl needs a message). Понимаю что, что-то не понимаю, но что??? |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,282
|
думаю, вместо args[1] должен стоять некий параметр, передаваемый в обработчик.Где вообще это происходит?
|
|
|||||
|
Регистрация: May 2014
Сообщений: 37
|
Это происходит в классе FREFunction
передал id(args[0]) и BitmapData(args[1]). public class MarkerSetIcon implements FREFunction { @Override public FREObject call(FREContext context, FREObject[] args) { try { int id=args[0].getAsInt(); MarkerGoogleMaps marker; FREBitmapData bitmapData=(FREBitmapData) args[1]; bitmapData.acquire(); Bitmap bitmap=Bitmap.createBitmap( bitmapData.getWidth(), bitmapData.getHeight(), Config.ARGB_8888); bitmap.copyPixelsFromBuffer(bitmapData.getBits()); bitmapData.release(); marker.setImage(bitmap); } catch (Exception e) { Log.e("GM", e.getMessage()); } return null; } } |
|
|||||
|
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
В args флешовая битмапдата точно в виде FREBitmapData? Там не массив байтов случаем? (byte[])?
|
|
|||||
|
Читал что аргументом можно передавать только простые типы, int, Number, String.
|
|
|||||
|
Регистрация: May 2014
Сообщений: 37
|
И так. В итога все были не правы.
Вынужден был отдельно создать ane для проверки и искать информацию. В итоге BitmapData (AS3) можно в качестве аргумента передавать и получать как (FREBitmapData). И Более того ее можно возвращать как результат. В моем примере: 1)загружаем в AS3 из сети BitmapData загоняем в функцию ane. 2)в java преобразуем из FREBitmapData в Bitmap, 3)создаем новый FREBitmapData, ложим данные из Bitmap 4)их возвращаем. 5)получаем в AS3 BitmapData 6)преобразуем в Bitmap и выводим на экран Класс java: @Override public FREObject call(FREContext context, FREObject[] args) { FREBitmapData res=null; try { FREBitmapData inputValue = (FREBitmapData)args[0]; inputValue.acquire(); int width = inputValue.getWidth(); int height = inputValue.getHeight(); Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); bmp.copyPixelsFromBuffer(inputValue.getBits()); inputValue.release(); int size = bmp.getRowBytes() * bmp.getHeight(); res=FREBitmapData.newBitmapData(bmp.getWidth(), bmp.getHeight(), true,new Byte[]{(byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff}); res.acquire(); bmp.copyPixelsToBuffer(res.getBits()); res.release(); } catch (Exception e) { Log.i("testBitmapData", "error: "+e.getMessage()); } return res; } public class TestBitmapData { private static var context:ExtensionContext; public function TestBitmapData() { } public static function init():void { if(!context) context=ExtensionContext.createExtensionContext("com.nngames.testbitmapdata",null); } public static function setBitmapData(value:BitmapData):BitmapData { if (context) { return BitmapData(context.call('goBitmapData',value)); } return null; } } public function testBitmapDataAne() { super(); // support autoOrients stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; var url:URLRequest=new URLRequest('https://www.google.ru/images/nav_logo242.png'); TestBitmapData.init(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); loader.load(url); } protected function onComplete(event:Event):void { var b:Bitmap=Bitmap(loader.content); var bd:BitmapData=TestBitmapData.setBitmapData(b.bitmapData); var b1:Bitmap=new Bitmap(bd); addChild(b1); } |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|