Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как просматривать кадры мувика слайдером (http://www.flasher.ru/forum/showthread.php?t=145583)

anonimus 13.10.2010 12:00

как просматривать кадры мувика слайдером
 
Всем доброго времени суток. Помогите пожалуйста, у меня есть мувик с некоторым количеством кадров, для него создан слайдер(вручную). существует код
Код AS3:

stop();
function sliderMove(event:Event):void
{
        slider.thumb.x = slider.slider_line.x + slider.slider_line.width / ((event.target.totalFrames-1) / (event.target.currentFrame - 1));
        trace(event.target.currentFrame - 1);
}
blokus.addEventListener(Event.ENTER_FRAME, sliderMove);
//
blokus.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
blokus.stop();
var direction:int = 1;
function enterFrameHandler(e:Event):void
{
        var target:MovieClip = e.currentTarget as MovieClip;
        if((target.currentFrame == 1 && direction == -1)||(target.currentFrame == target.totalFrames && direction == 1))
                direction *= -1;
        target.gotoAndStop(target.currentFrame + direction);
}

Прблема такая: когда ползунок на слайдере достигает конца "слайдера" он там застревает и недвигается нитуда нисюда. Подскажите что не так, или подскажите правильный код или ссылку на какой нибудь пример.

PS: AS3 знаю очень плохо , но немного понимаю, Если непонятно выразил свой вопрос пишите напишу конкретней..

gloomyBrain 13.10.2010 12:41

Слайдер должен существовать отдельно, без привязки к чему либо еще. От него надо только 2 вещи:
1) диспатчит flash.events.Event.CHANGE при перетаскивании
2) иметь геттер для свойства position, показывающий текущий сдвиг слайдера.

Поподробнее о слайдере:
Код AS3:

public class Slider extends Sprite {
 
private var _position:Number = 0;
 
... // конструктор класса
 
// обработчик движения мыши
// на MOUSE_MOVE подписываемся после MOUSE_DOWN
// и отписываемся после MOUSE_UP
private function onMouseMove(event:MouseEvent) {
 
// меняем позицию ползунка и свойство _position
polzunok.x = ...
_position = polzunok.x / maxX;
 
// уведомляем тех, кому интересно, что слайдер подвинули
super.dispatchEvent(new Event(Event.CHANGE));
 
}
 
// свойство position только для чтения
public function get position():Number {
return _position;
}
 
}

Далее в коде программы подписываемся на Event.CHANGE от слайдера, в обработчике события смотрим на slider.position и в зависимости от него переходим на нужный кадр


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

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