2009-09-06 7 views
2
   var myFile:File = new File("./test.jpg"); 
       var myFileStream1:FileStream = new FileStream(); 
       myFileStream1.open(myFile, FileMode.READ); 
            var byte:ByteArray = new ByteArray(); 
           myFileStream1.readBytes(byte,0,byte.bytesAvailable); 
       myFileStream1.close(); 

теперь как я могу добавить переменную байта к холсту? например var canvas: Canvas = new Canvas(); canvas.addChild (байт); Можно ли добавить ByteArray на холст?flex core ByteArray Изображение

ответ

0

Нет, вы не можете. Это связано с тем, что ByteArray не может быть отображен, так как Flash Player не знает, что это такое.

В вашем случае вы собираетесь отобразить изображение «test.jpg» на Canvas, верно? Вы можете установить Image элемент управления source для загруженного объекта ByteArray и добавить его в Canvas. См. http://livedocs.adobe.com/flex/3/langref/mx/controls/Image.html

+0

Ну, ваше решение (msaif) определенно выполнит эту работу. Но на самом деле это то, что будет сделано внутри элемента управления «Image». Если вы используете фреймворк Flex, почему бы избежать использования элемента управления «Image», когда его код короче по сравнению с использованием «Loader» + «BitmapData' +« Bitmap »+' UIComponent'? –

1

Я использовал это без контроля изображения. Я использовал концепцию декодера. Вот как это выглядит: Это сработало.

loader.loadBytes(eizo.idolImage); 

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, 
    function (e:Event):void { 
    var bmpData:BitmapData = new BitmapData(loader.width, loader.height); 
    bmpData.draw(loader); 
    var ui:UIComponent = new UIComponent(); 
    ui.addChild(new Bitmap(bmpData)); 
    canvas0.addChild(ui); 
    } 
);