Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.07.2010, 00:42
vasyapunk вне форума Посмотреть профиль Отправить личное сообщение для vasyapunk Найти все сообщения от vasyapunk
  № 1  
Ответить с цитированием
vasyapunk

Регистрация: Sep 2009
Сообщений: 35
По умолчанию Прокрутка контента при положении курсора мыши над TextArea

Привет всем)
Почему когда курсор мыши находится над TextArea, то нельзя скролить контент колесиком?
Кто знает как это избегать - помогите пожалуйста)

Старый 26.07.2010, 12:59
VARion вне форума Посмотреть профиль Отправить личное сообщение для VARion Посетить домашнюю страницу VARion Найти все сообщения от VARion
  № 2  
Ответить с цитированием
VARion

Регистрация: Apr 2008
Сообщений: 27
Есть аналогичная проблема: внутри Scroller находятся NumericStepper и когда в них помещён курсор, то скроллер не прокручивается колесом мыши. Спрашивал решение здесь, но никто не ответил.
Судя по-всему проблема в одном и том же, подскажите пожалуйста что с этим делать?

Старый 26.07.2010, 13:54
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 3  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Проблема в том, что текстовые поля перехватывают событие прокрутки для своих нужд. Выход либо передавать событие выше по иерархии, либо отрубать мышь для этих полей.

Старый 26.07.2010, 15:06
VARion вне форума Посмотреть профиль Отправить личное сообщение для VARion Посетить домашнюю страницу VARion Найти все сообщения от VARion
  № 4  
Ответить с цитированием
VARion

Регистрация: Apr 2008
Сообщений: 27
Сделал сейчас такой тест с NumericStepper и TextArea:
Код:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   minWidth="955" minHeight="600">
	<fx:Script>
		<![CDATA[
			protected function nStep_mouseWheelHandler(event:MouseEvent):void {
				event.preventDefault();
			}
			protected function tArea_mouseWheelHandler(event:MouseEvent):void {
				event.preventDefault();
			}
		]]>
	</fx:Script>
	<s:Scroller x="126" y="135" width="200" height="150">
		<s:VGroup width="100%">
			<s:Button label="Кнопка"/>
			<s:Label text="Метка"/>
			<s:NumericStepper id="nStep" mouseEnabled="false" 
						  mouseWheel="nStep_mouseWheelHandler(event)"/>
			<s:CheckBox label="Флажок"/>
			<s:TextArea id="tArea" width="100%" height="100" mouseEnabled="false" 
						mouseWheel="tArea_mouseWheelHandler(event)"/>
		</s:VGroup>
	</s:Scroller>
</s:Application>
Это не помогает никак. Даже если мышь не находится над данным NumericStepper, но имеет фокус - всё равно значение меняется в нём и Scroller не прокручивается.
Что я делаю не так? Можно какой-то пример, чтобы разобраться?

Старый 26.07.2010, 17:05
vasyapunk вне форума Посмотреть профиль Отправить личное сообщение для vasyapunk Найти все сообщения от vasyapunk
  № 5  
Ответить с цитированием
vasyapunk

Регистрация: Sep 2009
Сообщений: 35
я сделал так..
Создал класс:
Код AS3:
package freetools
{
	import flash.events.MouseEvent;
 
	import mx.controls.TextArea;
 
	public class UnscrollableTextArea extends TextArea
	{
	override protected function mouseWheelHandler(event:MouseEvent):void
    	{
 
    	}
	}
}

и вместо myTextArea:TextArea пишу myTextArea:UnscrollableTextArea .Работает ))


Последний раз редактировалось vasyapunk; 26.07.2010 в 17:07.
Старый 26.07.2010, 21:10
VARion вне форума Посмотреть профиль Отправить личное сообщение для VARion Посетить домашнюю страницу VARion Найти все сообщения от VARion
  № 6  
Ответить с цитированием
VARion

Регистрация: Apr 2008
Сообщений: 27
Аналогичная реализация для NumericStepper:
Код AS3:
package comps
{
	import spark.components.NumericStepper;
	import flash.events.MouseEvent;
 
	public class UnscrollNumStepper extends NumericStepper
	{
		public function UnscrollNumStepper() {
			super();
		}
		override protected function system_mouseWheelHandler(event:MouseEvent):void {
		}
	}
}
Такой способ работает, спасибо за наводку.
Может можно как-нибудь обойтись без дополнительных классов?
Отмена стандартной обработки event.preventDefault() не срабатывает у меня т.к. обработчик мой вызывается только когда мышь над NumericStepper, а значения меняются даже без этого, лишь бы курсор внутри был. Это происходит из-за того, что system_mouseWheelHandler (класс Spinner), который я перекрываю подписан на корневой SystemManager, а не на сам компонент, видимо поэтому события идут мимо.

Старый 27.07.2010, 00:16
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 7  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Можно попробовать подписаться на скрол у компонента, и в обработчике вписать event.stopPropagation

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:12.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.