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

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

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

Регистрация: Jun 2002
Адрес: неустойчивое
Сообщений: 30
По умолчанию components 2/binding

Вот есть класс. Наследую от MC, определяю свойство [Bindable]х, делаю таскабельность, связываю с NumericStepper - из NumericStepper инфа идёт (клипчик ездит по х), обратно нет. Вопрос: что ещё нужно сделать для нормального двустороннего связывания?


Код:
class BigLaughableBlueBall extends MovieClip
{
	[Bindable]
	function set x (n:Number):Void {_x = n;}
	function get x ():Number {return _x;}
	
	private var dragged:Boolean;
	
	function onPress ()
	{
		dragged = true;	
	}
	function onRelease ()
	{
		dragged = false;	
	}
	function onReleaseOutside ()
	{
		onRelease ();	
	}
	function onMouseMove ()
	{
		if (dragged)
		{
			x = _parent._xmouse;
			_y = _parent._ymouse;
			updateAfterEvent ();
		}
	}
}

Старый 29.09.2005, 09:31
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 2  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
определить что у тебя байндинг 2ways.
у тебя в закладке компонентинспектора, где ты определяешь байндинг есть direction - там должно стоять in / out.

но скорее всего у тебя просто байндинг не знает к какому евенту присоедениться у твоего класса

Код:
import mx.events.EventDispatcher;

class BigLaughableBlueBall extends MovieClip {
	// EventDispatcher implementation
	public var dispatchEvent:Function;
	public var addEventListener:Function;
	public var removeEventListener:Function;
	
	public function BigLaughableBlueBall () {
		EventDispatcher.initialize (this);
	}
	
	[Bindable]
	[ChangeEvent("newposition")]
	public function set x (n : Number) : Void {
		_x = n;
	}
	public function get x () : Number 	{
		return _x;
	}
	
	private var dragged : Boolean;
	public function onPress () {
		dragged = true;
	}
	public function onRelease () {
		dragged = false;
	}
	
	public function onReleaseOutside () {
		onRelease ();
	}
	
	public function onMouseMove () {
		if (dragged) {
			if (x != _parent._xmouse) {
				x = _parent._xmouse;
				
				dispatchEvent ( {type: 'newposition'} );
			} // end if
			
			_y = _parent._ymouse;
		} // end if
	}
}


Последний раз редактировалось 7thsky™; 29.09.2005 в 09:44.
Старый 29.09.2005, 11:08
Корнхолио вне форума Посмотреть профиль Отправить личное сообщение для Корнхолио Найти все сообщения от Корнхолио
  № 3  
Ответить с цитированием
Корнхолио
 
Аватар для Корнхолио

Регистрация: Jun 2002
Адрес: неустойчивое
Сообщений: 30
Спасибо, всё работает

Ага, то есть сам он не догадывается в результате действий с панелькой binding, что нужно придумать "событие"... + нигде явно не указана - ни в NumericStepper, ни в UIComponent и т.п. - явная имплементация EventDispatcher Ох, мутно всё...

Старый 29.09.2005, 11:43
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 4  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
все компоненты наследуют от UIObject, там все это и реализованно

Если ты хочешь пользоваться binding, сам binding присоединяется к связующим компонентам через event'ы в классе NumericStepper то же наверно указанно какое свойство [bindable] и какой event.

Вообще все что ты реализуешь через панель Component Inspector, после компилиции преобразуется в что-то подобное

Код:
import mx.data.binding.*;
// create data binding
var src:EndPoint = new EndPoint ();
src.component = your_ClassInstance;
src.property = 'x';
src.event = 'newposition';

var dest:EndPoint = new EndPoint ();
dest.component = your_NumericStepperInstance;
dest.property = 'value';
dest.event = '';

// save reference
var b:Binding = new Binding (src, dest, a, true);


Последний раз редактировалось 7thsky™; 29.09.2005 в 11:47.
Старый 29.09.2005, 11:46
Mokus вне форума Посмотреть профиль Отправить личное сообщение для Mokus Найти все сообщения от Mokus
  № 5  
Ответить с цитированием
Mokus

Регистрация: Jun 2005
Сообщений: 107
Отправить сообщение для Mokus с помощью ICQ
Цитата:
Сообщение от Корнхолио
нигде явно не указана - ни в NumericStepper, ни в UIComponent и т.п. - явная имплементация EventDispatcher Ох, мутно всё...
явная имплементация EventDispatcher в UIObject

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

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

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


 


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


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