Просмотр полной версии : Как остановить движение мувика as2
pekinessik
13.12.2012, 14:15
Добрый день. Есть мувик, который движется по оси y при нажатии на кнопку. Нужно сделать, чтобы он останавливался, когда достигнет определенной точки. Вот как я делаю, но он не останавливается:
on(release) {
onEnterFrame = function () {
slider._y = slider._y + 5;
if (slider._y == 50) delete slider.onEnterFrame;
}
Спасибо.
У вас, получается, мувик slider внутри этой кнопки?
on(release)
{
onEnterFrame = function ()
{
slider._y = slider._y + 5;
trace(slider._y);
if (slider._y >= 50) delete onEnterFrame ;
}
}
Не пишите код на объектах - запутаетесь с областями видимости!
1. В вашем случае обработчик onEnterFrame назначается не на slider, а на саму кнопку.
2. В условии следует поставить "больше или равно", так как "равно" точно может и не быть.
pekinessik
13.12.2012, 14:23
slider отдельно, на главной сцене
Тогда у вас при коде, который вы привели, мувик slider не должен быть виден, и движения вообще не должно происходить при нажатии:
on(release)
{
trace(slider); //undefined
}
В данном случае, раз уж вам так хочется использовать очень устраевшую запись кода на объекте, сделайте так:
on(release)
{
var sld:MovieClip = this._parent.slider;
sld.onEnterFrame = function ()
{
sld._y = sld._y + 5;
if (sld._y >= 50) delete sld.onEnterFrame ;
}
}
Добавлено через 4 минуты
А еще правильнее сделать так: записать код в кадре:
btn.onRelease = function ()
{
slider.onEnterFrame = sldOnEnterFrame;
};
function sldOnEnterFrame ()
{
this._y += 5; //this ссылается на slider, хотя можно записать вместо этого slider
if (this._y >= 50) delete this.onEnterFrame ;
}
где btn - имя кнопки на сцене
pekinessik
13.12.2012, 14:34
это код вообще не хочет у меня работать, объект стоит на месте при нажатии на кнопку
Если вы о последнем коде, то должно быть так:
1. Код в кадре.
2. На сцене мувик с именем экземпляра slider
3. На сцене мувик или кнопка с именем экземпляра btn
См. пример
pekinessik
13.12.2012, 14:39
btn.onRelease = function ()
{
slider.onEnterFrame = sldOnEnterFrame;
};
function sldOnEnterFrame ()
{
this._y += 5; //this ссылается на slider, хотя можно записать вместо этого slider
if (this._y >= 50) delete this.onEnterFrame ;
}
Движение по оси y на 5px происходит, кода нажимаешь на кнопку 1 раз. 1 нажатие - 1 смещение на 5px
Добавлено через 2 минуты
все, заработало, БОЛЬШОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!
Ну вот и отлично.
И насчет записи кода на объектах - так не делается уже лет 7-8, и на то много причин.
pekinessik
13.12.2012, 14:56
понятно, буду знать, спасибо!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.