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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 23.05.2008, 06:28
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 11  
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
Я вот думаю если привязать к маске хиттест какой-нить чтобы твой скрипт для колеса работал ТОЛЬКО когда мыш в поле маски, тогда вероятно это решит проблему на сайтах с общим скроллингом
Или так:
Если
X мыши больше Х маски
Y мыши больше Y маски
Х мыши Меньше X маски + WIDTH маски
Y мыши Меньше Y маски + WIDTH маски
тогда только запускать скрипт колеса
По идее колесо будет скроллировать поле ТОЛЬКО тогда когда мыш наведена на скроллируемый контент


Последний раз редактировалось DJ_Baton; 23.05.2008 в 08:37.
Старый 23.05.2008, 12:16
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 12  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от DJ_Baton Посмотреть сообщение
Я вот думаю если привязать к маске хиттест какой-нить чтобы твой скрипт для колеса работал ТОЛЬКО когда мыш в поле маски, тогда вероятно это решит проблему на сайтах с общим
Привет!
Зачем хиттест! Есть у onMouseWheel второй параметр. Его и пользуем.
Смотрим вариант:
Вложения
Тип файла: rar macscroller_template_by_wolsh3.rar (95.7 Кб, 242 просмотров)

Старый 23.05.2008, 12:23
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 13  
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Жень Шень : Прикольно! Я, честно сказать, даже не знал)))) В хелпе про какойто стринг говорится, а делаешь параметр стрингом - ругается. Потому и не разобрался))) Спасибо!
Только я бы еще скроллер включил, а то както странно когда мышь над скроллером а колесиком не двигается))
Код:
// прокрутка колёсиком мыши
pimp.onMouseWheel = function(delta, target2_mc) {
    if (target2_mc==target | target2_mc==pimp | 
           target2_mc==top | target2_mc==down | 
           target2_mc==track_top | target2_mc==track_down) {
        this._y -= delta;
        scrolling();
    }
};
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 23.05.2008 в 13:01.
Старый 23.05.2008, 17:27
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 14  
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
заменил старый скрипт в своей флэшке на новый колесо совсем перестало работать... и что есть target2_mc я не понял де он.... у меня скроллируемый мувик называется txt, соответственно вот скрипт:
Код:
// объявляем маску и скроллируемый клип
var target2_mc:MovieClip;
var maska:MovieClip = mask_mc;
var target:MovieClip = txt;
//устанавливаем размер и координаты "окошка". Эти параметры по желанию.
maska._width = 590;
maska._height = 275;
maska._x = 310;
maska._y = 427;
// совмещаем маску и таргет
target._x = maska._x;
target._y = maska._y;
target.setMask(maska);
// совмещаем скроллер и маску
scroller_mc._x = maska._x+maska._width;
scroller_mc._y = maska._y;
// cтроим-ресайзим скроллер
var track:MovieClip = scroller_mc.track_mc;
var pimp:MovieClip = scroller_mc.pimp_mc;
var top:MovieClip = scroller_mc.topbut_mc;
var down:MovieClip = scroller_mc.downbut_mc;
track._height = maska._height;
top._y = top._x=down._x=0;
down._y = maska._height-down._height;
pimp._x = 0;
// для бегунка, частично уходящего в кнопки (как на MacOS), указываем глубину
var macradius:Number = 4;
//
// константы
var sh:Number = track._height;
// высота скроллера (маски)
var dh:Number = down._height;
// высота кнопки Вниз
var th:Number = top._height;
// высота кнопки Вверх
var ph:Number = pimp._height;
// высота бегунка
var pc:Number = pimp._height/2;
// центр бегунка
var pimpway:Number = sh-dh-th-ph+macradius*2;
// расстояние, на которое может смещаться бегунок 
var targetway:Number = target._height-sh;
// расстояние, на которое должен смещаться таргет
var pimp_start:Number = th-macradius;
// лимит смещения бегунка вверх
var pimp_stop:Number = th+pimpway-macradius;
// лимит смещения бегунка вниз
pimp._y = pimp_start;
// функция зависимости положения таргета от положения движка
function scrolling() {
	pimp._y = pimp._y<pimp_start ? pimp_start : pimp._y>pimp_stop ? pimp_stop : pimp._y;
	track_down._y = pimp._y+ph;
	track_down._height = sh-track_down._y-dh;
	track_top._height = pimp._y-th;
	var newtarget_y:Number = maska._y-(pimp._y-pimp_start)*(targetway/pimpway);
	pimp.onEnterFrame = function() {
		target._y = Math.ceil(target._y+(newtarget_y-target._y)/4);
		target._y == newtarget_y ? delete pimp.onEnterFrame : null;
	};
}
// драг бегунка
pimp.onPress = function() {
	this.startDrag(false, 0, pimp_start, 0, pimp_stop);
	this.onMouseMove = scrolling;
};
pimp.onRelease = pimp.onReleaseOutside=function () {
	this.stopDrag();
	delete this.onMouseMove;
	scrolling();
};
// кнопки
top.onPress = function() {
	this.onEnterFrame = function() {
		pimp._y--;
		scrolling();
	};
};
top.onRelease = top.onReleaseOutside=function () {
	delete this.onEnterFrame;
};
down.onPress = function() {
	this.onEnterFrame = function() {
		pimp._y++;
		scrolling();
	};
};
down.onRelease = down.onReleaseOutside=function () {
	delete this.onEnterFrame;
};
// прокрутка колёсиком мыши
pimp.onMouseWheel = function(delta, target2_mc) {
	if (target2_mc==txt) {
		this._y -= delta*5;
		scrolling();
	}
};
Mouse.addListener(pimp);
// создаем прозрачные кнопки трека (кнопки быстрой перемотки)
var track_top:MovieClip = scroller_mc.createEmptyMovieClip("tt", 100);
with (track_top) {
	moveTo(0, 0);
	beginFill(0x00ff00, 0);
	lineTo(0, sh);
	lineTo(track._width, sh);
	lineTo(track._width, 0);
	endFill();
}
var track_down:MovieClip = track_top.duplicateMovieClip("td", 110);
// размещаем кнопки трека
track_top._x = track_down._x=0;
track_top._y = th;
track_top._height = 0;
track_down._y = th+ph;
track_down._height = sh-th-dh-ph;
// нажатия на трек
track_top.onPress = function() {
	// замедляющееся движение центра бегунка к мыши
	this.onEnterFrame = function() {
		// ускорение зависит от делителя
		pimp._y = Math.floor(pimp._y-(pimp._y+pc-scroller_mc._ymouse)/10);
		scrolling();
	};
};
track_top.onRelease = track_top.onReleaseOutside=function () {
	delete this.onEnterFrame;
};
track_down.onPress = function() {
	// замедляющееся движение центра бегунка к мыши
	this.onEnterFrame = function() {
		// ускорение зависит от делителя
		pimp._y = Math.ceil(pimp._y+(scroller_mc._ymouse-pimp._y-pc)/10);
		scrolling();
	};
};
track_down.onRelease = track_down.onReleaseOutside=function () {
	delete this.onEnterFrame;
};
// НЕ отменяем Руку на кнопках и бегунке
pimp.useHandCursor = true;
top.useHandCursor = true;
down.useHandCursor = true;
track_down.useHandCursor = true;
track_top.useHandCursor = true;


