Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.06.2010, 17:35
geka96 вне форума Посмотреть профиль Отправить личное сообщение для geka96 Найти все сообщения от geka96
  № 1  
Ответить с цитированием
geka96

Регистрация: Jun 2010
Сообщений: 30
По умолчанию Ресайз фото

Здравствуйте!

Подскажите как переделать эту функцию- resizePicture(), так чтобы параметром передовал, что ресайзить сперва объект pLoader потом объект bmp?
Код AS3:
private function entrFrameHandler(e:Event) {
            if (! moreThanZero) {
                if (pLoader.width>0) {
                    moreThanZero=true;
                    resizePicture();
                } else {
                    trace("waiting...");
                }
            }
        }
 
        private function resizePicture() {
            var delitel=0;
            pLoader.x=0;
            pLoader.y=0;
            if (pLoader.width>fotoHolder_Width || pLoader.width<fotoHolder_Width) {
                delitel=pLoader.width/fotoHolder_Width;
                pLoader.width=pLoader.width/delitel;
                pLoader.height=pLoader.height/delitel;
            }
 
            if (pLoader.height>fotoHolder_Height || pLoader.height>fotoHolder_Height) {
                delitel=pLoader.height/fotoHolder_Height;
                pLoader.height=pLoader.height/delitel;
                pLoader.width=pLoader.width/delitel;
            }
            pLoader.x=(fotoHolder_Width-pLoader.width)/2;
            pLoader.y=(fotoHolder_Height-pLoader.height)/2;
            trace("resized");
        }
Вот весь код
Код AS3:
package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.FileFilter;
    import flash.net.FileReference;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.display.Loader;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
 
    public class fileSelector extends Sprite {
        private var fileRef:FileReference;  
        private var pLoader:Loader; 
        private var fotoHolder_Width:Number; 
        private var fotoHolder_Height:Number; 
        private var textTypeFilter:FileFilter; 
        private var moreThanZero:Boolean; 
 
 
        public function fileSelector() {
            fotoHolder_Width=700;
            fotoHolder_Height=578;
            pLoader=new Loader();
            fotoHolder.addChild(pLoader);
 
            fileRef=new FileReference();
            textTypeFilter=new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png");
 
            fileRef.addEventListener(Event.SELECT, onFileSelected);
            fileRef.addEventListener(Event.CANCEL, onCancel);
            fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
            fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
            selectBTN.addEventListener("mouseDown",selectFotoPressedHandler);
            fotoHolder.addEventListener("mouseDown",fotoHolderPressedHandler);
        }
        private function onFileSelected(evt:Event):void {
            fileRef.addEventListener(ProgressEvent.PROGRESS, onProgress);
            fileRef.addEventListener(Event.COMPLETE, onComplete);
            fileRef.load();
        }
        private function onProgress(evt:ProgressEvent):void {
            trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes.");
        }
        private function onCancel(evt:Event):void {
            trace("The browse request was canceled by the user.");
        }
        private function onComplete(evt:Event):void {
            moreThanZero=false;
            fotoHolder_Width=700;
            fotoHolder_Height=578;
            pLoader.contentLoaderInfo.addEventListener(Event.INIT,imageInited);
            pLoader.loadBytes(fileRef.data);
        }
        public function imageInited(evt:Event):void {
            var myBitmapData:BitmapData = new BitmapData(pLoader.width, pLoader.height);
            myBitmapData.draw(pLoader);
            var bmp:Bitmap = new Bitmap(myBitmapData);
            fotoHolder2.addChild(bmp);//вот етот bmp добавь куда хочешь
            addEventListener("enterFrame",entrFrameHandler);
        }
        public function onIOError(evt:IOErrorEvent):void {
            trace("There was an IO Error.");
        }
        public function onSecurityError(evt:Event):void {
            trace("There was a security error.");
        }
        private function GoSelectFoto() {
            fileRef.browse([textTypeFilter]);
        }
        private function selectFotoPressedHandler(e:Event) {
            trace("selectFotoPressed");
            GoSelectFoto();
        }
        private function fotoHolderPressedHandler(e:Event){
            trace("fotoHolderPressedHandler");
        }
        private function entrFrameHandler(e:Event) {
            if (! moreThanZero) {
                if (pLoader.width>0) {
                    moreThanZero=true;
                    resizePicture();
                } else {
                    trace("waiting...");
                }
            }
        }
 
        private function resizePicture() {
            var delitel=0;
            pLoader.x=0;
            pLoader.y=0;
            if (pLoader.width>fotoHolder_Width || pLoader.width<fotoHolder_Width) {
                delitel=pLoader.width/fotoHolder_Width;
                pLoader.width=pLoader.width/delitel;
                pLoader.height=pLoader.height/delitel;
            }
 
            if (pLoader.height>fotoHolder_Height || pLoader.height>fotoHolder_Height) {
                delitel=pLoader.height/fotoHolder_Height;
                pLoader.height=pLoader.height/delitel;
                pLoader.width=pLoader.width/delitel;
            }
            pLoader.x=(fotoHolder_Width-pLoader.width)/2;
            pLoader.y=(fotoHolder_Height-pLoader.height)/2;
            trace("resized");
        }
    }
}
Вот исходник: СКАЧАТЬ

Помогите пожалуйста, я просто уже неделю сижу...и ломаю голову...не получается...

Старый 29.06.2010, 18:36
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 2  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Цитата:
так чтобы параметром передовал, что ресайзить сперва объект pLoader потом объект bmp?
вопрос не понятен..??

