PDA

Просмотр полной версии : Вертикальная прокрутка текста (клипа)


battrack
31.10.2008, 18:43
Необходимо сделать чтобы при нажатии на кнопку клип (в данном случае текст) прокручивался по вертикали. Грубо говоря, по событию нажатия на кнопку нужно двигать клип по _y

Делаю следующим образом:

button.onPress=function () {
while (myClip._y<500) { // двигаем до координаты y=500
myClip._y++
}
}

выявляются две проблемы:
1. Клип двигается слишком быстро. Мгновенно. Конечно можно было бы это исправить заменив приращение координаты не на 1, а например на 0,001, но дело в том что менее чем на 0,5 координату изменять нельзя, иначе код не работает. Об этом и в документации говорится. Так как быть? Может в нутри этого цикла как-то поставить задержку? Подскажите.

2. onPress - это событие нажатия. Оно произошло и все. А мне нужно чтобы событие происходило по "УДЕРЖАНИИ" кнопки, или в крайнем случае при наведении. Т.е. прокрутка текста осущесвляется при нажатии и удержании кнопки. Какой обработчик использовать?

Заранее спасибо!

Division
31.10.2008, 18:55
Можно двигать в onEnterFrame. Например, при нажатии мыши (onMouseDown + hitTest я бы делал) ставить какой-то флаг в true. в onEnterFrame смотреть на этот флаг и если он true, двигать клип. onMouseUp - ставить флаг в false.

scarbo
31.10.2008, 21:15
Можно двигать в onEnterFrame. Например, при нажатии мыши (onMouseDown + hitTest я бы делал) ставить какой-то флаг в true. в onEnterFrame смотреть на этот флаг и если он true, двигать клип. onMouseUp - ставить флаг в false.
Ага и onEnterFrame все время крутиться,пока не закрыли флешку,очень полезно для процессора.:rtfm:

Wolsh
01.11.2008, 00:31
1. Клип будет двигаться мгновенно, даже если "разрешат" ставить 0.000000000006 и Вы этим воспользуетесь. Почему? Потому что выполнение кода происходит ДО перерисовки графики кадра. Т.е. сначала отрабатывает Ваш цикл while, в конце которого значение y становится больше/меньше исходного, потом перерисовывается кадр, и клип отрисовывается в новом месте. Мгновенно!
2. onPress - событие нажатие, а onRelease - событие отпускания. Что сложного?

scroll_down.onPress = function(){
this.onEnterFrame = function(){
content_mc._y+=SCROLL_STEP;
}
}
scroll_down.onRelease = function(){
delete this.onEnterFrame;
}
}как-то так.

Division
01.11.2008, 02:07
Ага и onEnterFrame все время крутиться,пока не закрыли флешку
Я бы не придавал этому особого значения

scarbo
01.11.2008, 11:17
Я бы не придавал этому особого значения
А зря,так в проекте несколько таких EnterFramов бесконечных и флешке крышка

Division
01.11.2008, 14:36
scarbo, можно пример где несколько enterFrame ложат флешку? Желательно не отходить от темы этого топика и не считать в enterFrame 200 корней квадрытных (: