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

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

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

Регистрация: Apr 2013
Сообщений: 89
По умолчанию this это

месяца 3 изучаю as3 но до сих пор не могу понять для чего нужно ключевое слово this.

Ув. форумчане подскажите пожалуйста, что это и с чем его едят.

Видео-урок человека, в котором он в основном файле (точке входа) прописывает private var const _this:*;
Далее в конструкторе главного файла прописывает _this = this;
Так вот, аналогично, в классе, каком либо, где описывается поведение объекта.
И далее все изменения производятся через даный _this.

Я вынес из всего этого, что this - эта область, в которой находится объект.

Но господа, так же в коллине муке, встречал пару-тройку абзацев, где this - уточнение свойства при передачи параметра в конструктор класса.

В общем запутался, расскажите поподробнее пожалуйста.


Заранее спасибо огромнейшее.

Старый 03.12.2013, 03:02
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
this - ссылка на самого себя внутри себя. Есть у любого экземпляра любого класса.

Это как "Я" у каждого человека :о)

Цитата:
Видео-урок человека, в котором он в основном файле (точке входа) прописывает private var const _this:*;
Ужас.


PS А вот у Халка есть геттер обертка на this - Халк. И он через нее все делает. Халк.ломать(), Халк.злой(). Хотя это не читайте, я сам запутался. Халк скорее статический.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Apr 2013
Сообщений: 89
Цитата:
Сообщение от GBee Посмотреть сообщение
this - ссылка на самого себя внутри себя. Есть у любого экземпляра любого класса.

Это как "Я" у каждого человека :о)


Ужас.


PS А вот у Халка есть геттер обертка на this - Халк. И он через нее все делает. Халк.ломать(), Халк.злой(). Хотя это не читайте, я сам запутался. Халк скорее статический.
http://www.youtube.com/watch?v=AN4T9...44s2cdb9vXQNzA

Вот

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Вот
Больше не смотрите.

"Instead of dozens books" - тоже спорный лозунг с такой подачей материала.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 03.12.2013, 03:36
vlbuto вне форума Посмотреть профиль Отправить личное сообщение для vlbuto Найти все сообщения от vlbuto
  № 5  
Ответить с цитированием
vlbuto

Регистрация: Apr 2013
Сообщений: 89
Цитата:
Сообщение от GBee Посмотреть сообщение
Больше не смотрите.

"Instead of dozens books" - тоже спорный лозунг с такой подачей материала.
А вы можете посоветовать, что можно смотреть/читать, кроме Mook'a?

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Больше не смотрите.
Да это вообще пц! Такое ощущение , что это какой то прикол или вредительство! vlbuto - в данном видео говорится в таком вот ключе : цикл и массив - это одно и тоже, просто свойства разные - вот такой вот каламбур. Именно в таком ключе идет подача материала там.
__________________
Марк Tween

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

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
this это явное указание на себя. Зачем нужно:
1. Представьте что у вас объект со свойствами x и y есть, а вы хотите добавить к нему метод setCoords для того чтобы ставить обе координаты сразу.
т.е. свойства у вас такие
Код AS3:
public var x:int;
public var y:int;
 
//и наш метод на оба сразу
public function setCoords(x:int, y:int):void {
	this.x = x;
	this.y = y;
}
В данном примере внутри функции есть по сути два x, это тот который параметр и тот который ваше свойство. Параметр функции обладает более высоким приоритетом, поэтому под именем x будет тот который параметр. И тут мы говорим компилятору, присвой это значение вон туда, в x который в объекте у нас. Как ему это сказать? Вот и говорим this.x = x.

Вариант два это когда нужно передать объект себя куда нибудь, не приведу сейчас простенького примера.

В итоге this это не какая то такая сложная штука и не так уж и часто применяемая. Он ещё нужен самому интерпретатору чтобы понимать для какого объекта вызван метод.

Код AS3:
public var x:int;
public var y:int;
 
public function traceCoords():void {
	trace(x,y);
}
Вот в данном примере trace(x,y); по сути автоматически заменится на
Код AS3:
trace(this.x,this.y);
Т.е. компилятор сам понимает что вы имели ввиду, вот и получается что явно указывать надо когда ему не понятно(см первый пример). Вот как-то так. Это не все применения this но они уже выходят за рамки вопроса и ответа. Также советую почитать где нибудь что такое super.
__________________
:)

Старый 03.12.2013, 13:08
Fogflasher вне форума Посмотреть профиль Отправить личное сообщение для Fogflasher Найти все сообщения от Fogflasher
  № 8  
Ответить с цитированием
Fogflasher

Регистрация: Mar 2013
Сообщений: 290
Правильно ли я понимаю...

Например, есть класс Spaceship, на базе которого создано 5 экземпляров: spaceship1, spaceship2... spaceship5.

И если в коде этого класса компиллятор попадает на строку this.y = 50; то все эти экземпляры будут перемещены на уровень y = 50 пикселов.

Но чтобы какой-то конкретный экземпляр поместить например на уровень y = 30, то из самого класса Spaceship посредством this этого сделать нельзя (?).

Но легко сделать из класса Main, посредством кода: spaceship3.y = 30.

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

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Цитата:
И если в коде этого класса компиллятор попадает на строку this.y = 50; то все эти экземпляры будут перемещены на уровень y = 50 пикселов.
Будет перемещен только экземпляр, который выполнил этот код.

Цитата:
Но чтобы какой-то конкретный экземпляр поместить например на уровень y = 30, то из самого класса Spaceship посредством this этого сделать нельзя (?).
Можно, вот так где угодно напишете, и сработает
Код AS3:
this.y = 30;

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

Регистрация: Mar 2013
Сообщений: 290
Цитата:
Будет перемещен только экземпляр, который выполнил этот код.
Нет, стоп, мы же в класе Spaceship написали this.y = 50, а он тотален для всех своих экземпляров.
Как "экземпляр может выполнить код", если это грубо говоря только ссылка на объект.
Экземпляр может выполнить код разве что так: spaceship3.x = 50; ну об этом я и написал.
Но эта строка будет находится в коде другого класса, отличного от Spaceship.
А чтобы засунуть в класс Spaceship ссылку на spaceship3, то это уже... какие-то рекурсивные извраты, разве нет? : )
Насколько я понимаю, у экземпляра нет своего кода, который бы отличался от кода класса этого экземпляра.

Цитата:
Можно, вот так где угодно напишете, и сработает
Хм, ну так ведь и все остальные экземпляры улетят на y = 30, а мы хотим только spaceship3, например.

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

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

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


 


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


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