Последний раз редактировалось DJ_Baton; 23.05.2008 в 17:33.
Старый 23.05.2008, 18:22
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 15  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Я, честно сказать, даже не знал)))) В хелпе про какойто стринг говорится, а делаешь параметр стрингом - ругается. Потому и не разобрался...
Я в свое время тоже на этом споткнулся. Но, на форуме помогли разобраться с "липовым" стрингом. Смотреть тут

Старый 23.05.2008, 19:27
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 16  
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
эм... ну подскажите чего после замены старого скрипта на ваш перестал скролл мыши работать вообще ? (( я только target_mc на txt заменил и всё

Старый 23.05.2008, 20:02
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 17  
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вот поэтому и не работает. Чем Вас таргет не устроил?))))) Во всем коде таргет, а здесь Вам какой-то тхт понадобился)

По поводу target2_mc. Это ссылка на клип, находящийся под курсором. Т.е. это не какой-то конкретный физический клип, а только ссылка, подобно тому как можно написать
Код:
my_mc = _root.createEmptyMovieClip("ferrari_mc", 10)
Имя созданного клипа (Instance Name) будет ferrari_mc, но он будет доступен отсюда по короткой ссылке my_mc, даже если Вы создадите его в тридевятом королевстве и по имени ferrari_mc достучатся не сможете. Так вот здесь target2_mc - такая же ссылка, переменная, значение которой заполняет сам объект Маус и отдает ее листенеру в эвентОбжекте вместе с дельтой (смещением колесика). Интересно, можно ли построить на этом аналог хиттеста для мыши)))?
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 23.05.2008 в 20:26.
Старый 23.05.2008, 20:03
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 18  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от DJ_Baton Посмотреть сообщение
эм... ну подскажите чего после замены старого скрипта на ваш перестал скролл мыши работать вообще ? (( я только target_mc на txt заменил и всё
В топике столько примеров... В каком была замена. Может стоит файл подцепить?
Цитата:
а здесь Вам какой-то тхт понадобился
И то правда...


Последний раз редактировалось Жень Шень; 23.05.2008 в 20:06.
Старый 23.05.2008, 20:04
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 19  
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
Апдейт - разобрался, нашёл кривости, он скроллирует только если мыша наведена на контент а не на область скроллирования, т.е. на примере с картинкой работает только если наведено на картинку, а если область скроллирования больше то ничерта не пашет

Старый 23.05.2008, 20:22
DJ_Baton вне форума Посмотреть профиль Отправить личное сообщение для DJ_Baton Найти все сообщения от DJ_Baton
  № 20  
DJ_Baton

Регистрация: Aug 2003
Сообщений: 204
та не, всё пофиксил, нашёл ряд багов...
в общем чтоб решить проблему с наведением на контент поверх всего контента кинул маску с альфой = 0... кстати попробуйте поскроллировать текст, узнаете много нового ))) или лучше даже несколько текстовых элементов маленьких
проблема с передачей фокуса сайту так и не решилась, фкус тупо глушится и колесо всё равно работает только в рамках флэшки
В идеале должно быть прописано чтобы скрипт работал ТОЛЬКО если курсок по X и Y в рамках маски, по другому он тупо привязывает колесо к флэшине а сам сайт стоит на месте при прокрутке колесом

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

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

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


 


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


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