Показать сообщение отдельно
Старый 25.01.2006, 23:19
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 3  
Ответить с цитированием
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
всё у тебя срабатывает.
только onSliderPress() срабатывает относительно this.slider_mc, где говорится "Delegate.create(this, dragProcess);" и this при этом равно this.slider_mc, где нет никакого dragProcess().

вообще, тут бестолку используется Delegate.

исправленный вариант:
Код:
import mx.utils.Delegate;
class Scroller extends MovieClip
{
	public var slider_mc:MovieClip;
	public var sliderPath_mc:MovieClip;
	public function Scroller()
	{
		this.slider_mc.onPress = onSliderPress;
		this.slider_mc.onRelease = onSliderRelease;
		this.slider_mc.onReleaseOutside = onSliderReleaseOutside;
	}
	public function onSliderPress()
	{
		this.startDrag(false, this._x, 0, this._x, this._parent.sliderPath_mc._height);
		this.onMouseMove = Delegate.create(this._parent, this._parent.dragProcess);
	}
	public function onSliderRelease()
	{
		this.stopDrag();
	}
	public function onSliderReleaseOutside()
	{
		onSliderRelease();
	}
	public function dragProcess()
	{
		trace("dragProcess");
	}
}
но такая реализация с точки зрения ооп АС2 всё равно плоха. для ползунка слайдера "по-правильному" надо сделать отдельный класс, где будет описано его поведение.

иначе получается, что ты пишешь в классе методы, у которых this будет относиться совсем к другому объекту. если класс не динамический и ты будешь использовать в этих методах какие-то нехарактерные для мувиклипа свойства, то компилятор будет ругаться (и будет прав).