![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
Здравствуйте! Подскажите, пожалуйста...) Не могу понять что такое...в общем при нажатии на кнопку, выбирается фото с компа и загружается в спрайт...а при следующем нажатии, опять выполняется тоже самое: выбирается фото, но в спрайт оно загружается маленькое чем должно быть загружено...вообще не пойму, что такое...4 дня маюсь в пустоте...
Выяснил только вот что, если сначала загрузить фото большого масштаба, а потом поменьше, то фото, которое поменьше загрузится в спрайт очень маленькое...не как должно быть загружено...(как должно быть загружено можно проверить, загрузив его первым)...короче какой-то казус не понятный...может кто-нибудь на свежую голову сообразит, что нужно сделать?! Кто поможет, отблагодарю на всю жизнь!)) Вот исходник: http://www.varyag207.ru/load_foto.rar |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 90
|
У вас ошибка в том, что foto1_Sprite ресайзится только первый раз, далее он не трогается, и берутся первый раз установленные размеры. В ресайз передавайте параметры от реальной bmp.
Ну и убивайте добавленных child'ов. P.s. ресайз делайте лучше как-то так: Последний раз редактировалось Vier; 04.07.2011 в 22:54. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
Дружище, спасибо тебе большое!!!) Сам бы не догадался))
Добавлено через 1 час 51 минуту Vier, не подскажешь ещё одну вещь...когда удаляю Child'ы, то при 4-ом удалении, новый bitmap накладывается на старый не очищенный... P.S. с компа фото загружаются нормально, а с нета вот так...при 4 удалении накладывается...что это может быть? Последний раз редактировалось geka96; 05.07.2011 в 13:34. |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 90
|
Покажи код, как удаляешь. И как загружаешь по сети. А вообще, есть такая волшебная вещь, как дебагер )
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
Вот собрал исходник с проблемой: http://www.varyag207.ru/load_problem.rar
В какой-то момент перестаёт работать удаление и всё начинает наслаиваться...попробуй, загрузи сначала фото с компа, потом из сети и ещё раз с компа и из сети, и после этого начнёт наслаиваться одно изображение на другое...т.к. перестает удалятся...не пойму почему... |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 90
|
Честно говоря, скачивать fla неудобно и под рукой нет адобовских программ. Выложи текст скрипта сюда, все будет понятно.
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
Понятно..) Вот код:
var fileRef:FileReference; var pLoader:Loader; var resizeObject = {w:350,h:280}; var textTypeFilter:FileFilter; var foto1_Sprite:Sprite=new Sprite(); var foto2_Sprite:Sprite=new Sprite(); var bmp:Bitmap; var bmp2:Bitmap; pLoader=new Loader(); addChild(foto1_Sprite); addChild(foto2_Sprite); eshe.visible = false; fileRef=new FileReference(); textTypeFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png"); fileRef.addEventListener(Event.SELECT, onFileSelected); selectBTN.addEventListener("mouseDown",selectFotoPressedHandler); function onFileSelected(evt:Event):void { fileRef.addEventListener(Event.COMPLETE, onComplete); fileRef.load(); } function onComplete(evt:Event):void { pLoader.contentLoaderInfo.addEventListener(Event.INIT,imageInited); pLoader.loadBytes(fileRef.data); } function imageInited(evt:Event):void { var myBitmapData:BitmapData = new BitmapData(pLoader.width,pLoader.height); myBitmapData.draw(pLoader); bmp = new Bitmap(myBitmapData); bmp2 = new Bitmap(myBitmapData); foto1_Sprite.addChild(bmp); foto2_Sprite.addChild(bmp2); // запуск ресайза; resizePicture(); } function selectFotoPressedHandler(e:Event) { fileRef.browse([textTypeFilter]); } function resizePicture() { trace("Ресайз!"); if (bmp2.width > resizeObject.w || bmp2.height > resizeObject.h) { var sc:Number = Math.min(resizeObject.w / bmp2.width,resizeObject.h / bmp2.height); bmp2.scaleX *= sc; bmp2.scaleY *= sc; // ресайз копии foto1_Sprite.width = foto2_Sprite.width = bmp2.width; foto1_Sprite.height = foto2_Sprite.height = bmp2.height; } foto1_Sprite.x = foto2_Sprite.x; foto1_Sprite.y = foto2_Sprite.y; selectBTN.visible = false; loadAva.visible = false; eshe.visible = true; } //Загрузить фото из сети var lc:LoaderContext; loadAva.addEventListener(MouseEvent.CLICK,onClickLoadAva); function onClickLoadAva(e:Event):void { lc = new LoaderContext(true); pLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageInited); pLoader.load( new URLRequest("http://cs1495.vkontakte.ru/u00001/a_04766c4c.jpg"), lc ); } //Загрузить фото ещё раз с компа eshe.addEventListener(MouseEvent.CLICK,onClickEshe); function onClickEshe(e:Event):void { loadAva.visible = true; selectBTN.visible = true; eshe.visible = false; //Удалить фото foto1_Sprite.removeChild(bmp); foto2_Sprite.removeChild(bmp2); } |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 90
|
Я не понял в чем тайный смысл создания копии. И скейлить нужно либо bmp, либо foto1_Sprite. Обнулять контейнер после загрузки. Как-то так:
function imageInited(evt:Event):void { var myBitmapData:BitmapData = new BitmapData(pLoader.width,pLoader.height); myBitmapData.draw(pLoader); bmp = new Bitmap(myBitmapData); // запуск ресайза; resizePicture(bmp.width, bmp.height); while(foto1_Sprite.numChildren>0) { foto1_Sprite.removeChildAt(0); } foto1_Sprite.addChild(bmp); } function resizePicture(myWid:int, myHeight:int):void { trace("Ресайз!"); if (myWid > resizeObject.w || myHeight > resizeObject.h) { var sc:Number = Math.min(resizeObject.w/myWid,resizeObject.h/myHeight); foto1_Sprite.scaleX *= sc; foto1_Sprite.scaleY *= sc; } selectBTN.visible = false; loadAva.visible = false; eshe.visible = true; } |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
Vier, спасибо Вам огромнейшее!)) У самого даже в мыслях не было, что так можно обнулить контейнер..теперь буду знать!)) Ещё раз спасибо! Очень помогли!))
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:22. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|