![]() |
|
||||||||||
|
|||||
|
FD Team
|
Есть такой класс
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 = Delegate.create(this.slider_mc, onSliderPress);
this.slider_mc.onRelease = Delegate.create(this.slider_mc, onSliderRelease);
this.slider_mc.onReleaseOutside = Delegate.create(this.slider_mc, onSliderReleaseOutside);
}
public function onSliderPress() {
this.startDrag(false, this._x, 0, this._x , this._parent.sliderPath_mc._height);
this.onMouseMove = Delegate.create(this, dragProcess);
}
public function onSliderRelease() {
this.stopDrag();
}
public function onSliderReleaseOutside() {
onSliderRelease();
}
public function dragProcess() {
trace("dragProcess");
}
}
Почему мой пример не работает? |
|
|||||
|
don't panic!
Регистрация: 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");
}
}
иначе получается, что ты пишешь в классе методы, у которых this будет относиться совсем к другому объекту. если класс не динамический и ты будешь использовать в этих методах какие-то нехарактерные для мувиклипа свойства, то компилятор будет ругаться (и будет прав). |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Метод вызывается для области видимости, указанной первым параметром
|
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
если записать ссылку на метод в объект
и вызвать метод по этой ссылке из объекта, то this на этот объект и будет указывать :) по-моему вполне логично. при этом не важно, где изначально находился метод... к примеру, можно сделать так: Цитата:
Последний раз редактировалось Nox Noctis; 26.01.2006 в 11:55. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|