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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.09.2006, 01:36
afarber вне форума Посмотреть профиль Отправить личное сообщение для afarber Посетить домашнюю страницу afarber Найти все сообщения от afarber
  № 1  
Ответить с цитированием
afarber
 
Аватар для afarber

Регистрация: May 2006
Адрес: Germany
Сообщений: 74
Thumbs up Сдвинул все вовнутрь MC - кнопки и колесико перестали пахать

Привет,

был у меня простой чат из двух TextField-ов (для ввода и показа сообщений)
и двух кнопок для scrolling-a. Все работало, включая колесико на мышке -
до тех пор пока я не решил засунуть оба TextField-а и кнопки в один MovieClip
в стиле AS 2.0:

Код:
class Chat extends MovieClip {
       private var field_txt:TextField;
       private var area_txt:TextField;
       private var up_btn:Button;
       private var down_btn:Button;

       public function Chat() {
               this['mouseWheelEnabled'] = false;

               Key.addListener(this);
               Mouse.addListener(this);

               update_buttons();
       }

       public function onKeyDown() {
               if (Key.getCode() == Key.ENTER &&
                   field_txt.text != '' &&
                   Selection.getFocus() == targetPath(field_txt)) {
                       setText(getText());
                       Selection.setFocus(field_txt);
               }
       }

       public function onMouseDown() {
               if (Selection.getFocus() == targetPath(down_btn)) {
                       area_txt.scroll--;
                       update_buttons();
               } else if (Selection.getFocus() == targetPath(up_btn)) {
                       area_txt.scroll++;
                       update_buttons();
               }
       }

       public function onMouseWheel(lines:Number) {
               area_txt.scroll -= lines;
               update_buttons();
       }

       public function getText():String {
               var str:String = field_txt.text;
               field_txt.text = '';
               return str;
       }

       public function setText(str:String) {
               area_txt.scroll = area_txt.maxscroll;
               area_txt.text += newline + str;
       }

       private function update_buttons():Void {
               up_btn._visible   = (area_txt.scroll > 1 ? true : false);
               down_btn._visible = (area_txt.scroll < area_txt.maxscroll ? true : false);
       }
}
Теперь почему-то работает только клавиша ENTER, а кнопки и колесико мыши
перестали. Мне кажется я не учел какую-нибудь мелочь... Кто-нибудь видит,
в чем тут у меня дело?

Спасибо
Алекс
Вложения
Тип файла: zip Chat.zip (31.6 Кб, 48 просмотров)

Старый 24.09.2006, 20:30
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а фокус-то до кнопок не доходит, когда ты проверяешь..
имхо проще/надежней хиттестом смотреть:
Код:
public function onMouseDown() {
		
		if (_root.hitTest.call(down_btn,_root._xmouse,_root._ymouse)) {
			trace('DOWN');
			area_txt.scroll--;
			update_buttons();
		} 
		if (_root.hitTest.call(up_btn,_root._xmouse,_root._ymouse)) {
			trace('UP');
			area_txt.scroll++;
			update_buttons();
		}
	}

Старый 25.09.2006, 00:47
afarber вне форума Посмотреть профиль Отправить личное сообщение для afarber Посетить домашнюю страницу afarber Найти все сообщения от afarber
  № 3  
Ответить с цитированием
afarber
 
Аватар для afarber

Регистрация: May 2006
Адрес: Germany
Сообщений: 74
Цитата:
Сообщение от silin
а фокус-то до кнопок не доходит, когда ты проверяешь..
имхо проще/надежней хиттестом смотреть:
А-а спасибо, я не сообразил про фокус (а до TextField доходит, странно...)

Я еще немного подумал и сделал немного по другому - с onRelease и Delegate:

Код:
import mx.utils.Delegate;

class Chat extends MovieClip {
	private var field_txt:TextField;
	private var area_txt:TextField;
	private var up_btn:Button;
	private var down_btn:Button;
			
	public function Chat() {
		field_txt.maxChars = 1024;
		// will implement wheel scrolling myself
		this['mouseWheelEnabled'] = false;
		Key.addListener(this);
		Mouse.addListener(this);

		up_btn.onRelease = Delegate.create(this, scrollUp);
		down_btn.onRelease = Delegate.create(this, scrollDown);
		
		updateButtons();
	}

	public function onKeyDown() {
		if (Key.getCode() == Key.ENTER &&
		    field_txt.text != '' &&
		    Selection.getFocus() == targetPath(field_txt)) {
			setText(getText());
			Selection.setFocus(field_txt);
	  	}
	}
	
	public function scrollUp() {
		area_txt.scroll--;
		updateButtons();
	}
	
	public function scrollDown() {
		area_txt.scroll++;
		updateButtons();
	}

	public function onMouseWheel(lines:Number) {
		area_txt.scroll -= lines;
		updateButtons();
	}
	
	public function getText():String {
		var str:String = field_txt.text;
      		field_txt.text = '';
		return str;
	}
	
