![]() |
|
||||||||||
|
|||||
|
стервочка (я мужик)
|
почему не использовался стандартный евентдиспатчер?
и зачем вообще писать его в таком виде? чем вас не устроили обычные методы? |
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
а в каком виде его надо было написать? )))
стандартный евентдиспатчер никуда не делся, для внутриклассовых собшений он остается. этот класс позволяет гонять события наружу - не задумываясь о том что и кто будет с ними делать. раньше что бы что-то вызвать в JS надо было знать названия функций - теперь это вообще не обязательно JS сам подписывается, сам отписывается, сам генерит события. Это мегаудобно, и мне и яваскриптеру. |
|
|||||
|
стервочка (я мужик)
|
так чем вас не устроил интерфейс IEventDispatcher ? зачем изобретать велосипед, с квадратными колёсами?
Последний раз редактировалось BlooDHounD; 28.04.2008 в 00:48. |
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
а при чем тут IEventDispatcher, ведь если его использовать, у меня код многократно усложнится!?
Мне хотелось бы увидеть пример... Я не говорю что мой класс идеален, но, повторюсь, альтернатив еще не видел ни с квадратными колесами ни с круглыми ) |
|
|||||
|
ALiEN_, по-моему штучка полезная.
А можете выложить исходники простенького примерчика, чтобы нагляднее было?
__________________
Сам себе репортер |
|
|||||
|
стервочка (я мужик)
|
да полно альтернатив
просто найти надо ![]() использование вашего класса несёт под собой несколько проблем: 1. я НЕ использую его как встроенный EventDispatcher, хотя он выполняет туже функцию. 2. нету типизации, используются динамические объекты. 3. отсутствуют слабые ссылки. прозрачность работы достигается не тем, что у вас мало кода написано, а тем что сторонний разработчик не должен изучать подозрительные махинации с вашими методами. |
|
|||||
|
UFO
Регистрация: Jul 2007
Сообщений: 173
|
BlooDHounD
ну где же? я не нашел. честно отписался вначале темы, что сначала искал, но может плохо. вобщем если поделишься альтернативой, буду благодарен. )) 1. он совсем не EventDispatcher в этом и разница. Он много шире - мостик между JS и AS событиями. EventDispatcher остается только для внутриклассовых событий, хотя можно, безусловно и использовать только мой класс и он справится на ура. 2. тут никуда не деться, ведь в JS все является объектами. И как раз только благодаря этому получилось этот класс написать. 3. Слабые ссылки? a зачем здесь слабые ссылки? в какое место их прикрутить )) где тут подозрительные маханации? )) Что под этими махинациями имеется ввиду? teebooter, сегодня выложу полноценный пример, надеюсь будет время. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
ALiEN_, прозрачно — это когда я могу написать dispatchEvent(new MyCustomEvent(MyCustomEvent.CUSTOM_EVENT)) и оно будет получено в JS.
А то что вы написали ни в какие ворота. Есть стандартная схема событий, вы зачем-то придумали свою, не вписывающуюся ни в какие стандарты. |
|
|||||
|
стервочка (я мужик)
|
Цитата:
Цитата:
Цитата:
Цитата:
и по существу ... прозрачность, это когда человек не должен адаптироваться к новым инструментам. если я делаю заявку на прозрачность, то я инкапсулирую весь код внутри класса, а не пытаюсь вынести на ружу свои кривые реализация внутренней механики. |
|
|||||
|
стервочка (я мужик)
|
вот вам пример моей упращённой реализации прозрачной работы с ExternalInterface,
package by.blooddy.platform.external {
import flash.external.ExternalInterface;
import flash.utils.describeType;
import flash.utils.getQualifiedClassName;
import flash.utils.flash_proxy;
use namespace flash_proxy;
public dynamic class ExternalConnection {
public function ExternalConnection() {
super();
if ( ExternalInterface.available ) {
var methods:XMLList = describeType( this ).method.@name;
var name:String;
for each ( var method:XML in methods ) {
name = method.toXMLString();
ExternalInterface.addCallback( name, this[name] );
}
} else {
// throw
}
}
public function call(name:String, ...arguments):* {
if ( ExternalInterface.available ) {
arguments.unshift(name);
ExternalInterface.call.apply( ExternalInterface, arguments );
} else {
// throw
}
}
}
}
самое главная демонстрация этого кода, это то, что разработчик не парится про проверки на avaible и добавления колбэков. это называется прозрачная работа. лежит яваскрипт, или C# приложение, разработчику наплевать: он уверен, что класс родитель справился со своей задачей на ура. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|