Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.02.2011, 21:51
reNiks вне форума Посмотреть профиль Отправить личное сообщение для reNiks Найти все сообщения от reNiks
  № 1  
Ответить с цитированием
reNiks

Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
Question A* проблемы с готовым компонентом

Здравствуйте. на просторах инета нарыл вот такой компонент http://habrahabr.ru/blogs/personal/71083/ и решил использовать. Но возникают проблемы. Вот код:
Код AS3:
package ru.RainbowAdventure.Characters
{
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flashx.textLayout.events.ModelChange;
    import ru.RainbowAdventure.Characters.Hero;
    import ru.RainbowAdventure.Universe;
 
 
 
    public class Enemy extends Sprite
    {
        public var bWalk:Array;
        public static var bX:int;
        public static var bY:int;
        public static var hX:int;
        public static var hY:int;
        public static var bos:MovieClip;
        public static var grid:MovieClip;
        public static var ball:MovieClip;
        public var container_enemy:MovieClip;
        public static var obstacle_map:Array = Universe.obstacle_map;
        var a_star:AStar=new AStar();
 
        public function Enemy()
        {
            addEventListener(Event.ADDED_TO_STAGE, init);
 
        }
        private function init(event:Event):void
        {
            hX = Hero.hX
            hY = Hero.hY
            ball = Hero.ball;
            grid = Universe.grid;
            removeEventListener(Event.ADDED_TO_STAGE, init);
            addEnemy();
            trace(bX,bY,hX,hY);
            a_star.addEventListener(a_star.ERROR,onError);
            a_star.setObstacleMap(obstacle_map);
            a_star.addEventListener(Event.COMPLETE,onComplete);
            a_star.clippingType = a_star.P;
            a_star.findPath(bX,bY,hX,hY);
 
 
 
 
            trace("Enemy initialized...");
        }
        private function addEnemy()
        {
            container_enemy = new MovieClip  ;
            bos = new Enemy_mc  ;
            bos.x = 480;
            bos.y = 336;
            bos.gotoAndStop(1);
            addChild(container_enemy);
            container_enemy.addChild(bos);
            trace("Enemy showed...");
            bX = bos.x/24;
            bY = bos.y/24;
        }
        private function onComplete(e:Event):void
        {
            bWalk = a_star.getPath();
        }
 
        private function onError(e:Event):void
        {
            trace(a_star.lastError);
        }
 
 
    }
 
}
при выполнении сам компонент выдает ошибку"другая ошибка". но я ни в чем не могу найти какой-либо ошибки. Помогите пожалуйста если можете

Старый 06.02.2011, 22:15
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 2  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
компонент работает нормально
Universe.obstacle_map что содержит?
там должен быть массив логических значений

кстати, пример из статьи работает?

Старый 06.02.2011, 23:17
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 3  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Выкинье компонент на помойку - он работает в несколько раз медленнее чем обычный поиск волновым методом
Проверял.
Там товарисч просто при каждом проходе сортирует массив вместо бинарной или хотя-бы обычной вставки.
Работает тоже "мажорно" - каждый раз инициализирует карту при нахождении маршрута.

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


Последний раз редактировалось expl; 06.02.2011 в 23:38.
Старый 06.02.2011, 23:43
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 4  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
"обычный поиск" ручками писать надо

Старый 06.02.2011, 23:58
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Дожили.
Чел реализовал алгоритмически более быстрый(и более сложный) алгоритм так, что он работает медленнее простого.
А другой чел должен использовать этот алгоритм, потому что не может нагуглить более простой.

Старый 07.02.2011, 00:15
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
http://jobemakar.wordpress.com/2008/...r-pathfinding/
__________________
Отряд Котовскага

Старый 07.02.2011, 00:48
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 7  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
То же самое по-русски http://coolisee.com/2010/05/21/poisk-puti-pathfinding/

Старый 08.02.2011, 14:00
Nemez вне форума Посмотреть профиль Отправить личное сообщение для Nemez Найти все сообщения от Nemez
  № 8  
Ответить с цитированием
Nemez
 
Аватар для Nemez

Регистрация: Jun 2010
Сообщений: 189
Цитата:
Сообщение от alatar Посмотреть сообщение
То же самое по-русски http://coolisee.com/2010/05/21/poisk-puti-pathfinding/
По алгоритму, вычисляя предполагаемую стоимость перемещения от текущего узла до конечного, мы идем к цели кратчайшим путем. Натолкнувшись на препятствие, огибаем. Возвращаясь назад, идем тем же путем. Где и как мы видим издали непроходимые места и заранее сворачиваем в сторону? Если можно, поясните без кода, сам алгоритм. Спасибо.

Старый 08.02.2011, 14:53
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 9  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Прикидываем, какая длина пути будет из всех необработанных точек (ну т.е. это длина пути, который нужно пройти, чтоб попасть в эту точку плюс длина пути из этой точки до финиша, как если бы препятствий не было). Одну из тех, где эта длина минимальна - обрабатываем (и получаем, возможно, ещё необработанные точки). Из тех, где прикинутая длина минимальна лучше выбирать ту, уже пройденный путь до которой самый длинный (а то придётся обработать много точек). Издали не видим ничо, видим по возвращению)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 08.02.2011, 14:56
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 10  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Действительно крупные карты надо сегментировать, как я понимаю.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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