|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Oct 2010
Сообщений: 85
|
Выравнивание списка элементов по высоте
Есть некий список элементов, при удалении одного из элементов(к примеру с середины), те что ниже должны подтягиваться замещая собой удаленный элемент.
Вроде школьная задача, но я уже позеленел от нее, ничего придумать не могу. По сути принцип работы кода должен быть таким: удаление элемента, вызов цикла, назначение новых координат. Предложите свои варианты, как вам это видится. Если по тексту не понятно, о чем речь, то вот, что сейчас имеется. http://wonderfl.net/c/n5az |
|
|||||
думать над вариантами реализации и красотой некогда.
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; /** * @author СлаваRa * @version */ public class Main extends Sprite { public function Main():void { super.addEventListener(Event.ADDED_TO_STAGE, this._super_addedToStage); } protected var _squareContainer:Sprite; protected var _squares:Array /*of Sprite*/ protected var _squareNum:uint = 6; protected var _squareMarginBottom:uint = 10; protected function _super_addedToStage(e:Event = null):void { super.removeEventListener(Event.ADDED_TO_STAGE, this._super_addedToStage); this._squareContainer = new Sprite(); this._squares = []; var square:Sprite; for (var i:uint = uint.MIN_VALUE; i < this._squareNum; i++) { square = this._createSquare(); this._squares.push(square); square.addEventListener(Event.ADDED, this._alignWithY); square.addEventListener(Event.REMOVED, this._alignWithY); square.addEventListener(MouseEvent.CLICK, this._square_click); this._squareContainer.addChild(square); } super.addChild(this._squareContainer); } protected function _createSquare():Sprite { var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(0x000000) sprite.graphics.drawRect(0,0,90,30) sprite.graphics.endFill(); return sprite; } protected function _alignWithY(e:Event):void { for (var i:uint = uint.MIN_VALUE; i < this._squares.length; i++) { this._squares[i].y = i === 0 ? i : this._squares[i - 1].y + this._squares[i - 1].height + this._squareMarginBottom; } } protected function _square_click(e:MouseEvent):void { var square:Sprite = e.target as Sprite; this._squares.splice(this._squares.indexOf(square), 1); this._squareContainer.removeChild(square); } } }
__________________
местонахождение Последний раз редактировалось СлаваRa; 06.08.2011 в 21:00. |
Часовой пояс GMT +4, время: 11:06. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|