Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.09.2008, 01:46
Csar вне форума Посмотреть профиль Отправить личное сообщение для Csar Найти все сообщения от Csar
  № 1  
Ответить с цитированием
Csar

Регистрация: Aug 2008
Сообщений: 22
У меня есть ролик, который представляет собой прокрутку. Но есть проблема: В самый первый раз (единожды) при нажатии (уже при нажатии, т.е. еще даже не отпустил) мышкой на ползунок прокрутки - прокрутка смещается вверх примерно на 0,4-0,6. Происходит это только 1 раз (пырвый тык на ползунок) за компиляцию. Причем сместившись от первого тыка ползунок так и остается на том же месте (не на том, где должен). Подскажите где я ошибаюсь? Вот ссылка на *.fla и *.swf
http://***********/8071990

На всякий случай кидаю 2 скрипта:


Код:
stop();
var h = 0;
var sm = 1;
container.content._x = 0;
container.content._y = 0;
container.polosa._x = container.content._x+container.l._width;
container.polosa._y = container.content._height+h;
container.polosa._width = container.bound_box._width-container.l._width-container.r._width;
container.bound_box._x = container.content._x;
container.bound_box._y = container.content._y;
container.bound_box._height = container.content._height+container.polosa._height+h;
container.l._x = container.content._x;
container.l._y = container.polosa._y;
container.l._height = container.polosa._height;
container.r._x = container.bound_box._width-container.r._width-1;
container.r._y = container.polosa._y;
container.r._height = container.polosa._height;
container.scroller._x = container.content._x+container.scroller._width/2+container.l._width;
container.scroller._y = container.polosa._y+container.scroller._height/2;
container.mask._x = container.bound_box._x;
container.mask._y = container.bound_box._y;
container.mask._width = container.bound_box._width;
container.mask._height = container.content._height;

scroll_wheel_speed=5;
scrolling = true;
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {

container.updateScrollbar ();

scr_width = container.scroller._width;
scr_diff = container.polosa._x - container.scroller._x +container.scroller._width/2;

scr_limit = container.mask._width-container.l._width-container.r._width+1;

if (delta>0) {

if ((1-scr_diff+scr_width)<scr_limit && (scr_limit-1+scr_diff-scr_width)>=scroll_wheel_speed){ 
container.scroller._x = container.scroller._x + scroll_wheel_speed;
scrolling = true;
}
else {
container.scroller._x = container.scroller._x + scr_limit-1+scr_diff-scr_width;
scrolling = true;
}

}
else {
if (scr_diff<0 && (container.scroller._x -container.polosa._x - container.scroller._width/2)>=scroll_wheel_speed){ 
container.scroller._x = container.scroller._x - scroll_wheel_speed; 
scrolling = true;
} 
else {
container.scroller._x = container.scroller._x - (container.scroller._x -container.polosa._x - container.scroller._width/2);
scrolling = true;
}
}
container.updateScrollbar ();
}
Mouse.addListener(mouseListener);
И второй
Код:
onClipEvent (load) {
diff_x = polosa._width-scroller._width;
bounds = polosa.getBounds(this);
left = bounds.xMin+(scroller._width/2);
right = bounds.xMax-(scroller._width/2);
function updateScrollbar () {
if (scroller._x < left) {
scroller._x = left;
}
if (scroller._x > right) {
scroller._x = right-0.4;
}
content._x = -(((scroller._x-left)/diff_x)*(content._width-bound_box._width));
}
friction = 0.90;
}

onClipEvent (mouseDown) {
if (scroller.hitTest(_root._xmouse, _root._ymouse)) {
//scroller._y +=0.6;
//trace(scroller._y);
startDrag ("scroller", false, left, scroller._y, right, scroller._y );
scrolling = true;
}
}

onClipEvent (mouseUp) {
stopDrag ();
scrolling = false;
}

onClipEvent (enterFrame) {
if (scrolling) {
updateScrollbar();
newx = scroller._x;
xspeed = (newx-oldx)*0.50;
oldx = newx;
done = false;
} else if (!done) {
oldxpos = scroller._x;
newxpos = oldxpos+xspeed;
if (xspeed<-0.2 || xspeed>0.2) {
xspeed *= friction;
} else {
xspeed = 0;
done = true;
}
if (newxpos<left) {
xspeed = -1*xspeed*friction;
newxpos = left;
}
if (newxpos>right) {
xspeed = -1*xspeed*friction;
newxpos = right;
}
scroller._x = newxpos;
updateScrollbar();
}
}


Последний раз редактировалось iNils; 11.09.2008 в 02:18.
Старый 11.09.2008, 02:19
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
1. Для оформления своего кода надо использовать теги [code][/code].
2. Надо использовать кнопку , а не создавать несколько сообщений подряд.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 11.09.2008, 03:26
Csar вне форума Посмотреть профиль Отправить личное сообщение для Csar Найти все сообщения от Csar
  № 3  
Ответить с цитированием
Csar

Регистрация: Aug 2008
Сообщений: 22
прошу прощения, я не знаю тегов никаких.

Старый 11.09.2008, 03:35
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 4  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
Можно вопрос вы это сами сделали или у кого то взяли, если сами, то не пишите код на мувиках, старайтесь все в кадре писать.
Вот вам ссылка на исправленный файл http://narod.ru/disk/2529064000/my.rar.html Старайтесь создавать мувики с размерами без десятых, если выстраиваете их таким образом.

Старый 11.09.2008, 12:57
Csar вне форума Посмотреть профиль Отправить личное сообщение для Csar Найти все сообщения от Csar
  № 5  
Ответить с цитированием
Csar

Регистрация: Aug 2008
Сообщений: 22
Что-то сам написал, что-то нашел на форумах. Я новичек в flash.
По поводу исправленной версии прокрутки:
1) а что именно изменилось? Что-то я не могу найти различия. Но, баг исправлен. AlexDesinger, что вы исправили? Только размер чего-то? Или код?

Вопрос. Вообще без разницы (для программы) где писать код - на мувиках или на кадре? Т.е. программа также будет работать если я перенесу код с мувика на кадр? И почему вы оворите, что на роликах не надо нничего писать?


Последний раз редактировалось Csar; 11.09.2008 в 13:37.
Старый 11.09.2008, 15:11
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 6  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
Просто немного изменил размеры ваших мувиков сделал их без десятых.Чтобы делилось ровно и скролл пришлось сделать 6 pix если нужно имеено 5, то посмотрите что у вас там еще прибаляется к высоте и сделайте размер тоже не четным, чтоб делилось без остатка.
Для программы я думаю безразницы где вы напишите код, работать будет одинаково, лишь бы правильно, а вот если вы хотите чтоб вам подсказывали на форумах, то желательно все писать в фрэймах, потому что иначе трудно разобрать где-что.

Старый 11.09.2008, 19:30
Csar вне форума Посмотреть профиль Отправить личное сообщение для Csar Найти все сообщения от Csar
  № 7  
Ответить с цитированием
Csar

Регистрация: Aug 2008
Сообщений: 22
спасибо большое.

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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