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

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

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

Регистрация: Aug 2009
Сообщений: 99
По умолчанию MC: ссылка на себя. Правильно-ли?

Привет!

В мувике создаю ссылку на самого себя:
Код AS1/AS2:
var thisLink:MovieClip = this;
для того, чтоб потом без проблем и путанины обращаться к нему в его функциях, присваивать твины и переменные, и т.д.

В целом, приём пока работает.

Но решил спросить у людей, имеющих опыт побогаче моего:
  1. Правильно-ли я делаю, что создаю и использую такую ссылку?
  2. Какие возможные баги и скрытые камни данного способа?
  3. Правильно-ли я делаю, что объявляю её тип как MovieClip? может правильнее Object? или вообще не объявлять?
    Тоесть есть-ли вариант более правильного объявления?
  4. Есть-ли вариант (приём) вообще более правильный, чем создание ссылки на самого себя (если баги у данного способа всё-таки есть)?

Что более правильнее:
Код AS1/AS2:
var thisLink:MovieClip = this;
Код AS1/AS2:
var thisLink = this;
Код AS1/AS2:
thisLink = this;
?

Спасибо!


Последний раз редактировалось mj_nooker; 30.08.2010 в 21:44.
Старый 30.08.2010, 22:49
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вы все делаете нормально.
А тип данных, конечно же, лучше объявлять.
__________________
Идите первым!

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

Регистрация: Feb 2008
Сообщений: 560
Для чего в самом себе делать ссылку на самого себя?

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

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Тож интересно.. nj_nooler вам для чего?

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Иногда бывает надо.
Например, бывают функции, в которых если употребить this, то ссылка будет не на текущий объект, где написан код.
А обратиться нужно.

Добавлено через 10 минут
Вот пример:
Код AS1/AS2:
import mx.transitions.Tween;
var NoN:Object = mx.transitions.easing.None.easeNone;
 
var curr:MovieClip = this ;
 
xTween(my_mc, my_mc._x + 100, 3);
 
function xTween (mc:MovieClip, fin:Number, t:Number) 
{
	var mcOn:Tween = new Tween(mc, '_x', NoN, mc._x, fin, t, true);
	mcOn.onMotionChanged = function()
	{
	//допустим, в этой функции нужно ссылаться на текущий таймлайн, чтобы например, обратиться
	// к каким-то другим объектамм на нем - переменным, мувикам		
 
	//тут, внутри обработчика события, this будет ссылаться на объект Tween, 
	//например, можно выводить текущее время твина:
	trace(this.time);
	//а вот как сослаться на текущий таймлан?
 
	//один способ - задали в начале ссылку на текущий таймлайн и ее используем
	trace(curr);
 
	//второй  способ:
	trace(this.obj._parent);
	// - используя внутреннее свойство Tween obj - ссылку на объект, над которым tween выполняется	
	//но это не очевидно - обращаемся к текущему таймлайну как к родителю мувика, 
	//который там находится, который двигаем. Кривовато. Потому 1-й способ лучше.
	};
}
__________________
Идите первым!


Последний раз редактировалось mooncar; 31.08.2010 в 00:10.
Старый 31.08.2010, 00:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Я так понял, что автор на классах пишет. Если это так, то способ не верный. Нужно вызывать метод в верной области видимости с помощью делегата.

upd: иначе непонятно зачем это надо.


Последний раз редактировалось udaaff; 31.08.2010 в 00:12.
Старый 31.08.2010, 00:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
1. Нет;
2. Сжирает память, нечитабельный код;
3. В данном случае это не принципиально ввиду п. 1;
4. Delegate.

Старый 31.08.2010, 02:12
Что такое хорошо? вне форума Посмотреть профиль Отправить личное сообщение для Что такое хорошо? Найти все сообщения от Что такое хорошо?
  № 8  
Ответить с цитированием
Что такое хорошо?
 
Аватар для Что такое хорошо?

Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
Код AS1/AS2:
trace(targetPath(this));

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

Регистрация: Aug 2009
Сообщений: 99
mooncar, спасибо за точный и втемный ответ

Цитата:
Сообщение от udaaff Посмотреть сообщение
Я так понял, что автор на классах пишет.
нет

Цитата:
Сообщение от etc Посмотреть сообщение
2. Сжирает память, нечитабельный код;
а почему сжирает? смотрел на расход памяти и на загрузку проца - ничего не заметно.
остальные пункты ответа проигнорены ввиду их несоответствия действительности

Цитата:
Сообщение от Что такое хорошо? Посмотреть сообщение
Код AS1/AS2:
trace(targetPath(this));
ээ.. а что это? как с помошью этого обратиться к мувику родителю твина в функции, вложенной в функцию onMotionFinished?

Цитата:
Сообщение от rainbowrussia Посмотреть сообщение
Для чего в самом себе делать ссылку на самого себя?
прежде чем отвечать - относитесь внимательно и с уважением к мыслям писаки ))

всем ответившим спасибо!

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

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от mj_nooker Посмотреть сообщение
остальные пункты ответа проигнорены ввиду их несоответствия действительности
Что значит «не соответствует действительности»? Вы считаете, что делаете правильно? ОК, тогда зачем была создана тема?

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

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

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


 


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


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