|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Ты видимо не с "тем" классом работаеш.
Флэш при запуске создает копию директории Classes в поэтому если ты изменяеш классы которые находяться в директории в которой установлен флэш, то изменения ты увидиш только после его перезапуска, вот и причина почему код не работает, не работает а после перезапуска флэша начинает работать.
__________________
Don't use the Force, Luke - try to THINK! |
|
|||||
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
вот блин!!
Век живи век учись, спасибо тебе большое! |
|
|||||
4AM Games
|
если не трудно то объясните пожалуйста, по подробнее как добавить событие к классу, скажем есть класс XMC к нему нужно добавить событие onDoubleClick , как этого можно добиться?
спасибо заранее |
|
|||||
Регистрация: Jan 2002
Адрес: Kharkov
Сообщений: 57
|
могу предложить тебе такой вариант
Класс для отслеживания двойного нажатия testEvent.as class testEvent{ static var numClicks:Number = 0; private var curNumTakts:Number = 0; function testEvent(){ } function onMouseDown(){ numClicks ++; if (numClicks == 2){ numClicks = 0; trace('Double Click'); } } function unsetInterval(){ numClicks = 0; } } Но это в том случае если тебе нужно просто отследить двойное нажатие, если же тебе нужно чтоб класс генерил своё событие по двойному щелчку, то trace нужно заменить на вышесказанное Proman' ом по поводу eventDispatcher |
|
|||||
4AM Games
|
Мановар, да вот я читаю и пытаюсь так сказать вникнуть, двойной клик это только пример так сказать, я щас использую похожую систему с твоей( только не создаю для нее отдельного класса, я просто отслеживаю когда менюшка находиться в зоне видимости а когда оно невидимое). но хотелось бы создать функцию которая работала как буилдин события(типа тех же рол овер, интер фрейм) а в то что написал Проман,я еще не врубился=(
|
|
|||||
вариант:
import mx.events.EventDispatcher class XMC { var md:Number var dt:Number function XMC(t:Number){ mx.events.EventDispatcher.initialize(this) md=getTimer() dt=t var r=this Mouse.addListener(r) r.onMouseDown=function(){ if(getTimer()-md<dt){ var eventObject:Object = {target:r, type:'onDoubleClick'}; dispatchEvent(eventObject); } else md=getTimer() } } function dispatchEvent() { } function addEventListener() { } function removeEventListener() { } } Последний раз редактировалось silin; 29.10.2004 в 20:25. |
|
|||||
Регистрация: Feb 2001
Сообщений: 1,893
|
Извращенцы, нафиг вам EventDispatchet? Я понимаю еще сложнейший проект, и то люди переписывают этот класс потому что у ММ там лажа полная, AsBroadcaster или mx.transitions.BroadcasterMX - по уши хватит
|
|
|||||
полностью согласен с забором, в этом раскладе класс на двойной клик выглядит
class DblClick extends MovieClip{ static var bc:Object static var dt:Number=300 private var md:Number function DblClick(){ AsBroadcaster.initialize(bc={}) bc.addListener(this) Mouse.addListener(bc) bc.onMouseDown=function(){ if(getTimer()-md<dt)this.broadcastMessage("onDoubleClick") else md=getTimer() } } } mc.onDoubleClick=function(){trace("dbl")}//mc связан с классом с помощью Linkage зы:однако ж раз диспатчер существует надо и его пробывать, хотя б для того что бы разобраться и сравнить Последний раз редактировалось silin; 29.10.2004 в 23:32. |
|
|||||
Регистрация: Feb 2001
Сообщений: 1,893
|
Что касается диспатчера - это просто расширенная событийная модель, вот и все ...
import mx.events.EventDispatcher; // ************************************************ function onEvent():Void { trace("onEvent"); } var listener:Object = new Object(); listener.event = function():Void { trace("listener.event"); } listener.handleEvent = function(event:Object):Void { switch(event.type) { case("event"): trace("listener.handleEvent"); break; } } var dispatcher:Object = new Object(); EventDispatcher.initialize(dispatcher); dispatcher.addEventListener("event", onEvent); dispatcher.addEventListener("event", listener); dispatcher.eventHandler = function():Void { trace("Dispatcher.eventHandler"); } // ************************************************ dispatcher.dispatchEvent({type:"event"}); Что касается MovieClip.onDblClick - опять же зачем городить? Ну ни кто ведь не отменял прототипы, и та же ММ их использует в своих классах ... во всяком случае, в, примерно, таком виде ... class mx.Extensions.MovieClipExtensions { static function addDrawingAPI():Void { MovieClip.prototype.drawCircle = function (x:Number, y:Number, radius:Number):Void { // ... } } } // и далее когда необходимо подключаем это ... import mx.Extensions.MovieClipExtensions; MovieClipExtensions.addDrawingAPI(); Да есть момент, что MovieClip - это dynamic class, но не важно, кто мешает для того же String, залезть в String.as и добавить либо ключевое слово dynamic, или зарезервировать местечко для своего метода, типа: function hello():Void; И далее в подключаемом StringExtension уже его определить ... Кстати если поставить себе Central SDK - то можно увидеть как обновится тот же String.as (function replace( re:String, repl:String ):String; // Central API) Вобщем будте проще |
|
|||||
Регистрация: Feb 2001
Сообщений: 1,893
|
про дабл клик
Про onDoubleClick - это я к тому, что Ноксовский вариант ничуть не устарел
Что onDoubleClick должен быть у Mouse, а не у какой-то там class SDAA345klklk35lbjj ... |
Часовой пояс GMT +4, время: 19:59. |
|
« Предыдущая тема | Следующая тема » |
|
|