Старый 29.06.2010, 18:50
geka96 вне форума Посмотреть профиль Отправить личное сообщение для geka96 Найти все сообщения от geka96
  № 3  
Ответить с цитированием
geka96

Регистрация: Jun 2010
Сообщений: 30
Цитата:
Сообщение от Genzo Посмотреть сообщение
вопрос не понятен..??
Посмотрите в исходнике, там два мувика и кнопка... по нажатию на кнопку загружается фото в эти два мувика....Надо чтобы фото в двух мувиках было одинакового размера...

Вот урок (там про ресайз написано): здесь

Я не могу разобраться как переделать эту функцию- resizePicture(), так чтобы параметром передовал, что ресайзить сперва объект pLoader потом объект bmp?

Старый 10.07.2010, 00:31
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 4  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
geka96,

Вы же вроде у меня на сайте задавали этот вопрос ссылка

Я там ответил там немного переделав этот кривой механизм

Убрал мувиклипы
Убрал цикл проверки
и еще что-то не помню уж сейчас

Насколько я понял нужно чтобы в 2 клипа грузилась одна картинка и они одинакового размера становились после ресайза

вот класс переделанный

Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.*;
	import flash.net.FileFilter;
	import flash.net.FileReference;
	import flash.net.URLRequest;
	import flash.utils.ByteArray;
	import flash.display.Loader;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
 
	public class fileSelector extends Sprite {
		private var fileRef:FileReference;  
		private var pLoader:Loader; 
		private var resizeObject={w:200,h:148}
 
		private var textTypeFilter:FileFilter; 
 
 
		private var foto1_Sprite:Sprite=new Sprite();
		private var foto2_Sprite:Sprite=new Sprite();
 
		private var bmp:Bitmap;
		private var bmp2:Bitmap;
 
 
		public function fileSelector() {
			pLoader=new Loader();
 
			addChild(foto1_Sprite);
			addChild(foto2_Sprite);
 
			fileRef=new FileReference();
			textTypeFilter=new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png");
 
			fileRef.addEventListener(Event.SELECT, onFileSelected);
			fileRef.addEventListener(Event.CANCEL, onCancel);
			fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
			fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
			selectBTN.addEventListener("mouseDown",selectFotoPressedHandler);
		}
		private function onFileSelected(evt:Event):void {
			fileRef.addEventListener(ProgressEvent.PROGRESS, onProgress);
			fileRef.addEventListener(Event.COMPLETE, onComplete);
			fileRef.load();
		}
		private function onProgress(evt:ProgressEvent):void {
			trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes.");
		}
		private function onCancel(evt:Event):void {
			trace("The browse request was canceled by the user.");
		}
		private function onComplete(evt:Event):void {
			pLoader.contentLoaderInfo.addEventListener(Event.INIT,imageInited);
			pLoader.loadBytes(fileRef.data);
		}
		public function imageInited(evt:Event):void {
			var myBitmapData:BitmapData = new BitmapData(pLoader.width, pLoader.height);
			var myBitmapData2:BitmapData = new BitmapData(pLoader.width, pLoader.height);
 
			myBitmapData.draw(pLoader);
			myBitmapData2.draw(pLoader);
 
 
			//// если пока не объявлен битмап - объявляем а если он уже существует - в его свойство bitmapData запихиваем объект myBitmapData
			// это сделано для множественного выбора фото
			if(bmp==null){
				bmp = new Bitmap(myBitmapData);
			}else{
				bmp.bitmapData=myBitmapData;
			}
			if(bmp2==null){
				bmp2 = new Bitmap(myBitmapData);
			}else{
				bmp2.bitmapData=myBitmapData;
			}
 
			if(foto1_Sprite.contains(bmp)){
				foto1_Sprite.removeChild(bmp);
			}
			if(foto2_Sprite.contains(bmp2)){
				foto2_Sprite.removeChild(bmp2);
			}
 
			foto1_Sprite.addChild(bmp);
			foto2_Sprite.addChild(bmp2);
 
			// запуск ресайза
			resizePicture();
		}
		public function onIOError(evt:IOErrorEvent):void {
			trace("There was an IO Error.");
		}
		public function onSecurityError(evt:Event):void {
			trace("There was a security error.");
		}
		private function GoSelectFoto() {
			fileRef.browse([textTypeFilter]);
		}
		private function selectFotoPressedHandler(e:Event) {
			trace("selectFotoPressed");
			GoSelectFoto();
		}
 
 
		private function resizePicture() {
			var delitel=0;
			foto1_Sprite.x=20;
			foto1_Sprite.y=20;
 
			if (foto1_Sprite.width>resizeObject.w) {
				delitel=foto1_Sprite.width/resizeObject.w;
				foto1_Sprite.width=foto1_Sprite.width/delitel;
				foto1_Sprite.height=foto1_Sprite.height/delitel;
			}
 
			if (foto1_Sprite.height>resizeObject.h) {
				delitel=foto1_Sprite.height/resizeObject.h;
				foto1_Sprite.height=foto1_Sprite.height/delitel;
				foto1_Sprite.width=foto1_Sprite.width/delitel;
			}
 
			// ресайз копии
			foto2_Sprite.width=foto1_Sprite.width;
			foto2_Sprite.height=foto1_Sprite.height;
 
			foto2_Sprite.x=foto1_Sprite.x+foto1_Sprite.width+20;
			foto2_Sprite.y=foto1_Sprite.y;
			trace("resized");
		}
	}
}


Последний раз редактировалось djyamato; 10.07.2010 в 00:35.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.