Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Подсвечивание спрайта-клетки при наведении. (http://www.flasher.ru/forum/showthread.php?t=148554)

flax4Noob 05.01.2011 16:17

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

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

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

а так нет
Код AS3:

        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

Спасибо. Если кто будет искать, то вот что получилось.

Код AS3:

                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

если мне не изменяет память, можно просто сделать
Код AS3:

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


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

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