![]() |
|
||||||||||
|
|||||
|
[+1 18.06.09]
Регистрация: Jun 2009
Сообщений: 52
|
Здравствуйте, господа Флешеры!
безуспешно перерыв весь гугл и флешер.ру я решаюсь задать вопрос. Не могу реализовать скроллинг объекта под маской! Пожалуйста, помогите! Кому не жалко, дайте пример или исходник горизонтального скролла. Нужен только бегунок неизменяемого размера, без стрелочек!! Поможите!!!! Спасибки! |
|
|||||
|
Такой вот класс есть у меня =)
Использование: var newSpriteWithScroll:DOWithScroll = DOWithScroll(ширинаСкроллбара, высотаСкроллбара, спрайт) package { import flash.display.DisplayObject; import flash.display.LineScaleMode; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.geom.Point; import flash.geom.Rectangle; import flash.utils.Timer; /** * ... * @author Sergey Dmitriev */ public class DOWithScroll extends Sprite { private var _source:Sprite; private var _width:Number; private var _height:Number; private var _scrollBackground:Sprite; private var _scrollButton:Sprite; private var _scroll:Sprite; private var _k:Number; private var _timer:Timer; public function DOWithScroll(width:Number, height:Number, source:Sprite) { _width = width; _height = height; _source = source; if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point _k = _height / _source.height; _scroll = new Sprite(); _scrollBackground = new Sprite(); _scrollButton = new Sprite(); _scroll.addChild(_scrollBackground); _scroll.addChild(_scrollButton); _scroll.x = _source.width; addChild(_scroll); addChild(_source); _scrollBackground.addEventListener( MouseEvent.MOUSE_DOWN, downBg); _scrollBackground.addEventListener( MouseEvent.MOUSE_UP, upBg ); _scrollBackground.addEventListener( MouseEvent.MOUSE_OUT, outBg ); _scrollButton.addEventListener( MouseEvent.MOUSE_DOWN, downButton ); _scrollButton.addEventListener( MouseEvent.MOUSE_UP, upButton ); _scrollButton.addEventListener( MouseEvent.MOUSE_OVER, outBg ); stage.addEventListener( MouseEvent.MOUSE_UP, upButton ); stage.addEventListener( MouseEvent.MOUSE_UP, upBg ); stage.addEventListener( MouseEvent.MOUSE_WHEEL, scroll ); addEventListener( Event.ENTER_FRAME, redrawScrollRect ); redraw(); } private function outBg(e:MouseEvent):void { stopTimer(); } private function downBg(e:MouseEvent):void { moveScrollButton(); _timer = new Timer(200, 100); _timer.addEventListener(TimerEvent.TIMER, timerUpdate); _timer.start(); } private function upBg(e:MouseEvent):void { if (_timer) { stopTimer(); } } private function timerUpdate(e:TimerEvent):void { moveScrollButton(); } private function stopTimer():void { _timer.removeEventListener(TimerEvent.TIMER, timerUpdate); _timer.stop(); } private function moveScrollButton():void { if (_scrollBackground.mouseY < _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y - _scrollButton.height >= 0) _scrollButton.y -= _scrollButton.height; else if (_scrollBackground.mouseY < _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y - _scrollButton.height < 0) _scrollButton.y = 0; else if (_scrollBackground.mouseY > _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y + _scrollButton.height <= _height - _scrollButton.height) _scrollButton.y += _scrollButton.height; else if (_scrollBackground.mouseY > _scrollButton.y + _scrollButton.height / 2 && _scrollButton.y + _scrollButton.height > _height - _scrollButton.height) _scrollButton.y = _height - _scrollButton.height; } private function scroll(e:MouseEvent):void { if (_scrollButton.y - e.delta * 2 < 0) _scrollButton.y = 0; else if (_scrollButton.y - e.delta * 2 > _height - _scrollButton.height) _scrollButton.y = _height - _scrollButton.height; else _scrollButton.y -= e.delta * 2; } private function redrawScrollRect(e:Event):void { if (!_source.scrollRect) _source.scrollRect = new Rectangle(0, 0, _source.width, _height); var rect:Rectangle = _source.scrollRect; rect.y += (_scrollButton.y / _k - rect.y) / 3; _source.scrollRect = rect; } private function upButton(e:MouseEvent):void { _scrollButton.stopDrag(); } private function downButton(e:MouseEvent):void { _scrollButton.startDrag(false, new Rectangle(0, 0, 0, _height - _scrollButton.height)); } private function redraw():void { _scrollButton.graphics.clear(); //_scrollButton.graphics.lineStyle(0, 0x000000, 1.0, true, LineScaleMode.NONE); _scrollButton.graphics.beginFill(0x333333, 1.0); _scrollButton.graphics.drawRect(0, 0, _width, _height * _k); _scrollBackground.graphics.clear(); //_scrollBackground.graphics.lineStyle(0, 0x999999, 1.0, true, LineScaleMode.NONE); _scrollBackground.graphics.beginFill(0xCCCCCC, 1.0); _scrollBackground.graphics.drawRect(0, 0, _width, _height); } } }
__________________
O God! The Aftermath. |
|
|||||
|
[+1 18.06.09]
Регистрация: Jun 2009
Сообщений: 52
|
Спасибо! Попробую сейчас... А с исходником нет варианта, для наглядности?
|
|
|||||
|
Нет, с исходником нету.
__________________
O God! The Aftermath. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
Посмотрите, может подойдет.
|
|
|||||
|
[+1 18.06.09]
Регистрация: Jun 2009
Сообщений: 52
|
Да это все не то ((( Это ВЕРТИКАЛЬНЫЙ скролл, а мне нужен ГОРИЗОНТАЛЬНЫЙ!
тем более не готовый компонент а из прямоугольничка 20х5 сделать скролл, без стрелок, без растягивания этого самого прямоугольничка |
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
просто надо Y заменить на X, а HEIGHT на WIDTH, и будет счастье.
А если что-то сильно надо, то есть Вакансии
__________________
Я просто добрый шутник. |
|
|||||
|
Регистрация: Jun 2006
Сообщений: 400
|
AlinaSilaeva компонент можно сделать горизонтальным. Там параметр специальный есть. А вообще не совсем ясно что вам надо.
Делайте тогда этот прямоугольничек. На событие мыши делайте startDrag/stopDrag. На событие mouseMove по этому прямоугольнику управляйте его перемещением. Если горизонтальный скролл нужен, то фиксируете this.y = const |
|
|||||
|
Ну попробуйте хоть это
http://murmadillo.tut.su/m/sv-gor-sl.zip
__________________
Гоночка |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|