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

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

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

Регистрация: May 2009
Сообщений: 34
По умолчанию MOUSE_MOVE над всей рабочей областью

Сделал такой вот тестовый ролик
Цитата:
Код AS1/AS2:
package 
{ 
	   import flash.events.*;
 	   import flash.display.*; 
 
       public class Mysha extends MovieClip
	   {		
	        var kolo:MovieClip;
		   	var koor_x;
			var koor_y;
 
		    public function Mysha() 
		   {        
		            kolo = new MovieClip();
		            kolo.graphics.lineStyle(1, 0xFF0000); 
			    kolo.graphics.beginFill( 0xFF00FF ); 
                            kolo.graphics.drawCircle( koor_x, koor_y, 30); 
			    addChild(kolo);
			    addEventListener(MouseEvent.MOUSE_MOVE, move_Mysha);
		   }
		   public function move_Mysha(event:MouseEvent):void 
		   {        
			 	    kolo.x = mouseX;
				    kolo.y = mouseY;
		   }
	   }
}
Работает как и должно реагирует на перемещение курсора мыши только над кругом.
Подскажите а как сделать что бы MOUSE_MOVE работало над всей рабочей областью клипа.

Старый 25.08.2009, 15:23
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,651
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Код AS3:
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, move_Mysha);
__________________
тонкий тролль, осеянный благодатью

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

Регистрация: May 2009
Сообщений: 34
GAIKER - спасибо!

Старый 05.09.2009, 16:36
p0okm вне форума Посмотреть профиль Отправить личное сообщение для p0okm Найти все сообщения от p0okm
  № 4  
Ответить с цитированием
p0okm

Регистрация: May 2009
Сообщений: 34
В развитие темы...

Для MOUSE_MOVE у меня заработало...теперь захотел функции события мыши описать в отдельном файле и подгружать в основной для использования.

Основной файл теперь выглядит так:
Код AS3:
package  
{ 
 	   import flash.display.*; 
	   import flash.events.*;	
 
       public class zovnish_funkc extends MovieClip
	   {		  
		    private var krug:Sprite;
		    private var Sobytia_Mouse:Vnesh_Mysh; 	   
		    public function zovnish_funkc()  
		   {
			    krug = new Sprite();
		            krug.graphics.lineStyle(1, 0xFF0000); 
			    krug.graphics.beginFill( 0xFF00FF ); 
                            krug.graphics.drawCircle( 0, 0, 30); 
			    addChild(krug);		  
                            Sobytia_Mouse = new Vnesh_Mysh(this); 
		            addEventListener(Event.ENTER_FRAME, play_game);		   
		   }
		   private function play_game(event:Event):void
		  {			
                            krug.x = Sobytia_Mouse.koor_x;
                            krug.y = Sobytia_Mouse.koor_y; 
		   }       		   
  	   }
}
Файл Vnesh_Mysh с функцией отслеживания курсора мыши такой:
Код AS3:
package  
{ 
	   import flash.events.MouseEvent;
 	   import flash.display.Sprite;
 
       public class Vnesh_Mysh extends Sprite
	   {		   
		   	var koor_x = 100;
			var koor_y = 100; 
 
  		    public function Vnesh_Mysh(navigacia) 
		   {   
		    navigacia.stage.addEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
		   }
		    private function on_MouseMove (event:MouseEvent):void
		   { 
	               	koor_x = mouseX;
			koor_y = mouseY;
		   }
	   }
}
Всё работает.
Пытаюсь увеличить функциональность событий мыши добавив обработку событий MOUSE_DOWN и MOUSE_UP ...
Код AS3:
package  
{ 
	   import flash.events.MouseEvent;
 	   import flash.display.Sprite;
 
       public class Vnesh_Mysh extends Sprite
	   {		   
		   	var koor_x = 100;
			var koor_y = 100; 
 
  		    public function Vnesh_Mysh(navigacia) 
		   {   
			navigacia.stage.addEventListener(MouseEvent.MOUSE_DOWN, on_MouseDown);
			navigacia.stage.addEventListener(MouseEvent.MOUSE_UP, on_MouseUp);
		   }
		   	private function on_MouseDown(event:MouseEvent):void
		   {
			    stage.addEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
		   }		   
 
		    private function on_MouseMove (event:MouseEvent):void
		   { 
	               	koor_x = mouseX;
			koor_y = mouseY;
		   }
		    private function on_MouseUp(event:MouseEvent):void
		   {
			   stage.removeEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
		   }
	   }
}
а в ответ неподвижный круг, а при нажатии и отпускании ЛКМ сообщение:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at proba::Vnesh_Mysh/on_MouseDown()
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at proba::Vnesh_Mysh/on_MouseUp()

Никак не пойму в чём дело, помогите разобраться.


Последний раз редактировалось p0okm; 05.09.2009 в 16:38.
Старый 05.09.2009, 16:51
veisss вне форума Посмотреть профиль Отправить личное сообщение для veisss Найти все сообщения от veisss
  № 5  
Ответить с цитированием
veisss
[+1 16.08.10]

Регистрация: Jun 2009
Сообщений: 93
наверное
Код AS3:
private function on_MouseDown(event:MouseEvent):void
		   {
			    stage.addEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
		   }	
 
 private function on_MouseUp(event:MouseEvent):void
		   {
			   stage.removeEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
		   }
stage и есть тот null

Старый 05.09.2009, 17:17
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 6  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
navigacia.stage и stage в Vnesh_Mysh - это ни одно и тоже. вы Vnesh_Mysh не добавляете на сцену, следовательно stage у него равен null
__________________
я могу стать всем, если только захочу

Старый 05.09.2009, 18:45
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,779
p0okm, вас самого французский с нижегородским в коде не смущает?

Старый 05.09.2009, 19:41
p0okm вне форума Посмотреть профиль Отправить личное сообщение для p0okm Найти все сообщения от p0okm
  № 8  
Ответить с цитированием
p0okm

Регистрация: May 2009
Сообщений: 34
Честно говоря ничего не могу понять из Ваших ответов.

Старый 05.09.2009, 23:15
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 9  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Цитата:
Сообщение от p0okm Посмотреть сообщение
Честно говоря ничего не могу понять из Ваших ответов.
Код AS3:
navigacia.stage.addEventListener(MouseEvent.MOUSE_DOWN, on_MouseDown);
...
stage.addEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
чувствуете разницу?
navigacia - добавлена на сцену, и поэтому у нее есть stage
экземпляр вашего класса не добавлен на сцену: stage нет.

и вообще нужно подписывать на событие ADDED_TO_STAGE, и только после него добавлять слушателей к stage
__________________
я могу стать всем, если только захочу

Старый 05.09.2009, 23:42
p0okm вне форума Посмотреть профиль Отправить личное сообщение для p0okm Найти все сообщения от p0okm
  № 10  
Ответить с цитированием
p0okm

Регистрация: May 2009
Сообщений: 34
Цитата:
Сообщение от Felicast Посмотреть сообщение
Код AS3:
navigacia.stage.addEventListener(MouseEvent.MOUSE_DOWN, on_MouseDown);
...
stage.addEventListener(MouseEvent.MOUSE_MOVE, on_MouseMove);
чувствуете разницу?
navigacia - добавлена на сцену, и поэтому у нее есть stage
экземпляр вашего класса не добавлен на сцену: stage нет.
...
Перед тем как задать вопрос я это уже проверил и получил сообщение
1120: Access of undefined property navigacia.
а как решить эту проблему не знаю

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

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

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


 


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


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