![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
|
Как сделать скрол хтмл текстового поля?
с этим кодом сдвигается на 1 и все...а хотелось бы чтоб пока кнопка нажата текст двигается. И совсем шикарно, если подскажите как сделать bar для прокрутки. Может кто-то делал, что-то подобное? |
|
|||||
|
4AM Games
|
http://onorange.com/project/scroll/
спара код класса(копи пэйст) как юзать классы можно прочесть в хелпе.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
|
Можно в двущ словах описать принцип работы с классами?
Тот код, что справа надо в отдельний файл *.as запихнуть? А потом ? можно образец плз. С классами никогда не работал, но знаю что давно пора начать! ![]() |
|
|||||
|
Регистрация: Dec 2002
Адрес: Сочи
Сообщений: 2,819
|
Nirth - почитай Ru_Flash за последнюю неделю -
там Волков, который Антон, отлично написал как мы на ровном месте любим всё усложнять - подписываюсь под это дело однозначно и привожу элементарный ответ на элементарный вопрос - on (rollOver) { this.createEmptyMovieClip('obr', this.getNextHighestDepth()); this.obr.onEnterFrame = function() { this._parent.myText.scroll++; }; } on (rollOut) { delete this.obr.onEnterFrame; } |
|
|||||
|
Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
|
VScroll.as:
[Event("onScroll")]
[Event("onDown")]
[Event("onUp")]
class main.VScroll {
//Properties
//:Objects
//:TextField
private var textF_txt:TextField;
//::Movie Clips
private var down_mc, up_mc, scrollBar_mc, scrollTrack_mc:MovieClip;
//:Calculating
private var visibleSrc_h, totalSrc_h, scrollTrack_h, scrollBar_h, scrollBarStartPosition:Number;
private var lowerY:Numbe
private var _coof:Number = 1;
//:Events
//::Mouse Events
private var onMouseMove, onMouseWheel:Function;
//::Key events
private var onKeyDown:Function;
//Methods
//:Constructor
public function VScroll(txt:TextField, scrollBar:MovieClip, scrollTrack:MovieClip, up:MovieClip, down:MovieClip) {
this.init(txt, scrollBar, scrollTrack, up, down);
}
//:Initialization
private function init(txt:TextField, scrollBar:MovieClip, scrollTrack:MovieClip, up:MovieClip, down:MovieClip):Void {
//Link the components
this.link(txt, scrollBar, scrollTrack, up, down);
//Draw
this.draw();
this.scrollBar_mc._height = this.calculateHeights();
//Manage elements
this.__scrollBar();
this.__scrollButtons();
this.__wheel();
this.__scrollTrack();
this.__keyScroll();
//Record start position
this.scrollBarStartPosition = this.scrollBar_mc._y;
//Add this object to the Mouse listeners
Mouse.addListener(this);
Key.addListener(this);
}
//:Main
public function main(txt:TextField, scrollBar:MovieClip, scrollTrack:MovieClip, up:MovieClip, down:MovieClip):Void {
this.init(txt, scrollBar, scrollTrack, up, down);
}
//:Main Methods
//::Seting and Getting scrollCoof
public function set coof(coof:Number) {
this._coof = coof;
}
public function get coof():Number {
return this.coof;
}
//::Setting and Getting current text field for scroll
public function set scrollingText(txt:TextField):Void {
this.textF_txt = txt;
var scrollP = this.textF_txt.scroll;
this.textF_txt.scroll = 1;
this.scrollBar_mc._y = this.scrollBarStartPosition;
this.calculateHeights();
this.draw();
this.textF_txt.scroll = scrollP;
this.scrollBar_mc._y = this.scrollBarStartPosition + (scrollP * this.getPixels());
}
public function get scrollingText():TextField {
return this.textF_txt;
}
//:Private Methods
//::Calculate Heights
private function calculateHeights():Number {
this.scrollTrack_h = scrollTrack_mc._height;
this.scrollBar_h = Math.round((this.visibleSrc_h * this.scrollTrack_h) / this.totalSrc_h);
this.visibleSrc_h = this.textF_txt.bottomScroll;
this.totalSrc_h = this.textF_txt.maxscroll + this.textF_txt.bottomScroll - this.textF_txt.scroll;
this.lowerY = (this.scrollBarStartPosition + this.scrollTrack_h) - this.scrollBar_mc._height;
return this.scrollBar_h;
}
//::Calculate pixels per line
private function getPixels():Number {
return this.scrollTrack_h / this.totalSrc_h;
}
//::Draw
private function draw():Void {
this.scrollBar_mc._height = this.calculateHeights();
}
//::Linking with objects on the Stage
private function link(txt:TextField, scrollBar:MovieClip, scrollTrack:MovieClip, up:MovieClip, down:MovieClip):Void {
this.textF_txt = txt;
this.scrollBar_mc = scrollBar;
this.scrollTrack_mc = scrollTrack;
this.up_mc = up;
this.down_mc = down;
}
//:::Bar scroll
private function __scroll() {
this.textF_txt.scroll = Math.round((this.scrollBar_mc._y - this.scrollBar_mc.scroller.scrollBarStartPosition) * (this.textF_txt.maxscroll - 1) / (this.scrollTrack_h - this.scrollBar_h) + 1);
//TODO events
}
//Scrolling up and down
private function __moveBar(down:Boolean, coof:Number):Void {
var speed:Number = this.getPixels() * coof;
if (!down) {
speed *= (-1);
}
this.scrollBar_mc._y += speed;
this.__scroll();
//TODO fix this bug with this.lowerY
this.lowerY = (this.scrollBarStartPosition + this.scrollTrack_h) - this.scrollBar_mc._height;
if (this.scrollBar_mc._y < this.scrollBarStartPosition) {
this.scrollBar_mc._y = this.scrollBarStartPosition;
} else if (this.scrollBar_mc._y > this.lowerY) {
this.scrollBar_mc._y = this.lowerY;
}
}
//::Manage the elements
//:::scroll Bar
private function __scrollBar():Void {
//Pass properties to the MovieClip
this.scrollBar_mc.scroller = this;
this.scrollBar_mc.onPress = function() {
this.startDrag(false, this._x, this.scroller.scrollBarStartPosition, this._x, this.scroller.scrollBarStartPosition + (this.scroller.scrollTrack_mc._height - this._height));
this.onMouseMove = function() {
this.scroller.__scroll();
updateAfterEvent();
};
};
this.scrollBar_mc.onRelease = function() {
this.stopDrag();
delete this.onMouseMove;
};
}
//:::Scrolling Buttons
private function __scrollButtons():Void {
//passing the propetries
this.up_mc.scroller = this.down_mc.scroller = this;
//up button
this.up_mc.onPress = function() {
this.onEnterFrame = function() {
this.scroller.__moveBar(false, 1);
};
};
//down
this.down_mc.onPress = function() {
this.onEnterFrame = function() {
this.scroller.__moveBar(true, 1);
};
};
//delete
this.down_mc.onReleaseOutside = this.down_mc.onRelease = this.up_mc.onRelease = this.up_mc.onReleaseOutside = function () {
delete this.onEnterFrame;
};
}
//:::Mouse Wheel
private function __wheel():Void {
this.onMouseWheel = function(delta:Number) {
//check the direction
if (delta > 0) {
this.__moveBar(false, 1);
} else {
this.__moveBar(true, 1);
}
};
}
//:::Scroll Track
private function __scrollTrack():Void {
this.scrollTrack_mc.scroller = this;
this.scrollTrack_mc.onPress = function() {
this.onEnterFrame = function() {
if (this.scroller.scrollBar_mc._y > _root._ymouse) {
this.scroller.__moveBar(false, 1);
} else if ((this.scroller.scrollBar_mc._y + this.scroller.scrollBar_mc._height) < _root._ymouse) {
this.scroller.__moveBar(true, 1);
}
};
};
this.scrollTrack_mc.onRelease = this.scrollTrack_mc.onReleaseOutside = function () {
delete this.onEnterFrame;
};
}
//:::Key Scrolling
private function __keyScroll():Void {
this.onKeyDown = function() {
switch (Key.getCode()) {
case Key.DOWN :
this.__moveBar(true, 1);
break;
case Key.UP :
this.__moveBar(false, 1);
break;
}
};
}
}
**Error** C:\Documents and Settings\me\My Documents\! FLASH 2005 SUMMER\Useful tips\scroll class\VScroll.as: Line 4: The class 'main.VScroll' needs to be defined in a file whose relative path is 'main\VScroll.as'.
class main.VScroll {
**Error** C:\Documents and Settings\me\My Documents\! FLASH 2005 SUMMER\Useful tips\scroll class\VScroll.as: Line 14: The class 'Numbe' could not be loaded.
private var _coof:Number = 1;
Total ActionScript Errors: 2 Reported Errors:
хелп плз |
|
|||||
|
Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
|
кто знает в чём проблема....?
может кто-нибудь попробовать на своем флэше? |
|
|||||
|
Регистрация: Jan 2004
Адрес: ЮК
Сообщений: 172
|
а я так делаю
это код на нижней кнопке |
|
|||||
|
Регистрация: Nov 2003
Адрес: Ирландия
Сообщений: 179
|
а как скролл бар к этому добавить?
мне кажется лучший способ всё-таки использовать какой-нибудб класс. главное найти подходящий. |
|
|||||
|
Регистрация: Jan 2004
Адрес: ЮК
Сообщений: 172
|
это мой случай
для кнопок вверх и вниз (вверх надо ++ на -- заменить) scbutton это имя скрола on (press) {
interval = setInterval(function () {
txtname.scroll++;
pol = ((_global.scbot-_global.sctop)/(txtname.maxscroll))*(txtname.scroll)+_global.sctop;
scbutton._y = pol;
}, 30);
}
on (release) {
clearInterval(interval);
}
on (press) {
startDrag(scbutton, false, 634, 21, 634, 371);
_global.onbutton = true;
}
on (release) {
stopDrag();
_global.onbutton = false;
}
onClipEvent (enterFrame) {
this.onMouseMove = function() {
if (_global.onbutton) {
pol = int((this._parent.scbutton._y-_global.sctop)/((_global.scbot-_global.sctop)/(this._parent.txtname.maxscroll+1)));
trace(pol);
this._parent.txtname.scroll = pol;
}
};
}
может замутил но все работает и зато свое в ручную хотите могу выложить исходник, в принципе это флашка которая загружает внешний htm и если содержание не помещается то появляется скрол с кнопками, если помещается то они становятся невидимыми |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|