	public function setText(str:String) {
		area_txt.scroll = area_txt.maxscroll;
		area_txt.text += newline + str;
		updateButtons();
	}
	
	private function updateButtons():Void {
		up_btn._visible   = (area_txt.scroll > 1 ? true : false);
		down_btn._visible = (area_txt.scroll < area_txt.maxscroll ? true : false);
	}
}
Теперь кнопки вверх/вниз заработали как я хотел,
а вот мышкино колесико (onMouseWheel) все еще
не работает... Подскажите как исправить?

Спасибо
Алекс
Вложения
Тип файла: zip Chat.zip (32.4 Кб, 37 просмотров)

Старый 25.09.2006, 00:58
afarber вне форума Посмотреть профиль Отправить личное сообщение для afarber Посетить домашнюю страницу afarber Найти все сообщения от afarber
  № 4  
Ответить с цитированием
afarber
 
Аватар для afarber

Регистрация: May 2006
Адрес: Germany
Сообщений: 74
Я вот и так попробовал - с area_txt.onMouseWheel = Delegate(...),
но все равно не горит волшебный фонарь, не крутит колесико

Код:
import mx.utils.Delegate;

class Chat extends MovieClip {
	private var field_txt:TextField;
	private var area_txt:TextField;
	private var up_btn:Button;
	private var down_btn:Button;
			
	public function Chat() {
		field_txt.maxChars = 1024;
		area_txt.mouseWheelEnabled = false;

		Key.addListener(this);
		//Mouse.addListener(this);

		up_btn.onRelease = Delegate.create(this, scrollUp);
		down_btn.onRelease = Delegate.create(this, scrollDown);
		area_txt.onMouseWheel = Delegate.create(this, scrollLines);
		
		updateButtons();
	}

	public function onKeyDown() {
		if (Key.getCode() == Key.ENTER &&
		    field_txt.text != '' &&
		    Selection.getFocus() == targetPath(field_txt)) {
			setText(getText());
			Selection.setFocus(field_txt);
	  	}
	}
	
	public function scrollUp() {
		area_txt.scroll--;
		updateButtons();
	}
	
	public function scrollDown() {
		area_txt.scroll++;
		updateButtons();
	}

	public function scrollLines(lines:Number) {
		area_txt.scroll -= lines;
		updateButtons();
	}
	
	public function getText():String {
		var str:String = field_txt.text;
      		field_txt.text = '';
		return str;
	}
	
	public function setText(str:String) {
		area_txt.scroll = area_txt.maxscroll;
		area_txt.text += newline + str;
		updateButtons();
	}
	
	private function updateButtons():Void {
		up_btn._visible   = (area_txt.scroll > 1 ? true : false);
		down_btn._visible = (area_txt.scroll < area_txt.maxscroll ? true : false);
	}
}

Старый 25.09.2006, 11:29
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 5  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
попробуйте написать так, для примера:
Код:
	public function scrollUp() {
		this.area_txt.scroll--;
		updateButtons();
	}

Старый 25.09.2006, 17:01
afarber вне форума Посмотреть профиль Отправить личное сообщение для afarber Посетить домашнюю страницу afarber Найти все сообщения от afarber
  № 6  
Ответить с цитированием
afarber
 
Аватар для afarber

Регистрация: May 2006
Адрес: Germany
Сообщений: 74
Цитата:
Сообщение от Juice_Green
this.area_txt.scroll--;
Привет, нет - this ничего не изменил - см. attachment

Мне кажется this здесь не нужен так как area_txt здесь одна, и в scope
Вложения
Тип файла: zip Chat.zip (32.1 Кб, 46 просмотров)

Старый 25.09.2006, 22:08
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ничего не понял: все крутит..
к слову: для selectable текста будет крутить и без onMouseWheel (но только когда мышь над ним)

Старый 25.09.2006, 23:44
afarber вне форума Посмотреть профиль Отправить личное сообщение для afarber Посетить домашнюю страницу afarber Найти все сообщения от afarber
  № 8  
Ответить с цитированием
afarber
 
Аватар для afarber

Регистрация: May 2006
Адрес: Germany
Сообщений: 74
Sorry - я воткнул другую мышь в лаптоп и теперь
у меня тоже закрутило. Виноват!

Про selectable text понял, спасибо

Старый 26.09.2006, 10:07
pkfun вне форума Посмотреть профиль Отправить личное сообщение для pkfun Посетить домашнюю страницу pkfun Найти все сообщения от pkfun
  № 9  
Ответить с цитированием
pkfun

Регистрация: Feb 2006
Сообщений: 580
Из Help к восьмерке:
Цитата:
The default properties of a text field are as follows:

type = "dynamic"
border = false
background = false
password = false
multiline = false
html = false
embedFonts = false
selectable = true
wordWrap = false
mouseWheelEnabled = true
condenseWhite = false
restrict = null
variable = null
maxChars = null
styleSheet = undefined
tabInded = undefined

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

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

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


 


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


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