Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   object или dictionary? И размер спрайта(только видимых элементов) (http://www.flasher.ru/forum/showthread.php?t=121346)

kia007 13.02.2009 16:54

object или dictionary? И размер спрайта(только видимых элементов)
 
Приветствую! поздравляю всех с днем свято... с ПЯТНИЦЕЙ! :taunt:
Подскажите что предпочтительнее использовать в качестве ассоциативного массива? Что быстрее object или dictionary?
Насколько знаю object быстрее, тогда зачем Dictionary нужен?

И чтоб отдельную тему не создавать, как узнать размер спрайта учитывая только видимые чаилды. Т.е. у меня в спрайте элементы которые невидимы + какая то их часть скрыта маской, но размер спрайта учитывает и невидимые части за маской. Как тут быть??

Так делать не очень хочется(там где нужно переопределяю проперти width и height у чилдренов):
Код AS3:

var height:Number = 0;
var width:Number = 0;
var displayObj:DisplayObject;
for (var i:int = 0; i < m_mainContainer.numChildren; i++)
{
        displayObj = m_mainContainer.getChildAt(i);
        if (displayObj.y + displayObj.height > height)
                height = displayObj.y + displayObj.height;
 
        if (displayObj.x + displayObj.width > width)
                width = displayObj.x + displayObj.width;
}


etc 13.02.2009 17:00

Dictionary надо использовать там, где вам нужны ключи сложного типа.

kia007 13.02.2009 17:01

спасибо, понял. Первый вопрос снят с повестки дня:)

silin 13.02.2009 17:33

можно срисовать в битмап и посмотреть непрозрачную область
Код AS3:

public function getVisibleBounds():Rectangle
{
        var tmp:BitmapData = new BitmapData(width, height, true, 0);
        tmp.draw(this);
        var rec:Rectangle = tmp.getColorBoundsRect(0xFFFFFFFF, 0, false);
        tmp.dispose();
        return rec;
}


kia007 13.02.2009 17:36

интересный вариант, но думается более ресурсоемкий

darksranger 13.02.2009 20:38

ну вы же не ежесекундно берете размеры ?! тем более что битмапа после снятия размеров удаляется, так что не думаю что ресурсоемко выдет


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

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