PDA

Просмотр полной версии : Подсвечивание спрайта-клетки при наведении.


flax4Noob
05.01.2011, 16:17
массив спрайтов (клеточки) расположен в родительском спрайте сверху вниз слева направо методами addChild()
каждой клетке привязан обработчик проведения над ним мышки. Это просто и работает. При наведении, я клетке добавляю GlowFilter и она "Светится". Но вот беда...
Светятся только "верхняя" и "левая" грани. Почему такая чтука я предполагаю - из-за порядка в котором они прикрепляются к родителю. Разумеется, если сделать клетки с "пробелами", то они светятся как надо. Как бы мне "поднять" клетку выше, а потом "опустить" на место...

немного кода, а то один текст как-то не айс.
так работает

this.graphics.clear();
this.graphics.beginFill(0xAAAA00,1);
this.graphics.lineStyle(1, 0x111111);
this.graphics.drawRect(5, 5, cellSize-5, cellSize-5);

а так нет

this.graphics.clear();
this.graphics.beginFill(0xAAAA00,1);
this.graphics.lineStyle(1, 0x111111);
this.graphics.drawRect(0, 0, cellSize, cellSize);

TanaTiX
05.01.2011, 16:24
Поищите по setChildIndex - в контейнере можно поднять как на верхний уровень, зная кол-во элементов (в т.ч. numChildren), так и на нижний (с параметром глубины 0). Все это в офдоках отлично описано

flax4Noob
05.01.2011, 16:34
Спасибо. Если кто будет искать, то вот что получилось.


private function mouseOver(event:MouseEvent){
var cell:TCell = TCell(event.target);
var cmf:GlowFilter = new GlowFilter(0x00ffff,1)
cell.parent.setChildIndex(cell,cell.parent.numChildren-1);
this._filters[1] = cmf;
cell.filters=this._filters;
}


private function mouseOut(event:MouseEvent){
var cell:TCell = TCell(event.target);
this._filters[1] = _emptyFilter;
cell.parent.setChildIndex(cell,0);
cell.filters=this._filters;
}

BezDelnik
05.01.2011, 16:37
если мне не изменяет память, можно просто сделать
cell.parent.addChild(cell)

TanaTiX
05.01.2011, 16:40
BezDelnik, зачем создавать лишние объекты, да еще и таким способом?

BezDelnik
05.01.2011, 17:35
а он не создаст новый объект, он просто поднимет его на верхний уровень

TanaTiX
05.01.2011, 18:14
в любом случае - это костыль
addChild добавляет объект в DisplayObjectContainer, а не задает высоту, для чего есть другие методы

BezDelnik
05.01.2011, 18:57
не вижу в этом ничего плохого.. на самом деле не принципиально, я написал этот вариант просто для общего развития.. например у меня на собеседовании спросили несколько способов "вытащить мувик на верхний уровень" :)

cleptoman
05.01.2011, 19:08
TanaTiX, в данном случае можно и этот метод, правда по тестам он будет чууууточку проигрывать в скорости в отношении setChildIndex