Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Клипы на сцене (http://www.flasher.ru/forum/showthread.php?t=113428)

crazyone 22.07.2008 12:57

Лично я отказываюсь разбираться с вашим кодом. Вам не хочется "городить чёта с этими переменными", и в итоге вы мучитесь, пытаясь что-то налепить, не задев ваши локальные переменные. Ну если вам так дорог секс с кодом, я не возражаю, но в этой оргии участия принимать не буду.

Ruffus 23.07.2008 09:53

Неожиданно
Что я могу сказать.
Мучиться особо не пришлось. Локальные переменные и переменные класса прозрачны для подфункций. Единственное, что мне пришлось сделать - это создать делегатов для других методов класса, использовавшихся внутри подфункции. На этом секс закончился.
Кроме того, последний приведённый кусок кода по своей логике не имеет к этому отношения вообще.

crazyone 23.07.2008 13:11

Мучиться не пришлось, но прийдется, если работать с этим кодом дальше.
И да, мне кажется, что у вас проблема с InstanceManager.getNextDepth(), который, скорее всего, не предназначен для огромного числа мувиклипов.
А может и еще где-нибудь. Копайтесь в вашем коде, вычисляйте, какой кусок занимает много времени.

джонатан 23.07.2008 14:15

Помоему правильно не getNextDepth(), а getNextHighestDepth();

Ruffus 23.07.2008 14:24

2джонатан: там вообще метод getFreeDepth, это статический метод спец. класса.

Код метода из InstanceManager:
Код:

static function getFreeDepth(parent:MovieClip):Number{
        var depth:Number=0;
        while(parent.getInstanceAtDepth(depth))depth++;
        return depth;
}

Как будто бы не очень подходит для тысячи клипов, проверок с каждым разом всё больше. Но тест с getTimer мне показал, что на эти проверки тратится время в десятки раз меньшее, чем на создание объектов MyClip.

crazyone 23.07.2008 18:44

Так на что у вас тратится больше всего времени? именно на createEmptyMovieClip?
Как кто-нибудь может вам помочь, если вы не показываете, как и что у вас создается?

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

Ruffus 23.07.2008 20:28

Когда я судил по выводу getTimer, я думал, что больше всего времени занимает MyClip.create(...). Очень сранным было то, что чем дальше, тем медленнее они выводились.
Но я решил по вашему совету попробовать сменить постоянные вызовы depth = InstanceManager.getFreeDepth(this) на простое depth = depth + 1. Тут конечно не всё так просто, но не суть.
После этого положение вещей поправилось. Теперь картина с вложением чуть более 2000 MyClip рисуется за 5 секунд. И, по крайней мере, как я наблюдал, все эти клипы прорисовываются с одинаковой скоростью.
Думаю, что с этой темой можно закончить. Большое спасибо.


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

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