![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2013
Сообщений: 4
|
Подскажите, как создать небольшую галерею изображений по такому типу приложения ВК(начало, где объявление разных игр):
https://vk.com/app2857249_3028443?ref=9 То есть, имеется 8 картинок, по клику левой\правой стрелки они меняются (сдвигаются влево\вправо соответственно) накидал код, но меняются они не совсем так(сдвигаются они лентой, и нижний и верхний уровень, одна за другой, да еще и первый элемент остается на месте. пока два раза не отработает) 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); } } } } |
|
|||||
|
Примерно так... Писал на скорую руку, но суть не в коде а в алгоритме.
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... |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 4
|
спс, попробую разобраться
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|