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

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

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

Регистрация: Jul 2013
Сообщений: 4
По умолчанию Создание галереи изображений

Подскажите, как создать небольшую галерею изображений по такому типу приложения ВК(начало, где объявление разных игр):
https://vk.com/app2857249_3028443?ref=9
То есть, имеется 8 картинок, по клику левой\правой стрелки они меняются (сдвигаются влево\вправо соответственно)

накидал код, но меняются они не совсем так(сдвигаются они лентой, и нижний и верхний уровень, одна за другой, да еще и первый элемент остается на месте. пока два раза не отработает)
Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.text.TextField;
 
	/**
	 * ...
	 * @author Heidy
	 */
	public class GameContainer extends Sprite
	{
		private var _oneelement:Array = new Array();
		private var _bitmapElement:Array = [new Bitmap(new Balls), new Bitmap(new Balda), new Bitmap(new Bubbles), new Bitmap(new Chess), new Bitmap(new Domino), new Bitmap(new Dots), new Bitmap(new Lines), new Bitmap(new Sudoku)];
		private var _elementButton:Button;
		private var _myText:TextField;
 
		//private var _currentPage:int = 0;
 
		public function GameContainer()
 
		{
			var bg:Bitmap = new Bitmap(new Backgroundgame);
 
			addChild(bg);
 
			for (var i:int = 0; i < 6; ++i)
			{
				_elementButton = new Button();
				_myText = new TextField();
 
				_oneelement[i] = new Sprite();
				_oneelement[i].addChild(_bitmapElement[i]);
				addChild(_oneelement[i]);
 
				_oneelement[i].x = 120 + i % 3 * 200;
				_oneelement[i].y = 150 + int(i / 3) * 150;
 
				_elementButton.x = (_oneelement[i].width - _elementButton.width) / 2;
				_elementButton.y = (_oneelement[i].height - _elementButton.height) / 2;
 
				var myTextFormat:flash.text.TextFormat = new flash.text.TextFormat("Times New Roman", 16, 0x000000, true);
 
				_myText.defaultTextFormat = myTextFormat;
				_myText.text = "Войти";
 
				_myText.selectable = false;
				_myText.x = (_oneelement[i].width - _elementButton.width) / 2;
				_myText.y = (_oneelement[i].height - _elementButton.height) / 2;
 
				_oneelement[i].addChild(_elementButton);
				_oneelement[i].addChild(_myText);
			}
 
			var arrowLeft:Arrowleft = new Arrowleft;
			arrowLeft.x = 10;
			arrowLeft.y = 250;
 
			arrowLeft.addEventListener(MouseEvent.MOUSE_DOWN, onMouseLeft);
 
			addChild(arrowLeft);
 
			var arrowRight:Arrowright = new Arrowright;
			arrowRight.x = 760;
			arrowRight.y = 250;
 
			arrowRight.addEventListener(MouseEvent.MOUSE_DOWN, onMouseRight);
 
			addChild(arrowRight);
 
		}
 
		private function onMouseRight(e:MouseEvent):void
		{
			/*_currentPage++;
			   for (var i:int = 0; i < 6; i++)
			   {
 
 
 
			   _oneelement[i].addChildAt(_bitmapElement[i + _currentPage], 0);
			   //_bitmapElement[i].removeChildAt(0); 
			 }*/
 
			// удаляем нулевой элемент и сразу потом пушим на его место другой
			var k:Bitmap = _bitmapElement[i];
			_bitmapElement.splice(0, 1);
			_bitmapElement.push(k);
			for (var i:int = 0; i < _oneelement.length; i++)
			{
				_oneelement[i].addChildAt(_bitmapElement[i], 0);
				addChild(_oneelement[i]);
				trace(i);
			}
		}
 
		private function onMouseLeft(e:MouseEvent):void
		{
			/*_currentPage++;
			   for (var i:int = 0; i < 6; i++)
			   {
 
 
			   _oneelement[i].addChildAt(_bitmapElement[i + _currentPage], 0);
			   //_bitmapElement[i].removeChildAt(0);
			 }*/
 
			var f:Bitmap = _bitmapElement[i];
			_bitmapElement.splice(0, 1);
			_bitmapElement.push(f);
			for (var i:int = 0; i < _oneelement.length; i++)
			{
				_oneelement[i].addChildAt(_bitmapElement[i], 0);
				addChild(_oneelement[i]);
				trace(i);
			}
 
		}
 
	}
 
}

