![]() |
|
||||||||||
|
|||||
|
[+1.3 18.04.11]
Регистрация: Nov 2008
Сообщений: 8
|
Доброго времени суток.
Столкнулся с такой ситуацией: есть массив объектов; в цикле его перебираю и определяю кратчайший путь (через собственный класс основанный на А*) до определенной точки; определение пути срабатывает только для первого объекта цикла (весь цикл пробегает быстрее чем класс успевает вернуть результат); вижу решение в добавлении события окончания расчета в классе, но не могу заставить возвращать событие. Во флэше новичек, ваяю на AS3. Читал: http://www.flasher.ru/forum/showthread.php?t=79874 кусочек кода: package path_classes { import flash.events.Event; import flash.events.EventDispatcher; public class PathLookup extends EventDispatcher{ public static function findPath(source:Point, target:Point):Object { dispatchEvent(new Event(Event.COMPLETE)); return path; } во флэшке пишу: ошибка при компиляции: Переменная dispatchEvent не определена. Помогите добрым советом. Может как-то можно заставить дожидаться окончания метода класса не прибегая к таймерам? Или событие докавырять? |
|
|||||
|
PathLookup - экземпляр класса
public static function findPath - статическая функция!
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
|
[+1.3 18.04.11]
Регистрация: Nov 2008
Сообщений: 8
|
Цитата:
PathLookup extends EventDispatcher, от этого PathLookup стал экземпляром? |
|
|||||
|
Не правильно сначала прочитал ваш код, вы не можете на статический объект добавить слушатель, т.к. для этого требуется экземпляр.
package path_classes { import flash.events.Event; import flash.events.EventDispatcher; public class PathLookup extends EventDispatcher{ public unction findPath(source:Point, target:Point):Object { dispatchEvent(new Event(Event.COMPLETE)); return path; } //**** var pl:PathLookup = new PathLookup(/*PARAMS??*/); pl.addEventListener(Event.COMPLETE, onPathFounded); pl.findPath(/**/); есть еще вариант передавать параметром callback-функцию, например :
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. Последний раз редактировалось Genzo; 03.11.2011 в 14:23. |
|
|||||
|
Нужно:
public function findPath(source:Point, target:Point):Object { dispatchEvent(new Event(Event.COMPLETE)); return path; } public static var instance: PathLookup = new PathLookup(); .. instance.dispatchEvent(new Event(Event.COMPLETE)); .. PathLookup.instance.addEventListener(... Да колбек здесь как раз самое то.
__________________
http://www.chessmax.ru |
|
|||||
|
[+1.3 18.04.11]
Регистрация: Nov 2008
Сообщений: 8
|
Золотые слова, спасибо! Ваше конфу несравненно сильнее моего)
Добавлено через 5 часов 35 минут Такс, все равно не получилось сделать толково. Что-то видимо я не понимаю. Есть ли какой-то вариант поиска пути для массива объектов до заданной точки? Я перебираю массив циклом и запускаю процедуру обнаружения пути. Даже если в колбаке повышаю цикловую переменную, функция не успевает вернуть результат. Добавлено через 5 часов 40 минут ...попробую пока переписать нахождение пути для массива findPath(source:Array, target:Point):Object |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|