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

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

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

Регистрация: Jun 2012
Адрес: Татарстан
Сообщений: 118
По умолчанию непонятные действия event:MouseEvent

Доброго времени суток.

Не могу понять, что происходит. Имею два класса А и В, из класса А запускаю обработчик событий MouseEvent.MOUSE_WHEEL который запускает функцию wheely в классе В.

Так вот ситуация такая в классе В имеется функция в которой переменная tx=1; в самом конструкторе класса В переменной tx присваивается значение 0.

Я трейсю переменную tx из функции wheely после события MOUSE_WHEEL и она равняется 0, хотя как я предполагаю она должна быть ровна 1. Но если я запущу эту функцию в класс В например вот так вот wheely (); то tx=1.
Почему когда функция запускается после события MOUSE_WHEEL переменная tx=0;, а если из родного класса то tx=1; ?

Старый 17.10.2012, 16:19
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 2  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Код в студию, хотя бы минимальный примерчик.

Старый 18.10.2012, 12:11
razerw вне форума Посмотреть профиль Отправить личное сообщение для razerw Найти все сообщения от razerw
  № 3  
Ответить с цитированием
razerw

Регистрация: Jun 2012
Адрес: Татарстан
Сообщений: 118
первый класс
Код AS3:
package Framework.cache
{
 
 
	public class Cache extends Sprite
	{
 
 
		//вот тут в конструкторе я вызываю функцию ON
		public function Cache()
		{
			var anim:Anim = new Anim();
			anim.on();
 
		}
 
}
второй класс
Код AS3:
package Framework.cache
{
 
 
	public class Anim extends Object
	{
 
		protected static var _instanc:Anim;
 
                var tx = 0;
 
		public function Anim()
		{
                  var tx = 1;
 
		}
 
                function on()
                {
                  trace(tx);  // результат 0
                }
           }
}
но если я функцию on запущу из под конструктора класса Anim . вот пример
Код AS3:
package Framework.cache
{
 
 
	public class Anim extends Object
	{
 
		protected static var _instanc:Anim;
 
                var tx = 0;
 
		public function Anim()
		{
                  var tx = 1;
		  on()	
		}
 
                function on()
                {
                  trace(tx);  // результат 1
                }
           }
}
То переменная tx покажет результат 1.
Почему когда я запускаю функцию on из класса Сache переменная trace(tx);//результат 0 ?

Старый 18.10.2012, 12:19
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 4  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
по идее такого не может быть, лично я бы прошелся пошагово в дебаггере по коду, если выложите исходник, так и сделаю

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
во-первых функция on не имеет области видимости, в этом случае по умолчанию используется internal, что дает доступ к ней только из того же пакета, во-вторых Object не может ни посылать, ни принимать события, так как не является наследником EventDispatcher. Собственно, Object это вообще базовый класс. Не нужно писать extends Object так как это вообще смысла не имеет.
Ну и в-третьих, я тут вообще не вижу где события мыши прослушиваются. Мышь может работать только на объектах, которые являются наследниками InteractiveObject

Старый 18.10.2012, 12:31
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 6  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
И я не знаю, может вы не специально это делаете, но в конструкторе Anim вы создаёте новую локальную переменную tx и приравниваете её 1, а не переписываете аттрибут tx.

Старый 18.10.2012, 12:33
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
И я не знаю, может вы не специально это делаете, но в конструкторе Anim вы создаёте новую локальную переменную tx и приравниваете её 1, а не переписываете аттрибут tx.
Точно подмечено. Я как-то упустил этот момент )

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
точно, тоже не заметил (

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

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

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


 


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


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