Старый 10.07.2013, 21:13
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 2  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Примерно так... Писал на скорую руку, но суть не в коде а в алгоритме.
Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.display.Bitmap;
	import flash.utils.setTimeout;
	import flash.geom.Point;
	import flash.events.MouseEvent;
 
 
	public class Mains extends Sprite {
 
		private var _viewer:Sprite = new Sprite();
 
		private var _bitmapArray:Vector.<Bitmap> = new Vector.<Bitmap>;
 
		private var _imageList:Array;
		private var _imageOffset:uint = 0;
 
		private var _offsetX:Number = 110;
		private var _offsetY:Number = 110;
 
		private var _showCount:uint = 3;
 
		public function Mains() {
 
			initface();
 
			init();
		}
 
		private function initface():void {
 
			var btnArr:Array = new Array('prev','next');
 
			var btn:Sprite;
 
			for each( var btn_name:String in btnArr ) {
 
				btn = new Sprite();
 
				btn.name = btn_name;
				btn.buttonMode = true;
 
				setGraf(btn);
 
				btn.x = numChildren*(btn.width+10);
 
				btn.addEventListener(MouseEvent.CLICK, mouseHandler);
 
				addChild(btn);
			}
		}
 
		private function setGraf(spr:Sprite):void {
			spr.graphics.beginFill(0x333333);
			spr.graphics.drawRect(0,0,20,20);
			spr.graphics.endFill();
		}
 
		private function mouseHandler(e:MouseEvent):void {
 
			var vecOff:Number = (e.target.name=='next') ? _showCount : -_showCount;
 
			_imageOffset += vecOff;
 
			if (_imageOffset<0) _imageOffset = 0;
 
			if (_imageOffset>=_bitmapArray.length) _imageOffset=_bitmapArray.length-1;
 
			showImage();
		}
 
		private function init():void {
 
			_viewer.y = .5*stage.stageHeight;
 
			addChild(_viewer);
 
			_imageList = new Config().getImageList();
 
			for each( var url:String in _imageList) new loadPictures(url, new Point(100,100) ).conteiner = _bitmapArray;
 
			loadHandler();
		}
 
		private function loadHandler():void {
 
			if (_imageList.length == _bitmapArray.length) 
				showImage();
			else
				setTimeout(loadHandler, 100 );
		}
 
		private function showImage():void {
 
			while ( _viewer.numChildren ) _viewer.removeChildAt(0);
 
 
			for ( var index:uint = _imageOffset; index < _imageOffset+_showCount; index ++ ) {
 
				if ( index >= _bitmapArray.length ) break;
 
				_bitmapArray[index].x = _viewer.numChildren*_offsetX;
 
				_viewer.addChild(_bitmapArray[index]);
			}
		}
	}
}
 
internal class Config {
 
	public function Config() {}
 
	public function getImageList():Array {
 
		return new Array('http://www.flasher.ru/forum/images/russian/flasher_logo_2013.gif',
						 'http://cs9329.vk.me/u968029/l_f7ac0439.png',
						 'http://img.nnm.uz/images/06jfj.jpg',
						 'http://www.flasher.ru/forum/images/russian/flasher_logo_2013.gif',
						 'http://www.flasher.ru/forum/images/russian/flasher_logo_2013.gif',
						 'http://cs9329.vk.me/u968029/l_f7ac0439.png',
						 'http://img.nnm.uz/images/06jfj.jpg');
	}
}
 
 
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.utils.ByteArray;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.net.URLRequest;
import flash.display.Sprite;
import flash.geom.Point;
 
internal class loadPictures extends Sprite {
 
	public var bitmap:Bitmap;
 
	public var conteiner:Vector.<Bitmap>;
 
	private var _maxSize:Point;
 
	public function loadPictures($url:String, maxSize:Point = null):void {
 
		if (maxSize) _maxSize = maxSize;
 
		bitmap = new Bitmap();
 
		var req:URLRequest = new URLRequest($url);
		var _picLoader:Loader = new Loader();
			_picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,loader2ByteArray);
 
		_picLoader.load(req);
	}
 
	private function loader2ByteArray(evt:Event):void {
 
		var lInfo:LoaderInfo = LoaderInfo(evt.target);
		var ba:ByteArray = lInfo.bytes;
 
		reloadByteArray(ba);
	}
 
	private function reloadByteArray(ba:ByteArray):void {
 
		var reloader:Loader = new Loader();
			reloader.loadBytes(ba);
 
			reloader.contentLoaderInfo.addEventListener(Event.COMPLETE, reloaderComplete);
	}
 
	private function reloaderComplete(evt:Event):void {
 
		var imageInfo:LoaderInfo = LoaderInfo(evt.target);
 
		var bmd:BitmapData = new BitmapData(imageInfo.width,imageInfo.height);
 
			bmd.draw(imageInfo.loader);
 
		bitmap = new Bitmap(bmd);
		bitmap.smoothing = true;
 
		if (_maxSize) {
			var k:Number = Math.min(_maxSize.x,_maxSize.y) / Math.max(bitmap.width,bitmap.height);
 
			bitmap.width *= k;
			bitmap.height *= k;
		}
 
		if (conteiner) conteiner.push(bitmap);
 
		dispatchEvent(new Event(Event.COMPLETE));
	}
}
__________________
return this...

Старый 11.07.2013, 17:37
Heidy вне форума Посмотреть профиль Отправить личное сообщение для Heidy Найти все сообщения от Heidy
  № 3  
Ответить с цитированием
Heidy

Регистрация: Jul 2013
Сообщений: 4
спс, попробую разобраться

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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