|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2011
Сообщений: 4
|
Доступ к картинке, выводимой в цикле
Здравствуйте!
Надо при клике на картинке (выводимой в цикле) изменить ее размеры. Получается только меняется самая последняя, по какой ни кликни. В программировании не силен. Прошу помочь. 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; // изменяем размер картинки по клику на ней } } } |
|
|||||
У Вас масштаб только по одной оси...
__________________
RTFM |
|
|||||
Регистрация: Mar 2009
Сообщений: 207
|
S-ed, все равно не пркатит. Контейнеры добавляются в цикле, а на событие подписывается только последний:
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); |
|
|||||
Регистрация: Jun 2011
Сообщений: 4
|
Добавлял непосредственно в цикл, тот же результат.
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); } } private function mouseDownSpriteListener(e:MouseEvent):void { trace("e.currentTarget : " + e.currentTarget); trace("e.target : " + e.target); sprite.scaleX = sprite.scaleY += .3; // изменяем размер картинки по клику на ней } Почти весь код цикла взят со страницы demiart.ru. Последний раз редактировалось iNils; 29.06.2011 в 15:57. |
Часовой пояс GMT +4, время: 17:44. |
|
« Предыдущая тема | Следующая тема » |
|
|