Форум 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=206357)

pall92 30.01.2014 00:17

вектор - исправил. (не знаю как). вроде лучше. спасибо. буду тестить)

Добавлено через 41 секунду
Цитата:

Сообщение от Akopalipsis (Сообщение 1158423)
Вектор на двадцать объектов может и в обратную сказаться.. Плюсов он не даст.

вообще я читал они быстрее работают... типизация же

Akopalipsis 30.01.2014 00:31

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

GBee 30.01.2014 00:32

Вложений: 1
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class Main extends Sprite
        {
                private var _coins:Array = [];
                public function Main():void
                {
                        addEventListener(Event.ENTER_FRAME, enterFrame);
                        for (var i:int = 0; i < 1000; i++)
                        {
                                var coin:Coin = new Coin();
                                addChild(coin);
                                coin.start();
                                _coins.push(coin);
                        }
                }
 
                private function enterFrame(e:Event = null):void
                {
                        for each(var coin:Coin in _coins)
                                coin.move();
                }
        }
}

Код AS3:

package  
{
        import flash.display.Sprite;
 
        public class Coin extends Sprite
        {
                private const BOTTOM:int = 600;
                private const RIGHT:int = 600;
                private const SPEED:int = 10;
 
                private var _speed:int = 0;
                public function Coin()
                {
                        graphics.beginFill(0x0000FF);
                        graphics.drawCircle(0, 0, 10);
                        y = Math.random() * BOTTOM;
                }
 
                public function start():void
                {
                        _speed = int(Math.random() * SPEED) + 1;
                        alpha = _speed / SPEED;
                        scaleX = scaleY = alpha;
                        x = Math.random() * RIGHT;
                }
 
                public function move():void
                {
                        y += _speed;
                        if (y > BOTTOM)
                        {
                                y = -_speed;
                                start();
                        }
                }
        }
 
}

Snow.swf   (1.5 Кб)

pall92 30.01.2014 00:41

Цитата:

Сообщение от GBee (Сообщение 1158422)
почему бы монетке самой не падать, а достигая дна не переносится вверх и падать опять с новыми параметрами (скорости, размерами)? Это же просто дождик/снег с него многие начинали.

это не просто фон. я должен точно контролировать их поток)

Добавлено через 1 минуту
Цитата:

Сообщение от Akopalipsis (Сообщение 1158427)
я тоже читал и смеялся, когда мне говорили, что вектор это корявенько, думал, ну как же это, я же читал.
А когда начал проверять, то оказалось, что он эффективен только на большом кол-ве элементов. И чтобы не соврать, я просто не помню с чем конкретно связанно, но он даже замедлял работу кода, после чего я и перестал пользоваться им. до больших объёмов ещё не дорос.

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

в любом случае - мне судя по всему помогло)

Добавлено через 2 минуты
по идеи - все типизированое работает быстрее.. нет разве?

GBee 30.01.2014 00:51

Цитата:

это не просто фон. я должен точно контролировать их поток)
У вас по коду не очень понятно, что там контролировать. Тем более точно.

У вас 3 раза в секунду бегаем в цикле по огромному условию, а все остальное то же самое.

pall92 30.01.2014 00:55

кстати при тестах выявилась еще одна проблема.... часть монеток походу не удаляется... знаю это другая проблема, но не хочу новую тему открывать)

подзрения возникли после того как саметил, что длинна массива медленно но увеличивается... если не первой минуте количество монет на экране(после того как они заполнили экран) колеблется от 34 до 40.. то спустя пару минут возрастает до 40-50!

код вы видели, может кто-нибудь сказать почему это может происходить?

GBee 30.01.2014 00:58

:D Да уж
Цитата:

Код AS3:

arr.length < 26


Цитата:

колеблется от 34 до 40.. то спустя пару минут возрастает до 40-50!

pall92 30.01.2014 01:00

Цитата:

Сообщение от GBee (Сообщение 1158433)
У вас по коду не очень понятно, что там контролировать. Тем более точно.

У вас 3 раза в секунду бегаем в цикле по огромному условию, а все остальное то же самое.

ну нужно контролировать их число в частности... у меня в переменную addFB добавляется некоторое кол-во монет для сброса... и ровно столько и надо сбросить(с учетом валют, но это не важно).

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

Добавлено через 1 минуту
Цитата:

Сообщение от GBee (Сообщение 1158435)
:D Да уж

пардон.. я тестил и убрал ограничение на длинну, чтобы проверить работу вектора)

длинна так и так не должна расти после достижения максимума.. вроде бы....

GBee 30.01.2014 01:15

Непонятный код, а где addFB растет?

pall92 30.01.2014 02:36

Цитата:

Сообщение от GBee (Сообщение 1158438)
Непонятный код, а где addFB растет?

извне) это для описываемого мной вопроса не существенно)


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

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