Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать количество элементов с alpha =1 (http://www.flasher.ru/forum/showthread.php?t=208793)

grafillo! 29.08.2014 17:52

Как узнать количество элементов с alpha =1
 
Есть спрайт PrivatePeopleSprite в него добавляются мувиклипы msg, некоторые из них становятся alpha=0 - невидимыми, как подсчитать количество видимых msg? Возможно ли это?

Код AS3:

var msg:msg = new msg;
PrivatePeopleSprite:Sprite;
PrivatePeopleSprite.addChild(msg);


Gerbert 29.08.2014 18:17

Рекурсивно обойти всех чилдов DOC PrivatePeopleSprite и проверить их альфу.

MikroAcse 29.08.2014 18:57

Код AS3:

var transparentMsgs:Array = [];
for(var i:int = 0; i < PrivatePeopleSprite.numChildren; i++) {
    var child:DisplayObject = PrivatePeopleSprite.getChildAt(i);
    if(child is msg && child.alpha == 0) {
        transparentMsgs.push(child);
    }
}

Результат: transparentMsgs

GBee 29.08.2014 19:30

MikroAcse количество видимых, а у вас массив в результате.
numChildren постоянно теребить не очень хорошо, по крайней мере раньше было.

caseyryan 29.08.2014 19:45

Код AS3:

var a:int = PrivatePeopleSprite.numChildren;
var numTransparent:int = 0;
for (var i:int = 0; i < a; i++) {
  if (PrivatePeopleSprite.getChildAt(i).alpha == 0) numTransparent++;
}
trace(numTransparent);


Gerbert 29.08.2014 20:59

Так ещё короче:)
Код AS3:

var length:int = 5
var count:int;
 
while(length-- > 0)
        if(PrivatePeopleSprite.getChildAt(length).alpha == 0)
                count++;


caseyryan 29.08.2014 22:49

тогда уж
Код AS3:

var length:int = PrivatePeopleSprite.numChildren;

а в цикле вообще можно
Код AS3:

while(length--)

п.с. плохая практика писать без фигурных скобок. Так можно в один момент добавить туда код, который, казалось бы, должен выполняться, а он не будет. Можно ни один час голову поломать над поиском причин, особенно в большом проекте

Gerbert 29.08.2014 23:38

Цитата:

тогда уж
Точно!) Это я проверил в итерации свойство length и забыл вернуть numChildren.
Цитата:

п.с. плохая практика писать без фигурных скобок. Так можно в один момент добавить туда код, который, казалось бы, должен выполняться, а он не будет.
Это надо быть вообще невменяемым, чтобы видя такой код, добавить в него что-то так, что бы он не работал и ещё после этого несколько часов искать проблему :)
Лично я против скобок!

in4core 30.08.2014 04:27

Всем спать! Хорош бредни разводить все должно быть так, иначе это не учение :

Код AS3:

var msg:Msg = new Msg();
opa_ept: privatePeopleCLASSSUKA= new privatePeopleCLASSSUKA();
opa_ept.addChild(msg);
trace( opa_ept.alphaChildren )


caseyryan 30.08.2014 11:47

Цитата:

Лично я против скобок!
Ну это пока. Не всё можно писать без скобок. А когда в коде в одних местах есть скобки, в других нет, это смотрится как бардак. Компилятор все равно скобки добавит


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

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