![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Dec 2010
Адрес: арх. обл.
Сообщений: 38
|
Здравствуйте. на просторах инета нарыл вот такой компонент http://habrahabr.ru/blogs/personal/71083/ и решил использовать. Но возникают проблемы. Вот код:
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); } } } |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
компонент работает нормально
Universe.obstacle_map что содержит? там должен быть массив логических значений кстати, пример из статьи работает? |
|
|||||
|
Выкинье компонент на помойку - он работает в несколько раз медленнее чем обычный поиск волновым методом
Проверял. Там товарисч просто при каждом проходе сортирует массив вместо бинарной или хотя-бы обычной вставки. Работает тоже "мажорно" - каждый раз инициализирует карту при нахождении маршрута. Не, положительные моменты тоже есть - нигде больше не смог найти реализации нахождения пути только с прямоугольными углами Но если в компонент не лазить - смысла использовать нет, потому что волновым это реализуется просто и работает быстрее Последний раз редактировалось expl; 06.02.2011 в 23:38. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
"обычный поиск" ручками писать надо
![]() |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
__________________
Отряд Котовскага |
|
|||||
|
То же самое по-русски http://coolisee.com/2010/05/21/poisk-puti-pathfinding/
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 189
|
Цитата:
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Прикидываем, какая длина пути будет из всех необработанных точек (ну т.е. это длина пути, который нужно пройти, чтоб попасть в эту точку плюс длина пути из этой точки до финиша, как если бы препятствий не было). Одну из тех, где эта длина минимальна - обрабатываем (и получаем, возможно, ещё необработанные точки). Из тех, где прикинутая длина минимальна лучше выбирать ту, уже пройденный путь до которой самый длинный (а то придётся обработать много точек). Издали не видим ничо, видим по возвращению)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 189
|
Вот этот то момент и не ясен. (((
Мы возвращаемся по своим следам, но как мы спрямляем путь? |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|