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

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

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

Регистрация: Jun 2011
Сообщений: 4
По умолчанию Доступ к картинке, выводимой в цикле

Здравствуйте!
Надо при клике на картинке (выводимой в цикле) изменить ее размеры.
Получается только меняется самая последняя, по какой ни кликни.
В программировании не силен.
Прошу помочь.
Код AS3:
package {
	import ...
 
	public class Main extends Sprite {
 
		private var countImages:uint = 20; //Количество картинок
		private var imageURLArray:Array = new Array(); //Массив URL-адресов картинок
		private var spriteArray:Array = new Array(); //Массив со всеми контейнерами картинок
		private var loadedImages:Number = 0; //Cколько картинок загружено
		private var rows:Number = 5; //Число колонок и строк
		private var columns:Number = 8;
		private var imageWidth:Number = 40; //Запоминаем ширину и высоту картинки (40x40)
		private var imageHeight:Number = 40;
		private var padding:Number = 1.3; //Расстояние между картинками
		private var left:Number = 0; //Отступ с левого края
 
		private var loaderImage:Loader; //Загрузчик картинок
		private var spriteRIGHT:Sprite; //Контейнер справа для картинок
		private var sprite:Sprite;
 
		public function Main():void {
 
//Контейнер справа ///////////////////////////////////////////////////////////////////
 
			spriteRIGHT = new Sprite(); //Контейнер справа
			spriteRIGHT.x = 300;
 
			var shapeRight:Shape = new Shape();
			shapeRight.graphics.beginFill(0x00ff00);
			shapeRight.graphics.drawRoundRect(0, 0, 450, 300, 10, 10);
			shapeRight.graphics.endFill();
 
			spriteRIGHT.addChild(shapeRight);
			addChild(spriteRIGHT);
 
			for (var n:uint = 0; n < countImages; n++){ //Добавим все наши URLs картинок в массив
				imageURLArray.push("images/jpg/" + n + ".jpg");
			}
			for (var i:int = 0; i < rows; i++){ //Создаем контейнеры картинок и располагаем их на сцене в контейнере spriteRIGHT
				for (var j:int = 0; j < columns; j++){
					sprite = new Sprite(); //Создаем новый контейнер
					sprite.x = left + j * imageWidth * padding; //позиционируем контейнер
					sprite.y = i * imageHeight * padding;
 
					spriteRIGHT.addChild(sprite); //Добавляем контейнер картинки в контейнер spriteRIGHT
					spriteArray.push(sprite); //Добавляем контейнер в массив spriteArray 
				}
			}
 
			sprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownSpriteListener);
 
			loadImage(); // Функция загружает картинку, первую картинку в массиве imageURLArray 
		}
 
 
		//Эта функция загружает первую картинку в массиве imageURLArray
		private function loadImage():void {
			loaderImage = new Loader(); //Создаем загрузчик
			var urlRequest:URLRequest = new URLRequest(imageURLArray[0]); //Получаем URL для загрузки
 
			loaderImage.contentLoaderInfo.addEventListener(Event.INIT, initListenerImage);
 
			loaderImage.load(urlRequest); //Загружаем картинку
			imageURLArray.splice(0, 1); //Удаляем первый URL в массиве imageURLArray так как мы начали загружать эту картинку
		}
 
 
		private function initListenerImage(e:Event):void {
 
			var image:Bitmap = Bitmap(e.target.content); //Сохраняем загруженный битмап в локальную переменную
 
			sprite = spriteArray[loadedImages]; //Сохраняем контейнер картинки в локальную переменную
			sprite.addChild(image); //Добавляем картинку в контейнер
 
			sprite.width = imageWidth; //Масштабируем загруженные картинки
			sprite.scaleY = sprite.scaleX;
			if (sprite.height > imageHeight){
				sprite.height = imageHeight;
				sprite.scaleX = sprite.scaleY;
			}
			sprite.x = sprite.x + (imageWidth - sprite.width) / 2;
			sprite.y = sprite.y + (imageHeight - sprite.height) / 2;
 
			loadedImages++; //Изменяем счетчик загруженных картинок
 
			if (imageURLArray.length > 0){ //загружаем следующую картинку, если в массиве существуют еще  URL-адреса
				loadImage();
			}
 
 
		}
 
		private function mouseDownSpriteListener(e:MouseEvent):void {
			trace("e.currentTarget : " + e.currentTarget);
			trace("e.target : " + e.target);
			sprite.scaleX += .3; // изменяем  размер картинки по клику на ней
 
		}
 
 
 
	}
}

Старый 29.06.2011, 04:45
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 2  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
У Вас масштаб только по одной оси...
Код AS3:
private function mouseDownSpriteListener(e:MouseEvent):void {
	trace("e.currentTarget : " + e.currentTarget);
	trace("e.target : " + e.target);
	currentTarget.scaleX += .3; // изменяем  размер картинки по клику на ней
}
__________________
RTFM

Старый 29.06.2011, 08:26
spooner вне форума Посмотреть профиль Отправить личное сообщение для spooner Найти все сообщения от spooner
  № 3  
Ответить с цитированием
spooner
 
Аватар для spooner

Регистрация: Mar 2009
Сообщений: 207
S-ed, все равно не пркатит. Контейнеры добавляются в цикле, а на событие подписывается только последний:
Код AS3:
for (var i:int = 0; i < rows; i++){ //Создаем контейнеры картинок и располагаем их на сцене в контейнере spriteRIGHT
	for (var j:int = 0; j < columns; j++){
		sprite = new Sprite(); //Создаем новый контейнер
		sprite.x = left + j * imageWidth * padding; //позиционируем контейнер
		sprite.y = i * imageHeight * padding;
 
		spriteRIGHT.addChild(sprite); //Добавляем контейнер картинки в контейнер spriteRIGHT
		spriteArray.push(sprite); //Добавляем контейнер в массив spriteArray 
	}
}
 
sprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownSpriteListener);

Старый 29.06.2011, 15:16
flasher2011 вне форума Посмотреть профиль Отправить личное сообщение для flasher2011 Найти все сообщения от flasher2011
  № 4  
Ответить с цитированием
flasher2011

Регистрация: Jun 2011
Сообщений: 4
Добавлял непосредственно в цикл, тот же результат.
Код AS3:
for (var i:int = 0; i < rows; i++){ //Создаем контейнеры картинок и располагаем их на сцене в контейнере spriteRIGHT
	for (var j:int = 0; j < columns; j++){
		sprite = new Sprite(); //Создаем новый контейнер
		sprite.x = left + j * imageWidth * padding; //позиционируем контейнер
		sprite.y = i * imageHeight * padding;
 
		spriteRIGHT.addChild(sprite); //Добавляем контейнер картинки в контейнер spriteRIGHT
		spriteArray.push(sprite); //Добавляем контейнер в массив spriteArray 
 
                      sprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownSpriteListener);
	}
}
S-ed, спасибо, но в обе стороны не знаю как. Получилось только вправо и вниз по осям
Код AS3:
private function mouseDownSpriteListener(e:MouseEvent):void {
			trace("e.currentTarget : " + e.currentTarget);
			trace("e.target : " + e.target);
			sprite.scaleX = sprite.scaleY += .3; // изменяем  размер картинки по клику на ней
 
		}
Добавлено через 1 час 2 минуты
Почти весь код цикла взят со страницы demiart.ru.


Последний раз редактировалось iNils; 29.06.2011 в 15:57.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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