|
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Как "обмануть" события?
Возникла странная проблема. Делаю проект в PaperVision. Подписываю объекты на сцене на MOUSE_OVER, MOUSE_OUT. Но, например, при попадании мышки на объект эти два события (MOUSE_OVER, MOUSE_OUT) вызываются сразу друг за другом 2-3раза подряд(хотя на самом деле событие MOUSE_OUT даже не происходило), что мне, конечно, не нужно. Все пересмотрел, ошибки вроде нигде нету. Просто я там намудрил много чего, думаю из-за этого что-то ПэперВижион тупит.
Так вот вопрос. Так как ошибку найти не могу, то как сделать так, чтобы события не срабатывали несколько раз друг за другом?(то есть как бы обмануть события). То есть, чтобы MOUSE_OVER и MOUSE_OUT срабатывали только тогда, когда они на самом деле происходят. Я уже и логические переменные использовал и таймеры ставил, но так оптимального решения не нашел. ЗЫ: Надеюсь вы поняли и представляете, о чем я говорю |
|
|||||
Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
|
События ROLL_OVER/ROLL_OUT ведут себя также?
__________________
Нормально делай — нормально будет! |
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Полностью аналогично. Я пытался таймером исправить это. То есть через определенное время подписываться на событие MOUSE_OUT, но, как вы понимаете, ниче хорошего из этого не вышло.
|
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Ошибки нужно исправлять, а не скрывать. Покажите код, может быть другие увидят в чем причина.
|
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Полностью с тобой согласен, что ошибки надо исправлять... НО... я просто понять не могу, что мутит этот Papervision. Весь код показывать, думаю, не имеет смысла. Вот главное:
На МувиКлипы вешаю события MOUSE_OVER MOUSE_OUT. Пихаю эти мувики в Plane. Ну и в слушателях события происходят определенные действия. то есть ничего необычного, например: |
|
|||||
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
в PV3D свои ивенты. для их рвботы надо выполнить несколько условий
1 - интерактивный вьюпорт 2 - интерактивный материал 3 - прицеп слушателя к 3D объекту import org.papervision3d.events.InteractiveScene3DEvent; .... var plane:Plane = new Plane(myInteractiveMaterial, 300, 300, 3, 3); plane.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, planeMouseOver); .... Private function planeMouseOver(e:InteractiveScene3DEvent):void{ e.displayObject3D..localRotationY += 10; } import org.papervision3d.materials.MovieAssetMaterial; .... viewport.interactive = true; var material:MovieAssetMaterial = new MovieAssetMaterial("material",false,true,false,true); material.interactive = true; MovieClip(MovieClip(material.movie).getChildByName("btn")).mouseChildren = false; MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.CLICK,click); MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.MOUSE_OVER,mouseOver); MovieClip(material.movie).getChildByName("btn").addEventListener(MouseEvent.MOUSE_OUT,mouseOut); private function click(e:MouseEvent):void { var buttonText:TextField = MovieClip(e.target).getChildByName("label") as TextField; switch(buttonText.text) { case "start": buttonText.text = "stop"; MovieClip( MovieClip(e.target).parent ).play(); break; default: buttonText.text = "start"; MovieClip( MovieClip(e.target).parent ).stop(); } } private function mouseOver(e:MouseEvent):void { viewport.buttonMode = true; } private function mouseOut(e:MouseEvent):void { viewport.buttonMode = false; } Последний раз редактировалось cr0w312; 28.02.2011 в 14:19. |
|
|||||
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Я б с удовольствием, но ничего не выходит. К тому же mov[i] детей не имеет
Цитата:
|
|
|||||
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
Цитата:
|
Часовой пояс GMT +4, время: 11:01. |
|
« Предыдущая тема | Следующая тема » |
|
|