![]() |
|
||||||||||
|
|||||
|
[+6 15.11.12]
Регистрация: Oct 2012
Сообщений: 63
|
Всем доброго вечера. У меня такой вопрос: как сделать во флэше полосу прокрутки. Скажем у меня есть приложение размером 800 на 600 пх, но у меня есть контент размером 800 на 1000 пх как мне сделать так чтобы если размер контента больше размера приложения то появлялась полоса прокрутки? Буду очень признателен.
|
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Решения "в лоб":
1. Кладем весь контент в спрайт и прогаем поведение скроллбара в приложении. 2. Ищем в гугле уже готовые скроллбары, разбираемся с тем, как они работают, выбираем подходящий и используем его.
__________________
hauts.ru |
|
|||||
|
[+4 06.05.14]
|
Ничего искать не надо, у меня отличный скроллер берем
На данный момент учитывает ВСЕ пожелания - mouseWheel тоже )))package com.in4core.navigation { import com.greensock.TweenMax; import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import flash.display.Sprite; import flash.errors.IllegalOperationError; import flash.events.MouseEvent; import flash.geom.Rectangle; import flash.text.TextField; /** * ... * @author in4core * Display or Text Object Scroller * use addScroll methods to define Scroller * Version 1.0 */ public final class UIScrollBar { //-----------------DisplayObjectInit-----------// /*objects*/ private var _scroll:Sprite; private var _maskHeight:int; private var _content:DisplayObjectContainer; private var _rect:Rectangle; /*coords*/ private var _startYScroll:int; private var _startYContent:int; private var _wayOfScroll:int; //-----------------TextFieldInit-----------// /*objects*/ private var _tscroll:Sprite; private var _tf:TextField; private var _trect:Rectangle; /*coords*/ private var _wayOfTextScroll:int; private var _delta:int; ///////////////////////////////////////////////////////////////////// //!4 //! 4 PUBLIC //! 4 ///////////////////////////////////////////////////////////////////// public function addScrollObject( scroll:Sprite,maskHeight:int,content:DisplayObjectContainer,way:int ):void { this._scroll = scroll; this._maskHeight = maskHeight; this._content = content; this._wayOfScroll = way; this._startYScroll = _scroll.y; this._startYContent = _content.y; this._rect = new Rectangle(_scroll.x, _scroll.y, 0, _wayOfScroll); /*events*/ if (!_scroll.stage) throw new IllegalOperationError ( ' Before add Scroll - add you Scroll on DisplayList by addChild '); _scroll.addEventListener(MouseEvent.MOUSE_DOWN, dragStart); _scroll.stage.addEventListener(MouseEvent.MOUSE_UP, dragStop); //trace( 'UIScrollBar-Display : INIT' ); } public function addScrollText( tf:TextField , scroll:Sprite , way:int ):void { this._tscroll = scroll; this._tf = tf; this._wayOfTextScroll = way; this._trect = new Rectangle(_tscroll.x, _tscroll.y, 0, _wayOfTextScroll); /*events*/ if (!_tscroll.stage) throw new IllegalOperationError ( ' Before add Scroll - add you Scroll on DisplayList by addChild '); _tscroll.addEventListener(MouseEvent.MOUSE_DOWN , tdragStart); _tscroll.stage.addEventListener(MouseEvent.MOUSE_UP , tdragStop); //trace( 'UIScrollBar-Text : INIT' ); } public function destroy():void { if (_scroll != null ) { _scroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE, updatePosition); _scroll.removeEventListener(MouseEvent.MOUSE_DOWN, dragStart); _scroll.stage.removeEventListener(MouseEvent.MOUSE_UP, dragStop); _scroll.stage.removeEventListener(MouseEvent.MOUSE_WHEEL , onWheel); } if (_tscroll != null ) { _tscroll.removeEventListener(MouseEvent.MOUSE_DOWN , tdragStart); _tscroll.stage.removeEventListener(MouseEvent.MOUSE_UP , tdragStop); _tscroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE ,updateTextPosition); } TweenMax.killTweensOf(_content); } ///////////////////////////////////////////////////////////////////// //!4 //! 4 PRIVATE //! 4 ///////////////////////////////////////////////////////////////////// private function tdragStart(e:MouseEvent):void { _tscroll.startDrag(false, _trect); _tscroll.stage.addEventListener(MouseEvent.MOUSE_MOVE ,updateTextPosition); } private function tdragStop(e:MouseEvent):void { _tscroll.stopDrag(); _tscroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE ,updateTextPosition); } private function dragStart(e:MouseEvent):void { _scroll.startDrag(false, _rect); _scroll.stage.addEventListener(MouseEvent.MOUSE_MOVE, updatePosition); } private function dragStop(e:MouseEvent):void { _scroll.stopDrag(); _scroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE, updatePosition); } public function updatePosition (e:MouseEvent):void { if (_maskHeight < _content.height) { var yy:int = _startYContent - ( (_content.height - _maskHeight) / _wayOfScroll ) * ( _scroll.y - _startYScroll ); TweenMax.to(_content , 1 , { y:yy } ); } } private function updateTextPosition(e:MouseEvent):void { _tf.scrollV = Math.round(((_tscroll.y - _trect.y) / _wayOfTextScroll ) * _tf.maxScrollV); } public function trueScroll():Boolean { if (_maskHeight < _content.height) return true; return false; } public function useWheel(delta:int = 4):void { _delta = delta; _scroll.stage.addEventListener(MouseEvent.MOUSE_WHEEL , onWheel); } private function onWheel(e:MouseEvent):void { _scroll.y = _scroll.y - e.delta * _delta; if (_scroll.y < _startYScroll) _scroll.y = _startYScroll; else if (_scroll.y > _wayOfScroll + _startYScroll) _scroll.y = _wayOfScroll + _startYScroll; updatePosition(null); } } }
__________________
Марк Tween |
|
|||||
|
.
|
Честно говоря, я боюсь смотреть остальное из пакета com.in4core
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Последний написанный мной скроллер вообще ничего не знал о скроллируемом объекте, что позволяло использовать его в любой ситуации — для текста, для таргета под маской, для таргета со скроллРектом.. Удобно, но требует дополнительного кода вне скроллера. Зато в этом то и свобода))) ООП, чтоб его..
__________________
Reality.getBounds(this); |
|
|||||
|
[+4 06.05.14]
|
Не боись, мне просто лень почему то было аддед ту стейдж делать раньше, ясное дело мой косяк, глуп был зелен))) Так что, это стоит заменить, в блоге я об этом указал
__________________
Марк Tween |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Мне не так страшно получить IllegalOperationError, как прочитать текст этой ошибки: "Before add Scroll - add you Scroll".....
__________________
Reality.getBounds(this); |
|
|||||
|
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|