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

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

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

Регистрация: Feb 2012
Сообщений: 205
По умолчанию Проблема с курсором

Есть вот это:
Код AS1/AS2:
 
this.onRollOver = function(){ 
    Mouse.hide(); // скрываем стандартный курсор
    var p = _root.attachMovie("pric","pric"+_root.getNextHighestDepth(),_root.getNextHighestDepth());
onMouseMove = function() { // ф-ция, которая будет вызываться при каждом движении мыши
    p._x = _xmouse; // задаём координаты нашего крусора (такие же, как и у стандартного)
    p._y = _ymouse;
    updateAfterEvent(); 
}
}
this.onRollOut = function(){ // когда убираем курсор
    p.removeMovieClip();
    Mouse.show(); // показываем стандартный указатель
 
}
не срабатывает p.removeMovieClip();
хотя trace(p); выдает undefined/ изображение курсора как бы залипает при наведении на объект и так и остаётся, а курсор продолжает двигаться
вот так:
Вложение 27628

Старый 22.02.2012, 00:57
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Каша.
1. Что такое this здесь? Где размещен код?
2. Ошибка. В this.onRollOut не может быть видна p, потому как она объявляется внутри this.onRollOver как локальная переменная - ссылка на приаттаченный мувик.
3. Функцию объявлять внутри другой - плохо. Если уж на то пошло, то лучше всего назначать обработчику ссылку на поименованную функцию.
__________________
Идите первым!

Старый 22.02.2012, 01:18
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 3  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
угу, ошибку понимаю, но где тогда объект загружать - не пойму.
this - объект массива, на который в данный момент наведён курсор.
А размещение функции onMouseMove не принципиально.. как раз она очень хорошо работает.
В данный момент выглядит так:
Код AS1/AS2:
function move_func() {
	varDif = this._xscale/100;
	this._x += this.dX+_root.dX*varDif;
	if (this._x<=-1000) {
		this.removeMovieClip();
	}
	if (this._x>=1000) {
		this.removeMovieClip();
	}
 
 
	this.onRollOver = function(){ // при наведении на mc
           var p = _root.attachMovie("pric","pric"+_root.getNextHighestDepth(),_root.getNextHighestDepth());
	Mouse.hide(); // скрываем стандартный курсор
	onMouseMove = function() { // ф-ция, которая будет вызываться при каждом движении мыши
           p._x = _xmouse; // задаём координаты нашего крусора (такие же, как и у стандартного)
           p._y = _ymouse;
           updateAfterEvent();
                                     }
           }
 
           this.onRollOut = function(){ // когда убираем курсор
           p.removeMovieClip();
	Mouse.show(); // показываем стандартный указатель
           updateAfterEvent();
           }
 
function snow_func() {
	l =6;
           var r:String =""+ Int(Math.random()*l+1 );
  	varTarget = _root.attachMovie("snow_mc"+r ,"snow"+_root.getNextHighestDepth()+"_mc"+r,      _root.getNextHighestDepth());
	varTarget.onEnterFrame = _root.move_func;		
           }
 
setInterval(snow_func, 700);
Думаю, что в snow_func() нужно вызывать отдельную функцию для обработки событий мыши.. но что-то совсем не соображаю.


Последний раз редактировалось Маруська; 22.02.2012 в 09:32.
Старый 22.02.2012, 05:23
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 4  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Объявите переменную p вне функции.

Старый 22.02.2012, 21:39
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 5  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
мне нужно p подгружать на слой выше, чем varTarget = _root.attachMovie("snow_mc"+r ,"snow"+_root.getNextHighestDepth()+"_mc"+r, _root.getNextHighestDepth());,поэтому нужно его подгружать после срабатывания этой части кода.

сделала так:
Код AS1/AS2:
function snow_func() {
	l =6;
           var r:String =""+ Int(Math.random()*l+1 );
  	varTarget = _root.attachMovie("snow_mc"+r ,"snow"+_root.getNextHighestDepth()+"_mc"+r, _root.getNextHighestDepth());
	varTarget.onMouseMove = _root.mouse_func;
	varTarget.onEnterFrame = _root.move_func;
} 
 
function mouse_func() {
	var p = _root.attachMovie("pric","pric"+_root.getNextHighestDepth(),_root.getNextHighestDepth());
	if(this.onRollOver){ // при наведении на mc
           Mouse.hide(); // скрываем стандартный курсор
	onMouseMove = function() { // ф-ция, которая будет вызываться при каждом движении мыши
           p._x = _xmouse; // задаём координаты нашего крусора (такие же, как и у стандартного)
           p._y = _ymouse;
           updateAfterEvent();	}
						}
	if(this.onRollOut){ // когда убираем курсор
    p.removeMovieClip();
	Mouse.show(); // показываем стандартный указатель
    updateAfterEvent();
						}
	}
Но теперь при движении мышью - подвисает и вообще ничего не делает
Есть какой-нибудь обработчик не на каждое движение мыши, а например на событие для мыши (комплексное)?


Последний раз редактировалось Маруська; 22.02.2012 в 23:07.
Старый 22.02.2012, 23:10
alex_195 вне форума Посмотреть профиль Отправить личное сообщение для alex_195 Найти все сообщения от alex_195
  № 6  
Ответить с цитированием
alex_195

Регистрация: Apr 2009
Сообщений: 104
Попробуйте посмотреть в сторону
Код AS1/AS2:
mouseListener.onMouseMove
+ проверка
Код AS1/AS2:
if ("то, на что наводите".hitTest(_xmouse, _ymouse))

Старый 22.02.2012, 23:36
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 7  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
а как listner назначить объект? мне нужно, чтоб он отслеживал движения на varTarget
Код AS1/AS2:
function snow_func() {
	l =6;
           var r:String =""+ Int(Math.random()*l+1 );
  	varTarget = _root.attachMovie("snow_mc"+r ,"snow"+_root.getNextHighestDepth()+"_mc"+r, _root.getNextHighestDepth());
           //вот тут назначить
	mouseListener.onMouseMove = _root.mouse_func;
	varTarget.onEnterFrame = _root.move_func;
}

Старый 22.02.2012, 23:56
alex_195 вне форума Посмотреть профиль Отправить личное сообщение для alex_195 Найти все сообщения от alex_195
  № 8  
Ответить с цитированием
alex_195

Регистрация: Apr 2009
Сообщений: 104
Маруська, в программе используется одна очень полезная кнопочка - F1 называется. Заносишь в поиск
Код AS1/AS2:
mouseListener.onMouseMove
и там выдаёт
Код AS1/AS2:
var mouseListener:Object = new Object();

Старый 23.02.2012, 00:12
Маруська вне форума Посмотреть профиль Отправить личное сообщение для Маруська Найти все сообщения от Маруська
  № 9  
Ответить с цитированием
Маруська

Регистрация: Feb 2012
Сообщений: 205
ха, я так в первую очередь сделала - ноль реакции

Старый 23.02.2012, 00:19
alex_195 вне форума Посмотреть профиль Отправить личное сообщение для alex_195 Найти все сообщения от alex_195
  № 10  
Ответить с цитированием
alex_195

Регистрация: Apr 2009
Сообщений: 104
а ты в какой версии flash'a работаешь?

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

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

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


 


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


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