Просмотр полной версии : Cкролл html.text подгружаемого из xml
mixey_lv
08.07.2005, 22:09
Как сделать скрол хтмл текстового поля?
on (mouseOver) {
myText = myText.scroll + 1;
}
с этим кодом сдвигается на 1 и все...а хотелось бы чтоб пока кнопка нажата текст двигается.
И совсем шикарно, если подскажите как сделать bar для прокрутки.
Может кто-то делал, что-то подобное?
http://onorange.com/project/scroll/
спара код класса(копи пэйст)
как юзать классы можно прочесть в хелпе.
mixey_lv
09.07.2005, 03:06
Можно в двущ словах описать принцип работы с классами?
Тот код, что справа надо в отдельний файл *.as запихнуть? А потом #include "file.as" ?
можно образец плз. С классами никогда не работал, но знаю что давно пора начать! :)
Nirth - почитай Ru_Flash за последнюю неделю -
там Волков, который Антон, отлично написал
как мы на ровном месте любим всё усложнять -
подписываюсь под это дело однозначно и привожу
элементарный ответ на элементарный вопрос -
on (rollOver) {
this.createEmptyMovieClip('obr', this.getNextHighestDepth());
this.obr.onEnterFrame = function() {
this._parent.myText.scroll++;
};
}
on (rollOut) {
delete this.obr.onEnterFrame;
}
mixey_lv
09.07.2005, 20:49
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:
где можно почитать про работу с классами?
хелп плз
mixey_lv
11.07.2005, 23:45
кто знает в чём проблема....?
может кто-нибудь попробовать на своем флэше?
а я так делаю
это код на нижней кнопке
on (press) {
interval = setInterval(function () {
txtname.scroll++;
}, 30);
}
on (release) {
clearInterval(interval);
}
mixey_lv
12.07.2005, 15:05
а как скролл бар к этому добавить?
мне кажется лучший способ всё-таки использовать какой-нибудб класс. главное найти подходящий.
это мой случай
для кнопок вверх и вниз (вверх надо ++ на -- заменить)
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;
}
};
}
на первом кадре
_global.sctop = 21;
_global.scbot = 371;
_global.onbutton = false;
может замутил
но все работает и зато свое в ручную
хотите могу выложить исходник, в принципе это флашка которая загружает внешний htm и если содержание не помещается то появляется скрол с кнопками, если помещается то они становятся невидимыми
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.